Задать вопрос

Почему время в mysql опережает на пару секунд?

Есть vps с ubuntu, там развернута mysql, и время в самой базе данных отличается от utc на 1-2 секунды.

mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| +00:00             | +00:00              |
+--------------------+---------------------+
1 row in set (0.00 sec)

mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2026-01-06 17:15:56 |
+---------------------+
1 row in set (0.00 sec)


на момент когда я вызывал SELECT NOW(); время по utc было 54 секунды, а мне вывело 56 - сверял с другими сайтами + moment.utc().toDate()

Кто-нибудь может хотя бы подсказать куда копать ? Ладно бы проблема была в смещении таймзоны, и проблема была бы в часах, но тут дело в секундах

даже если предположить что проблема в
Date.now() % 1000 // - остатки мс, то где ещё секунда вторая потерялась ?
  • Вопрос задан
  • 413 просмотров
Подписаться 3 Средний 11 комментариев
Помогут разобраться в теме Все курсы
  • Академия Eduson
    FullStack-разработчик: тариф PRO
    14 месяцев
    Далее
  • Академия Eduson
    Python-разработчик
    9 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Решения вопроса 2
@Akina
Сетевой и системный админ, SQL-программист.
MySQL не имеет источников точного времени иных, нежели операционная система.

Начните с простого - перезапустите MySQL, а затем сверьте время в OS и в MySQL. Убеждён, что они совпадут. Затем - мониторьте разницу времени по мнению OS и MySQL в течение достаточно длительного периода времени. Если MySQL не обращается к OS за текущим временем, а считает время самостоятельно, то при достаточно длительном мониторинге это станет заметно. Но всё это обязательно в рамках одного инстанса OS и напрямую, а не издалека, по сети, да через прокладки в виде каких-нибудь веб- или скриптовых серверов.

Конечно, это можно узнать и просто анализом исходного кода, но это неспортивно...

К слову - SYSDATE() гарантированно получает аппаратное время системы.

смотрел в открую консоль одновременно и на секунды на этом сайте, и как только секунда изменилась ( получается в самом начале ) я нажал на enter что бы выполнить команду, и разница была в 2 секунды

Ага... а то, что от изменения времени в системе и до отображения его на экране могло и больше, чем 2 секунды, пройти - вы не учитываете, да?

Вообще MySQL не имеет средств прямого обращения к функциям OS или запуску внешних программ. Но если очень хочется - есть готовые библиотеки с такими возможностями, или можно свою состряпать. И тогда увидеть, есть ли разница на самом деле, и если да, то какова она.

В самом крайнем случае - сбрось результат функции в файл, и сравни значение в файле и время создания файла. Правда, емнип, точность времен операций с файлами в ФС - как раз 2 секунды и есть.
Ответ написан
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
смотрел в открую консоль одновременно и на секунды на этом сайте, и как только секунда изменилась ( получается в самом начале ) я нажал на enter что бы выполнить команду, и разница была в 2 секунды

Вот вам и ответ: время на сайте не совпадает с вашим локальным временем. У БД нет другого источника времени, кроме системного времени. Плюс надо учитывать разные задержки — время вашей реакции, время нажатия на клавишу, время обработки команды, время выполнения инструкции и ещё куча других.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Daemon23RUS
@Daemon23RUS
Проблема наблюдателя во времени (проблема времени) - ?
Я полагаю, что корень проблемы кроется в методе измерения.
Опишите подробнее КАК вы измеряете. Как вы определили текущий момент времени. Где (какой комп/сервер) вы определили текущий момент времени.
Если не найдется какой либо банальщины, то решение этого вопроса потянет на нобелевку (от классической физики до квантовой механики и теории гравитации) ;))))
Ответ написан
Комментировать
Steel_Balls
@Steel_Balls
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы