MySQL lock table

52 réponses
AuteurMessage

krucial |
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 10/02/2012 à 17:56

Yop

Comme vous l'avez compris, j'essaye d'optimiser un peu SQL ... Je viens d'installer un nouveau serveur (un MG SSD, donc plutot plutot "large") mais je rencontre quelques soucis.

Parfois, le serveurs mySQL semble surchargé et je vois beaucoup de requêtes ayant pour statut "Waiting for table level lock".

Quand je regarde le status du serveur, je vois ceci :

SHOW STATUS LIKE 'Table%';
+-----------------------+---------+
| Variable_name | Value |
+-----------------------+---------+
| Table_locks_immediate | 7028867 |
| Table_locks_waited | 140278 |
+-----------------------+---------+

A priori, j'ai un nombre de tables qui n'obtient pas immediatement un verrou trop élevé. La solution pour mysql ? "Si ce nombre est élevé et que vous éprouvez des problèmes de performance, commencez par optimiser vos requêtes, puis subdivisez vos tables ou encore utiliser la réplication.".

Pareil, je vois passer pas mal de "Waiting for query cache lock".

Que dois je en conclure ? Dois je passer en innodb pour limiter les problemes de lock ?

Le load average est infime : load average: 0.15, 0.15, 0.18

Si vous avez des pistes, je suis preneur.

Merci

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 10/02/2012 à 21:07

Que dois je en conclure ? Dois je passer en innodb pour limiter les problemes de lock ?

Oui, oui, oui et oui.

MyISAM est une plaie à réserver qu'à des besoins très particuliers.
Pour faire simple, dans bien des cas MyISAM sera incapable de faire tourner deux requêtes simultanées utilisant la même table. Ca devient d'autant plus ridicule que tu as un serveur avec 8 coeurs...

InnoDB verrouille plus finement que MyISAM, ce qui limite déjà l'ampleur des problèmes.

Avec MyISAM il peut également y avoir d'autres pistes pour limiter les verrous (augmentation de certains buffers par exemple), mais de manière générale une requête pas ou mal indexée (ou qui va nécessiter une table temporaire) risque de verrouiller un grand nombre de ligne inutilement. Donc comme indiqué "optimise tes requêtes". Facile à dire non ?
Le tout c'est de commencer à lire les EXPLAIN et apprendre à les comprendre.

Et dans l'urgence : maatkit, avec mk-query-digest, t'aidera à identifier les requêtes problématiques.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

tonguide | Jeremy
Modérateur

 

Inscrit le : 09/05/2005

# Le 10/02/2012 à 21:24

Bool a dit :
Et dans l'urgence : maatkit, avec mk-query-digest, t'aidera à identifier les requêtes problématiques.

Je confirme
Vraiment pratique ce petit outil !

cerise | Gaël
Modérateur

Photo de cerise

Inscrit le : 31/10/2008

# Le 10/02/2012 à 21:39

le seul truc, c'est que si tu as besoin de recherche fulltext, tu peux pas avec InnoDB

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 10/02/2012 à 22:30

Bon, je vais lire tout ce que je peux trouver sur innodb et me lancer, on va voir.

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 10/02/2012 à 22:40

Mais si tu as besoin de FULLTEXT et que tu as du trafic, MyISAM ne marche pas non plus. Tu dois donc te tourner vers des solutions plus adaptées, comme Lucene ou Sphinx par exemple.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

cerise | Gaël
Modérateur

Photo de cerise

Inscrit le : 31/10/2008

# Le 10/02/2012 à 22:44

oui mais par exemple, les forums PHPBB utilisent le fulltext (c'est désactivable il me semble). Dans ce cas, tu es un peu bloqué non ?

tonguide | Jeremy
Modérateur

 

Inscrit le : 09/05/2005

# Le 10/02/2012 à 22:51

sinon GG search custom, surtout pour du phpBB

PyRoFlo | Florent
Modérateur

Photo de PyRoFlo

Inscrit le : 09/05/2005

# Le 10/02/2012 à 22:57

Pour remplacer du FULLTEXT, on peut bricoler avec SOUNDEX et des procédures stockées. Sinon je pense aussi qu'il vaut mieux se tourner vers des outils annexes.

Sinon pour la question initiale, j'aurais dit aussi de passer sur InnoDB mais surtout de vérifier le schéma de la base de données, et peut être remettre à plat sa conception si ça bloque vraiment.

(Message édité le 10-02-2012 à 23h02 par PyRoFlo)

Feu d'artifice ParisOuvrir dans une nouvelle fenetre

caaptusss | Jérémy
Membre

Photo de caaptusss

Inscrit le : 25/09/2007

# Le 10/02/2012 à 23:07

krucial a dit :
Bon, je vais lire tout ce que je peux trouver sur innodb et me lancer, on va voir.

Gros conseil, malgré tout ce que peux dire Bool : InnoDB est très très performant, mais très capricieux concernant les pertes de données, corruptions ou crash de mysql.
En gros, fait des sauvegardes très très régulièrement, car à chaque fois que j'ai voulu travailler avec innoDB, ça s'est terminé en perte totale des données car binaires corrompus et impossible à restaurer malgré pleins de méthodes différentes.
J'ai beaucoup de clients qui ont pleurés avec InnoDB... Problème que ne m'a jamais causé MyISAM à ce jour.

FirstHeberg.comOuvrir dans une nouvelle fenetre

acti | Stéphane
Modérateur

Photo de acti

Inscrit le : 13/11/2005

# Le 11/02/2012 à 09:24

Je vous conseille la lecture du bouquin "http://books.google.fr/books?id=BL0NNoFPuAQC&printsec=frontcover&dq=mysql+high+performance&hl=fr&sa=X&ei=MyQ2T_3xHIK30QWCnOXBAg&ved=0CDoQ6AEwAA#v=onepage&q=mysql%20high%20performance&f=false" dont la nouvelle version mis à jour pour MySQL 5.5 sortira en Avril 2012.

MyISAM et INNODB sont très bien expliqués, comme d'autres moteurs de stockage et il ne faut pas vouloir utiliser un moteur uniquement ou un autre mais panacher aussi pour optimiser les performances en fonction du besoin car certains moteurs de stockages font des choses mieux que d'autres.

A lire donc, je vous le conseille avec ce célèbre blog : http://www.mysqlperformanceblog.com/Ouvrir dans une nouvelle fenetre

Bon week-end.

Stéphane

tonguide | Jeremy
Modérateur

 

Inscrit le : 09/05/2005

# Le 11/02/2012 à 10:15

Le blog et le livre sont effectivement très souvent cités, mais en anglais avec le niveau technique qu'il doit avoir ... ça va pas le faire. Dommage que personne n'ai pensé à le traduire

PyRoFlo | Florent
Modérateur

Photo de PyRoFlo

Inscrit le : 09/05/2005

# Le 11/02/2012 à 14:34

Pour l'anecdote‚ Facebook tourne sous MySQL avec InnoDB.

Feu d'artifice ParisOuvrir dans une nouvelle fenetre

cerise | Gaël
Modérateur

Photo de cerise

Inscrit le : 31/10/2008

# Le 11/02/2012 à 14:39

PyRoFlo a dit :
Pour l'anecdote‚ Facebook tourne sous MySQL avec InnoDB.



ah ok, c'est donc pour ça...

PyRoFlo | Florent
Modérateur

Photo de PyRoFlo

Inscrit le : 09/05/2005

# Le 11/02/2012 à 14:47

Pas compris.

http://www.facebook.com/MySQLatFacebook?sk=notesOuvrir dans une nouvelle fenetre

Feu d'artifice ParisOuvrir dans une nouvelle fenetre

devtribu | Olivier
Modérateur

Photo de devtribu

Inscrit le : 16/06/2005

# Le 11/02/2012 à 16:31

a une époque ou je voulais optimiser mysql, j'ai passé mes forums en innodb. Les perf étaient pas terribles
Je suis retourné en isam. Ca marche bien. Le REPAIR TABLE fonctionne à tous les coups et c'est quand meme appréciable.

Il faut faire attention au lock de tables.
Parfois un INSERT DELAYED est bien pratique

Février 2019, mon futur livre Tout JavaScript chez Dunod https://amzn.to/2PoLd0fOuvrir dans une nouvelle fenetre

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 11/02/2012 à 20:15

Bon bah je suis revenu sur mon ancien fichier de config, ca fonctionne a merveille. A priori, je suis pas un cador niveau tuning mysql Un jour, il va vraiment falloir que je pense à filer le hosting / infogérance à un pro. Faut juste que je me decide a lacher la main, c'est pas évident.

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

Geo 113 | Geoffrey
Modérateur

Photo de Geo 113

Inscrit le : 04/05/2005

# Le 12/02/2012 à 18:44

@ krucial :
grace à typhon je dors mieux ;)

CosmixOuvrir dans une nouvelle fenetre
Rendez imprévisible l'Economie; Mentez aux sondages

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 12/02/2012 à 19:09

Tu peux m'en dire plus ? Cher comme service non ?

Finalement, non, ca va pas mieux. Quoi que je fasse, le nouveau serveur beaucoup plus puissant tourne moins bien que l'ancien superplan. Des users commencent à se plaindre. Je flippe un peu de passer les tables les plus importantes en innodb, comme ça, en prod, sans maitriser un minimum mon affaire (perfs, securité, backups). Le serveur est semble-t-il arrivé plusieurs fois à la limite du max-connection aujourd'hui, ce que l'ancien n'avait jamais fait. Tout ça manque vraiment de logique.

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

devtribu | Olivier
Modérateur

Photo de devtribu

Inscrit le : 16/06/2005

# Le 12/02/2012 à 19:40

Le dimanche soir, y a du monde...

Publie tes params sql et les états via phpmyadmin ici
Il suffit souvent de pas grand chose pour changer totalement le comportement

Février 2019, mon futur livre Tout JavaScript chez Dunod https://amzn.to/2PoLd0fOuvrir dans une nouvelle fenetre

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 23/11/2024 17:55:52 | Généré en 8.59ms | Contacts | Mentions légales |