1
我實現了一個系統,導致Postgresql生成的序列值有很多漏洞。我只是想問,這是否會導致性能下降?是postgresql序列中的空洞/間隙對性能有害?
如果可能請包括一個參考,我可以做進一步閱讀謝謝。
我實現了一個系統,導致Postgresql生成的序列值有很多漏洞。我只是想問,這是否會導致性能下降?是postgresql序列中的空洞/間隙對性能有害?
如果可能請包括一個參考,我可以做進一步閱讀謝謝。
別擔心。性能不會有任何影響。
主要原因是數字(整數,bigint)與固定的存儲量一起存儲。因此,存儲或運行時開銷無論ID是否保留值42或38643874638
另外:序列中的漏洞無法避免。作爲主要關鍵只是「一些價值」,他們也無所謂。
整數的存儲要求:http://www.postgresql.org/docs/current/static/datatype-numeric.html#DATATYPE-INT
作爲a_h_w_n_n說,有間隙沒有問題,但在某些時候你會用完的數字,並沒有什麼神奇的,以避免重複以前使用的號碼。也許做一些快速計算來檢查int4是否足夠大(序列可以很好地支持int8)。 – 2012-07-30 14:55:31
謝謝@a_horse_with_no_name – dumb906 2012-07-31 13:40:49
唯一真正的問題是,如果你真的用得很快,而且它是一個普通的4字節int,那麼你可以很快用完所有的值。出於這個原因,當你不確定它們將被用完時,使用bigint/bigserial是一個好主意。 – 2012-07-31 22:29:24