|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2012 Messages : 1 ![]() |
bonjour,
j'ai mon application qui prend 100 % de la cpu j'uitlise le script mysqltuner.pl pour améliorer les requetes sql le résultat : General recommendations: Add skip-bdb to MySQL configuration to disable BDB Run OPTIMIZE TABLE to defragment tables for better performance Reduce your overall MySQL memory footprint for system stability Enable the slow query log to troubleshoot bad queries Temporary table size is already large - reduce result set size Reduce your SELECT DISTINCT queries without LIMIT clauses Variables to adjust: *** MySQL's maximum memory usage is dangerously high *** *** Add RAM before increasing MySQL buffer variables *** query_cache_size (> 16M) sort_buffer_size (> 1M) read_rnd_buffer_size (> 256K) comment peut-on améliorer le temps de réponse sans augmenter la mémoire ? mon my.cnf cat /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 query_cache_size = 16M tmp_table_size = 256M max_heap_table_size = 512M innodb_buffer_pool_size = 3G table_cache= 512M thread_cache_size = 10 key_buffer_size = 600M sort_buffer_size =1M read_rnd_buffer_size=256K open_files_limit = 65535 max_connections = 100 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Adrien Développeur .NET Inscription : janvier 2007 Messages : 924 ![]() |
Normalement à l'installation tu indiques les paramètres de ta machine, MySQL va déterminer les meilleurs configurations mémoires etc...
Sans ajouter de la mémoire c'est délicat. Après, ce que tu pourrais faire c'est: - Utiliser des tables MyIsam plutot que InnoDB. Ces tables n'ont pas de système de clé étrangère, ce qui améliore grandement la rapidité de lecture et d'écriture. Il faut voir si l'usage de conviens. -Tu peux aussi voir si tu as des bons index pour tes tables (en fonction de tes requêtes. - Tu peux amélioré aussi la performance de tes requêtes (ce qui joue énormément sur le temps de réponse)
__________________
L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche) |
|
|
00
|
|
|
#3 | |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 667 ![]() |
Citation:
J'aimerai que vous developpiez ces deux points la (pour ma culture personnelle) : - En quoi une fk va ralentire la lecture ? - En quoi un lock de table engendré par l'utilisation de MyIsam lors d'un update/insert/delete va rendre les cycles de lecture / ecriture plus rapide dans un système un poil concurent ? |
|
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() Adrien Développeur .NET Inscription : janvier 2007 Messages : 924 ![]() |
Je suis sur que ta culture personnelle est très bien, tu me tests c'est tout.
1) Je me suis rapidement exprimer: - Ce n'est pas le fk qui fait que la lecture peut être plus lente. - Ce qui n’empêche pas qu'en MyIsam la lecture peut être plus rapide, notamment à cause du fait d'index Full text, pas de possibilité de roll back ni de gestion de crash comme pour InnoDB. 2) Sur un système concurrent en effet, le système de queue peut avoir un effet néphaste... Si on concidère que un poil concurrent, tu entends pas là plus de 10-15 requêtes par secondes (qui prendrait plus de 10ms chacun) Mais je peux me tromper.
__________________
L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche) |
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 667 ![]() |
Non pas vraiment pour le test, je n'utilise pas MySql.
Mais c'est un point qui m'interesse (la lenteur supposée de InnobDb vs MyIsam en lecture) vu que ce cas m'a déjà été posé dans mon travail. j'avais trouvé des bench par ci par là qui se contredisaient, ex : http://blogs.oracle.com/MySQL/entry/...am_performance http://www.mysqlperformanceblog.com/...hmarks-part-1/ et d'autre où MyIsam était devant InnobDb (pour du MySql 5+). Bref au fur et à mesure de mes recherches, à part l'option fullText, je n'avais pas trouvé de point positif à l'utilisation de MyIsam. Mais des cas m'ont surement échappé et ceci des personnes qui ont de l'expérience avec MySql peuvent me l'apporter |
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() Adrien Développeur .NET Inscription : janvier 2007 Messages : 924 ![]() |
J'en ai pas "la preuve", mais il se dit quand même que niveau mémoire les requêtes sur des tables InnoDB peuvent consommer jusqu'à 2 ou 3 fois plus de mémoires. (Donc dans le cas de notre amis, toujours si il n'a pas de table transactionnel, ça peut l’intéresser).
Cette différence se fait surement sur le fait qu'en InnoDB les requêtes sont transactionnels, possibilité de roll-back et avec gestion des clé étrangères (avec vérification de cohérence). De ce point de vue, InnoDB est plus "sûr" pour l'intégrité... Maintenant si tu dois faire une recherche sur une table qui contient des millions de lignes... MyIsam sera moins gourmand donc plus rapide. (Mais possibilité de crasher le serveur)
__________________
L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com