gpt4 book ai didi

sql - SQL 自动时间戳中是否可能发生冲突?

转载 作者:行者123 更新时间:2023-11-29 12:42:26 25 4
gpt4 key购买 nike

我有一个 PostgreSQL 表,其中有一个字段是自动时间戳字段 (SET DEFAULT CURRENT_TIMESTAMP)。该字段是微秒精度。是否可能有具有相同时间戳的行,或者 PostgreSQL 的并发控制是否对对象更新强加了串行排序?

最佳答案

是的。即使您使用 clock_timestamp() 每次都会获得一个新的时间戳,即使您使用的系统具有微秒计时器精度,也可能会发生冲突。

微秒计时器精度并不意味着微秒计时器准确性分辨率。时钟在“跳跃”中前进。在某些系统上,这些跳跃是亚微秒 (μs) 并且对于以微秒计时器分辨率工作的应用程序(如 PostgreSQL)是不可见的。但在某些系统上,它们可能是数十或数百毫秒 (ms)!

在引入 GetSystemTimePreciseAsFileTime 之前的 MS Windows 上在 Windows 8 和 Server 2012(及其被 PostgreSQL 9.5 采用)中,时间限制为 1 毫秒 (ms) 分辨率,通常为 15 毫秒分辨率!因此,极有可能在一个系统上多次调用时获得相同的时间值,该系统除了大部分处于空闲状态之外。

在现代 Linux 或带有最新 PostgreSQL 的现代 Windows 上,由于亚毫秒计时器分辨率,冲突的可能性要小得多。但它们绝对仍有可能。如果您选择使用时间戳作为唯一键,您的应用必须能够在遇到唯一违规时重试。

关于sql - SQL 自动时间戳中是否可能发生冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43242171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com