2016-03-10 2 views
0

Détails du serveurMySQL 5.6 Sémaphore Contention row0purge.cc dict0dict.cc

  • MySQL 5.6.22
  • 256Go RAM
  • 4TB SSD
  • 32 de base

Contexte Information

Il existe un processus de suppression qui effectue environ 3 suppressions par seconde. 2-3k QPS par seconde. Surtout SELECT. Pas de longues requêtes en cours d'exécution.

Problème

Parfois, les requêtes en cours d'exécution dans la commencer 1-3 deuxième plage au lieu de millisecondes. La plupart d'entre eux à la "attente de verrouillage du cache de requête".

SEMAPHORES 
---------- 
OS WAIT ARRAY INFO: reservation count -2033262178 
--Thread 6060 has waited at row0purge.cc line 754 for 1.00 seconds the semaphore: 
S-lock on RW-latch at 00007FF62B1C9F60 created in file dict0dict.cc line 983 
a writer (thread id 9580) has reserved it in mode exclusive 
number of readers 0, waiters flag 1, lock_word: 0 
Last time read locked in file row0purge.cc line 754 
Last time write locked in file ..\..\..\mysqlcom-pro-5.6.22\storage\innobase\row\row0mysql.cc line 3838 
--Thread 5204 has waited at row0purge.cc line 754 for 1.00 seconds the semaphore: 
S-lock on RW-latch at 00007FF62B1C9F60 created in file dict0dict.cc line 983 
a writer (thread id 9580) has reserved it in mode exclusive 
number of readers 0, waiters flag 1, lock_word: 0 
Last time read locked in file row0purge.cc line 754 
Last time write locked in file ..\..\..\mysqlcom-pro-5.6.22\storage\innobase\row\row0mysql.cc line 3838 
--Thread 5556 has waited at row0purge.cc line 754 for 1.00 seconds the semaphore: 
S-lock on RW-latch at 00007FF62B1C9F60 created in file dict0dict.cc line 983 
a writer (thread id 9580) has reserved it in mode exclusive 
number of readers 0, waiters flag 1, lock_word: 0 
Last time read locked in file row0purge.cc line 754 
Last time write locked in file ..\..\..\mysqlcom-pro-5.6.22\storage\innobase\row\row0mysql.cc line 3838 
--Thread 6112 has waited at row0purge.cc line 754 for 1.00 seconds the semaphore: 
S-lock on RW-latch at 00007FF62B1C9F60 created in file dict0dict.cc line 983 
a writer (thread id 9580) has reserved it in mode exclusive 
number of readers 0, waiters flag 1, lock_word: 0 
Last time read locked in file row0purge.cc line 754 
Last time write locked in file ..\..\..\mysqlcom-pro-5.6.22\storage\innobase\row\row0mysql.cc line 3838 
--Thread 5868 has waited at dict0dict.cc line 1037 for 1.00 seconds the semaphore: 
Mutex at 000000279A10EDA8 created file dict0dict.cc line 974, lock var 1 
waiters flag 1 
--Thread 5236 has waited at buf0flu.cc line 2077 for 0.00 seconds the semaphore: 
Mutex at 00000000345B7F68 created file buf0buf.cc line 1270, lock var 1 
waiters flag 1 
OS WAIT ARRAY INFO: signal count -1213535755 
Mutex spin waits 8166969384, rounds 34032056620, OS waits 750640991 
RW-shared spins 3891056500, rounds 50813966471, OS waits 764118585 
RW-excl spins 9963649634, rounds 77579501565, OS waits 718551543 
Spin rounds per wait: -80.46 mutex, -125.80 RW-shared, 56.47 RW-excl 

Question

Je me demande ce qui pourrait être la cause. Je comprendrais si c'était cohérent puisque le processus DELETE est en cours mais c'est très sporadique. Les sémaphores qui se rapportent à dict0dict.cc et row0purge.cc me font supposer qu'il est lié à DELETS qui provoque la contention. Toutes les pensées sur ce serait génial.

Répondre

0

Verrou de cache de requête signifie qu'il y a un conflit avec le cache de requête, il semble que la suppression de SQL invalide le cache de requête. Normalement, je garde le cache de requêtes désactivé pour éviter de tels problèmes. Essayez de désactiver le cache de requête.

+0

Oui le cache de requête est un point de contention mais il présente plus d'avantages que d'inconvénients dans cette situation. L'éteindre serait un plus gros problème. Ma question concerne les sémaphores et ce à quoi ces fichiers sources se rapportent. – MYoussef

+1

Gardez au moins 'query_cache_size' <100M - quand une purge est nécessaire (c'est-à-dire, sur _every_' DELETE'), il faut scanner tout le QC pour voir ce qu'il faut purger. Plus grand == plus lent. –

+0

Merci @RickJames Je viens de changer la taille de 256M à 100M. Je vais attendre de voir à quel point le cache se remplit et voir si je peux l'abaisser davantage. – MYoussef