2014-08-27 80 views
2

我正在研究一個將其數據存儲在PostgreSQL數據庫中的新應用程序。其他資料中的數據類型是來自某些測量設備的電錶記錄。每個客戶可以有數百和數千個這些設備,並且通常每天都提供很少的記錄。較新的記錄只需刪除較舊的記錄並用新的ID插入爲新記錄即可取代較舊的記錄。我的公司不知道有多少客戶每天需要存儲多少測量設計和記錄。我應該在新的應用程序中使用Postgres的bigserial記錄嗎?

由於這是一個新的應用程序,我想問一下關於使用serial vs. bigserial作爲儀表記錄的id的建議。目前的x64 CPU或者其他版本有沒有明顯的性能降級? id字段的存儲量應該增加2倍,對吧?任何明顯的原因爲什麼不使用bigserial?

謝謝!

回答

1

就性能而言沒有任何區別 - 假設PostgreSQL已被正確編譯以利用x86_64平臺。例如,添加兩個32位整數需要與添加64位整數相同的時間。但是,如果它是爲純x86(32位)編譯的,則會出現一些(邊緣?)性能下降,因爲它不知何故需要僅使用32位寄存器來模擬64位算術。

簡而言之:請確保您使用的是64位版本的PostgreSQL,並且您應該很好!

+0

另外一個有趣的陳述我以前在文檔中沒有意識到CREATE SEQUENCE:「序列基於bigint算術[...]在一些較早的平臺上,序列使用常規整數算術[...] 。]「所以32位整數似乎確實是某種遺產。 – 2014-08-28 06:04:34

1

作爲表的序列和主鍵,bigserial數據類型沒有明顯的性能問題。詳情請閱讀documentationolder question about subject

順便說一句:如果你有10000臺設備,並且每個設備產生的10條記錄,每天,整夠了60年,所以我覺得整足夠;-)

+0

爲什麼不只是使用64位整數並且可以安全使用幾年? :)你唯一支付的價格是一些內存,無論如何這很便宜。 – 2014-08-27 16:56:49

+0

@uraf你是對的,內存很便宜,但目前ssd光盤不是;-) – 1ac0 2014-08-27 17:01:35

+0

這不僅僅是這10條記錄每天,我特別想到的差距,因爲錯誤等回滾交易的差距。當然,這些應該不會經常發生......這只是一種直覺。 :-) – 2014-08-27 20:45:44

相關問題