J'ai une table avec un champ :: Ma question est que si j'utilise une insertion retardée sur cette table, l'horodatage sera-t-il l'heure à laquelle la demande est mise en file d'attente ou lorsque l'insert est réellement effectué? P> TS horodatage par défaut actuel_timettamp code> p>
3 Réponses :
Il devrait prendre le temps de l'insert réel p>
La réponse est lorsque la demande est en file d'attente, mais ce n'est pas nécessairement juste lorsque la demande est faite, la demande de la demande après la mise en place du thread de la table s'il n'y en a pas déjà. P>
du MySQL 5.1 dev Docs : < / p>
Le fil exécute l'insert déclaration, mais au lieu d'écrire le rangée à la table, il met une copie de la dernière ligne dans une file d'attente qui est géré par le fil du gestionnaire. Tout Les erreurs de syntaxe sont remarquées par le fil et signalé au client programme. p> blockQuote>
L'ordre des événements lorsque l'instruction retardée exécute: p>
- Un fil de manutention pour la table est créé s'il n'y en a pas déjà li>
- Le gestionnaire vérifie ou attend d'obtenir un
retardé code> verrou li>
- Le gestionnaire exécute le
insert code> et mettez la ligne finale dans une file d'attente li>
- Lorsque la ligne est réellement insérée, le journal binaire est mis à jour li>
- le gestionnaire écrit
retarded_insert_limit code> lignes à la fois et exécute tout
Sélectionne code> entre écrit li>
- Lorsque la file d'attente est vide, le verrouillage code> retardé code> est relâché li> ol>
Selon si un fil doit être créé ou non et combien de temps il faut pour vérifier ou obtenir un verrou code> retardé code>, l'heure entre l'exécution de l'instruction (étape 0) et l'exécution de La déclaration (étape 3) variera. Ensuite, en fonction de la taille de la file d'attente (en particulier si elle est sur
retarded_insert_limit code> lignes), et si tout autre
sélectionne code> se produit, l'écriture sera retardée par une quantité de temps imprévisible . p>
Je pense que vous avez raison (mais pas sûr). Parce que, si le fil exécute i> la déclaration sur Signaler des erreurs de syntaxe i> Syntaxe Situelle, elle "élargira probablement" actuelle_timestamp à l'horodatage réel.
Peu importe si insérer le retardé code> est utilisé ou si la table est verrouillée en raison d'un autre thread ou de mise à jour, la valeur
TS code> sera égale à l'heure de la
insérer code> a été émis. p>
Voulez-vous dire l'insert «factice» fabriqué par le fil du gestionnaire ou l'insert réellement effectué dans la base de données.