sql >> Databasteknik >  >> RDS >> Mysql

MariaDB - INNODB hoppar över nummersekvensen medan du skapar inkrementella poster - varför?

Auto_increment-mekanismen krävs för att generera unik värden, som är större än något värde som det har genererat tidigare. Det garanterar inte att det genererar konsekutiv värden.

Det finns en del diskussion om det här:https://bugs.mysql.com/bug. php?id=57643

Det är liten betydelse att skapa på varandra följande värden troget, eftersom alla värden kan "förloras" av andra skäl:

  • Din INSERT misslyckas, till exempel på grund av att den bryter mot en begränsning som UNIQUE KEY eller FOREIGN KEY.
  • Du återställer transaktionen för din INSERT.
  • Du lyckas och förbinder dig, men senare raderas raden av dig eller en annan session.

Auto-inc-värden returneras inte till någon form av kö, eftersom andra samtidiga sessioner kan ha genererat ytterligare id-värden under tiden. Det är inte värt att InnoDB upprätthåller en pool av icke-allokerade id-värden, eftersom den poolen kan bli enorm och slösaktig.

Det kan också vara lämpligt att "tappa" ett ID-värde, annars skulle någon tro att raden de menade att TA BORT på något sätt kom tillbaka.



  1. Fel vid konfigurering av hibernate 5.0.1 och MySQL

  2. Att få anslutningen misslyckades:php_network_getaddresses:getaddriinfo misslyckades:Namn eller tjänst okänd

  3. SQL Server SELECT INTO @variable?

  4. Arkitekturimplementering och design för ett meddelandesystem som använder socket.io node.js och inkommande meddelanden