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

Come garantire l'assenza di lacune nei numeri di auto_increment?

Prima di tutto, è completamente bene avere queste lacune. Non ci sono nessun problema . È solo il tuo disturbo ossessivo compulsivo che ti costringe a pensare che questi numeri debbano seguire uno schema, ma NON lo fanno.

  • auto_increment non è una funzionalità PHP, è una funzionalità MySQL
  • auto_increment assicura che ogni riga ottenga un unico numero. Non si occupa di numeri sequenziali
  • auto_increment funziona in modo sicuro in un ambiente simultaneo, ciò significa che ci sono molti utenti che si connettono a MySQL e fanno cose, e tutti devono essere in grado di gestire il database e non ottenere lo stesso ID per identificare una riga. Questo avviene attraverso un processo piuttosto complesso e questo è uno dei motivi per cui auto_increment divari di rendimento
  • auto_increment è usato da InnoDB per l'organizzazione fisica dei record su disco - utilizza la funzione di auto_increment e quello sta producendo un numero più grande del precedente (è quello che fa, più grande del precedente, non sequenziale). Usando questo, viene costruito un b-tree e i record vengono scritti in sequenza sul disco rigido. Manomissione di auto_increment rende InnoDB riequilibrare l'albero. Significa che passa attraverso i record e ricrea l'indice se lo mandi - è qualcosa che non vuoi. Sempre

Quando ci pensi, cosa ottieni con i numeri sequenziali? Niente in realtà, tranne che probabilmente il tuo cervello fa meno male perché c'è un ordine immaginario.

Per i numeri sequenziali, usa i trigger per crearli. auto_increment ha un lavoro e un solo lavoro:produrre unico numeri.