2009-08-02 6 views
1

MyISAM utilise le verrouillage au niveau de la table, ce qui signifie que SELECT: s sont bloqués pendant l'exécution de INSERT/UPDATE: s.Obtention d'un verrouillage SELECT: s dans MySQL lors de l'utilisation de MyISAM

Pour atténuer le problème de blocage SELECT: s J'ai recommandé de configurer MySQL avec ces paramètres:

  • low_priority_updates=1
  • concurrent_insert=2

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

Répondre

2

Voici un great post from the MySQL Performance Blog qui couvre une partie de cette

priorités de verrouillage. Par défaut, MySQL traite les mises à jour en priorité . Vous pouvez utiliser SELECT HIGH_PRIORITY ou UPDATE LOW_PRIORITY pour l'ajuster ou vous pouvez simplement définir l'option low_priority_updates. Quoi qu'il en soit comportement par défaut signifie toute instruction UPDATE qui est bloqué par une longue en cours d'exécution, sélectionnez bloquera également d'autres de cette table sélectionne - ils attendre que UPDATE est en cours d'exécution qui attend sur SELECT pour complète. Ceci n'est souvent pas pris en compte et les gens pensent - "OK. J'écris mon script donc il fait de courtes mises à jour donc ne bloquera rien "- il reste peut causer un blocage total s'il y a longs sélections en cours d'exécution.

Un autre post benchmarks concurrent_inserts et met en évidence les inconvénients possibles, bien que le poste a maintenant 3 ans.

Questions connexes