我在Django中有Booking
模型,它的ID是Django創建的內置id
列。下面是它的外觀在數據庫級Postgres裏:爲什麼模型ID始終是Postgres/Django中下一個遞增的數字?
integer not null default nextval('bookings_booking_id_seq'::regclass)
客戶端已調用今天擔心的是,這些數字似乎是連續的,但並不總是連續的。例如,序列如下:
..2, ..3, ..4, ..6, ..8, ..9
他們擔心繫統正在刪除或刪除預訂。 ..5
和..7
在哪裏?我們將[一般] 所有內容都記錄在之內,可以刪除預訂,所以我相當有信心,這不是系統問題。程序員的直覺也教會了我不要期待Auto-IDs的連續性,但單憑直覺對客戶的解釋還不夠好。
是否存在技術原因Postgres在分配這些ID時會跳過數字?
這是正常的,當事務回滾等時,序列中可能會有* holes *。技術原因是這樣序列是無鎖的(否則它可能成爲鎖定熱點或漏斗)。 – joop