sql >> Database >  >> RDS >> Mysql

MariaDB - INNODB slaat de nummerreeks over tijdens het maken van incrementele records - waarom?

Het auto_increment-mechanisme is vereist om uniek te genereren waarden, die groter zijn dan enige waarde die het eerder heeft gegenereerd. Het garandeert niet dat er opeenvolgende . wordt gegenereerd waarden.

Er is hier enige discussie over:https://bugs.mysql.com/bug. php?id=57643

Er is weinig belang bij het getrouw genereren van opeenvolgende waarden, omdat elke waarde om andere redenen "verloren" kan gaan:

  • Uw INSERT mislukt, bijvoorbeeld vanwege het overtreden van een beperking zoals UNIQUE KEY of FOREIGN KEY.
  • U maakt de transactie terug voor uw INSERT.
  • Je slaagt en legt je vast, maar later wordt de rij VERWIJDERD door jou of een andere sessie.

Auto-inc-waarden worden niet teruggestuurd naar een wachtrij, omdat andere gelijktijdige sessies in de tussentijd mogelijk meer ID-waarden hebben gegenereerd. Het is InnoDB niet waard om een ​​pool van niet-toegewezen id-waarden te onderhouden, omdat die pool enorm en verspillend kan worden.

Het kan ook gepast zijn om een ​​ID-waarde te "verliezen", anders zou iemand denken dat de rij die ze wilden VERWIJDEREN op de een of andere manier terugkwam.



  1. Gebruiker heeft geen toegang tot een database

  2. Ruby/PgSQL-fout bij het starten van Rails:kan een dergelijk bestand niet laden -- pg_ext (LoadError)

  3. Waarom kan NULL in SQL niet overeenkomen met NULL?

  4. Database-e-mail configureren in SQL Server