簡體   English   中英

PostgreSQL:CURRENT_TIMESTAMP和CLOCK_TIMESTAMP解決方案:Windows與Linux?

[英]PostgreSQL: CURRENT_TIMESTAMP AND CLOCK_TIMESTAMP Resolution: Windows vs. Linux?

所以我對PostgreSQL計時功能有這個有趣的問題。

這是情況。 我們有一個預生產服務器(Linux),用於存放開發中的應用程序。 如果該服務器正在進行一些更重要的工作,我還將對該數據庫(Windows)的本地副本進行一些工作。 最近,我遇到一個問題,即我開始在本地數據庫副本的日志記錄表上遇到主鍵沖突。 我以為這是不可能的,因為我使用CLOCK_TIMESTAMP(當前系統時間)作為主鍵。 另外,我在預生產服務器上進行了測試,並且工作正常。 所以我做了一些調查。 我最終發現,如果我在服務器上運行“ SELECT CLOCK_TIMESTAMP()”,它將使時間降低到微秒。 如果我在本地主機上運行它,它只會下降到毫秒。 因此,當計時器到達下一毫秒之前發生了多個更新時,就會發生此問題,這在我們的某些流程中絕對是可能的。

所以我的問題是這個。 為什么會發生這種情況,我該如何解決? 這是我無法找到的一些晦澀的設置嗎? 還是Windows與Linux的計時器分辨率不同?

編輯:CURRENT_TIMESTAMP,NOW()和所有其他返回時間戳的內置函數也會發生相同的情況。

謝謝

在此pg_hackers線程上引用Tom Lane:

http://www.postgresql.org/message-id/9699.1262011789@sss.pgh.pa.us

我想您真正要問的不是數據類型的精度,而是now()讀數的精度。 您真不走運-Windows並未公開將牆上時鍾時間縮短至1毫秒以上的電話。

請記住,無論Linux計算機返回什么,在低階位也可能是幻想。

要解決您的問題,請考慮使用序列號作為主鍵。 (當然,假定您實際上首先需要一個主鍵來保存日志文件。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM