Quels sont les avantages de la mise à JOUR LOW_PRIORITY et INSERT DELAYED?
J'ai été en passant par un peu de code et remarqué que UPDATE LOW_PRIORITY
et INSERT DELAYED INTO
sont utilisés pour la mise à jour de la base de données. Qu'est-ce que c'est l'utilisation de ces déclarations? Dois-je utiliser dans chaque insérer et mettre à jour la déclaration de différentes tables dans la même base de données?
OriginalL'auteur mathew | 2010-07-13
Vous devez vous connecter pour publier un commentaire.
Avec le LOW_PRIORITY mot-clé, l'exécution de la mise à JOUR est retardée jusqu'à pas d'autres clients de la lecture de la table. Normalement, la lecture, les clients sont mis en attente jusqu'à ce que la requête de mise à jour est effectuée. Si vous souhaitez donner à la lecture de clients priorité sur la requête de mise à jour, vous devez utiliser LOW_PRIORITY.
La RETARDÉ option pour l'instruction INSERT est une extension MySQL de SQL standard qui est très utile si vous avez des clients qui ne peuvent pas ou n'ont pas besoin attendre pour l'INSERTION. C'est une situation courante lorsque vous utilisez MySQL pour la connexion et vous pouvez aussi exécuter régulièrement de SÉLECTIONNER et de mettre à JOUR les déclarations qui prennent un certain temps pour terminer.
OriginalL'auteur
LOW_PRIORITY
,HIGH_PRIORITY
etDELAYED
ne sont utiles que dans quelques circustamces. Si vous n'avez pas une GROSSE charge qu'ils ne peuvent pas vous aider. Si vous avez, ne pas faire quelque chose que vous ne comprenez pas complètement.Toutes ces options fonctionnent uniquement avec MyISAM, pas InnoDB, pas vues.
DELAYED
ne fonctionne pas avec les tables partitionnées, et c'est clairement conçu pour le dataware house. Le client envoie la plaquette et puis oublie, sans attendre le résultat. Vous ne serez donc pas de savoir si l'insertion a réussi, s'il y avait des doublons, etc. Il ne doit jamais être utilisé tandis que d'autres threads peuventSELECT
à partir de cette table, car un insert delayed n'est jamais simultanées.LOW_PRIORITY
attend jusqu'à ce qu'AUCUN client n'est l'accès à la table. Mais si vous avez un trafic élevé, vous pouvez attendre jusqu'à ce que le temps de connexion à... ce n'est pas ce que vous voulez, je suppose 🙂Notez également que
DELAYED
sera supprimée dans Oracle MySQL 5.7 (mais pas dans MariaDB).OriginalL'auteur
Si vos Mises à jour sur MySQL une lecture intensive de l'environnement sont jusqu'à 1800 secondes, puis il est conseillé d'utiliser la mise à JOUR LOW_PRIORITY.
parlait de wait_timeout et interactive_timeout variables système qui dépend du client CLIENT_INTERACTIVE drapeau. Toutefois, la valeur par défaut de ces variables est 28800 (8 heures) et pas 1800.
OriginalL'auteur
Ce besoin d'utiliser alors vous avez de grandes charger sur le serveur.
Et vous maintenant, que certains UPDATE ou INSERT est maintenant haute priorité et peut agir sur la charge.
Exp. SQL que générer des statistiques ou des éléments de haut. Le sont lentement et de ne pas exécutée immédiatement.
OriginalL'auteur