1 votes

Éviter les SELECT verrouillés dans MySQL en utilisant MyISAM

MyISAM utilise le verrouillage au niveau de la table, ce qui signifie que les SELECT sont bloqués pendant que les INSERT/UPDATE s'exécutent.

Pour atténuer le problème du blocage des SELECT:s, on m'a recommandé de configurer MySQL avec ces paramètres :

  • low_priority_updates=1
  • concurrent_insert=2

Quels sont les inconvénients de l'utilisation low_priority_updates=1 y concurrent_insert=2 ?

2voto

Paul Dixon Points 122033

Voici un excellent article du MySQL Performance Blog qui couvre une partie de ce sujet

Priorités de verrouillage . Par défaut, MySQL traite les mises à jour comme des opérations de plus haute priorité. prioritaires. Vous pouvez utiliser SELECT HIGH_PRIORITY ou UPDATE LOW_PRIORITY pour ajuster cela ou vous pouvez simplement définir l'option l'option low_priority_updates. Quoi qu'il en soit, le comportement par défaut signifie que toute déclaration UPDATE qui est bloquée par un long bloquée par une sélection en cours bloquera également également les autres sélections de cette table - elles devront attendre que l'UPDATE s'exécute, ce qui est qui attend que SELECT soit SELECT se termine. Ce facteur n'est souvent pas pris en compte souvent pas pris en compte et les gens pensent - "OK. J'écris mon script pour qu'il fasse des mises à jour courtes et ne pour qu'il ne bloque rien". peut encore provoquer un blocage total si des de longues sélections en cours.

Un autre post benchmarks concurrent_inserts et met en évidence les inconvénients possibles, bien que l'article date de trois ans maintenant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X