sql >> Databáze >  >> RDS >> Mysql

MariaDB - INNODB přeskakování číselné řady při vytváření přírůstkových záznamů - proč?

Ke generování unikátních je vyžadován mechanismus auto_increment hodnoty, které jsou větší než jakákoliv hodnota, kterou dříve vygeneroval. Nezaručuje generování po sobě jdoucích hodnoty.

Je o tom nějaká diskuze zde:https://bugs.mysql.com/bug. php?id=57643

Věrné generování po sobě jdoucích hodnot má malý význam, protože jakákoli hodnota může být "ztracena" z jiných důvodů:

  • Vaše INSERT se nezdaří, například kvůli porušení omezení, jako je UNIQUE KEY nebo FOREIGN KEY.
  • Vrátíte zpět transakci pro svůj INSERT.
  • Uspějete a odevzdáte, ale později je řádek VYMAZÁN vámi nebo jinou relací.

Hodnoty Auto-inc se nevracejí do žádné fronty, protože jiné souběžné relace mohly mezitím vygenerovat další hodnoty id. Nevyplatí se InnoDB udržovat fond nepřidělených hodnot id, protože tento fond by se mohl stát obrovským a plýtváním.

Také by mohlo být vhodné "ztratit" hodnotu ID, jinak by si někdo myslel, že se řádek, který chtěl DELETE, nějak vrátil.



  1. Jak vložit více řádků z pole pomocí frameworku CodeIgniter?

  2. Existuje v Oracle funkce, která vypočítá rozdíl mezi dvěma daty?

  3. MySql:nastavte proměnnou se seznamem

  4. Jak mohu vyhledávat podle emotikonů v MySQL pomocí utf8mb4?