Ho una tabella dove, facendo uno stress test, ho inserito 1000 record.
La tabella ha questi campi:
come si può vedere, memorizzo anche i secondi e i microsecondi generati dallo script php.codice:+---------------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------------+---------------------+------+-----+---------+----------------+ | id | bigint(20) unsigned | NO | PRI | NULL | auto_increment | | db_now_time | datetime | NO | MUL | NULL | | | db_sysdate_time | datetime | NO | | NULL | | | php_gmdate_iso_8601 | varchar(30) | NO | | NULL | | | php_gmdate_rfc_2822 | varchar(35) | NO | | NULL | | | php_date_iso_8601 | varchar(30) | NO | | NULL | | | php_date_rfc_2822 | varchar(35) | NO | | NULL | | | php_time | bigint(20) | NO | | NULL | | | php_microtime | varchar(20) | NO | | NULL | | | extra_info | varchar(255) | YES | | NULL | | +---------------------+---------------------+------+-----+---------+----------------+
In tutti i miei test, a partire dal record 300 circa, l'ID auto increment inizia a non essere più sequenziale, infatti se ordine i record per php_time e php_microtime, entrambi ASC, la lista degli id inizia ad essere:
(se invece non indico alcu Order By, l'ordine è quello della chiave primaria, ID).codice:+-----+ | id | +-----+ | 302 | | 301 | | 304 | | 305 | | 303 | | 306 | | 309 | | 307 | | 308 | | 310 | +-----+
Ho trovato pochissime informazioni in rete, le più interessanti si limitavano a dire che l'auto increment di per sè non assicura una numerazione sequenziale, piuttosto un valore univoco.
Però non capisco come logicamente e fisicamente sia possibile che un record venga memorizzato con un ID superiore rispetto a quello che viene memorizzato successivamente ad esso.
PS: ho fatto prove anche forzando il lock della tabella
Grazie
Ciaoooooo!!!!