私はBooking
モデルをDjangoに持っていて、その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-IDからの連続性を期待しないように教えてくれましたが、直感だけではクライアントへの説明には不十分です。
技術的な理由で、PostgresはこれらのIDを割り当てる際に数字をスキップしますか? postgres docsから
トランザクションがロールバックされるときなどは、通常、* holes *がシーケンス内に存在する可能性があります。技術的な理由から、シーケンスはロックフリーです(そうでなければロックホットスポットまたはファンネルになる可能性があります)。 – joop