Может ли now() вернуть одинаковое время в разных транзакциях?

Вобщем может ли now() вернуть одинаковое время в разных транзакциях? (часы обратно переводить никто не будет) введите сюда описание изображения


Ответы (1 шт):

Автор решения: S.H.

Да, может.

Разные тразакции могут быть запущены на разных ядрах процесора. Время для всех ядер процессора идёт одинаково. Так что, при такой ситуации, две транзакции начнутся однновременно.

Другой вопрос - вероятность такой ситуации. Конечно, она маловероятна. Но, когда кто то хочет искусственно вызывать коллизию - он может быть весьма настройчив.

Если Вам нужен ключ, независимый от времени - лучше использовать GUID.

Если нужно "выстроить транзакции в очередь по порядку" - можно использовать время, а потом положиться на стабильность мироздания :-) Но тогда может быть неопределенный результат - как награда за многопоточность

→ Ссылка