sql >> Database teknologi >  >> RDS >> Mysql

MariaDB - INNODB springer nummersekvensen over, mens der oprettes trinvise poster - hvorfor?

Auto_increment-mekanismen er påkrævet for at generere unik værdier, der er større end nogen værdi, den tidligere har genereret. Det garanterer ikke at generere konsekutive værdier.

Der er nogen diskussion om det her:https://bugs.mysql.com/bug. php?id=57643

Der er ringe betydning i at generere på hinanden følgende værdier trofast, fordi enhver værdi kan gå tabt af andre årsager:

  • Din INSERT mislykkes, for eksempel på grund af overtrædelse af en begrænsning som UNIQUE KEY eller FOREIGN KEY.
  • Du ruller tilbage transaktionen for din INSERT.
  • Du lykkes og forpligter dig, men senere slettes rækken af ​​dig eller en anden session.

Auto-inc-værdier returneres ikke til nogen form for kø, fordi andre samtidige sessioner kan have genereret yderligere id-værdier i mellemtiden. Det er ikke værd at InnoDB opretholder en pulje af ikke-allokerede id-værdier, fordi den pulje kan blive enorm og spild.

Det kan også være passende at "miste" en ID-værdi, ellers ville nogen tro, at den række, de mente at SLETTE, på en eller anden måde kom tilbage.



  1. Hvad er fordelen ved zerofill i MySQL?

  2. Sådan filtreres dato ved hjælp af datetimepicker via database

  3. Problem med at tilføje fremmednøgle ved hjælp af Alter Table med eksisterende MYSQL-database - kan ikke tilføje den! Hjælp!

  4. Markør forældelse Dump