
{"id":912,"date":"2010-05-28T13:05:16","date_gmt":"2010-05-28T12:05:16","guid":{"rendered":"http:\/\/dasini.net\/blog\/?p=912"},"modified":"2010-05-28T13:05:16","modified_gmt":"2010-05-28T12:05:16","slug":"audit-mysql-tmp_table_size-max_heap_table_size","status":"publish","type":"post","link":"https:\/\/dasini.net\/blog\/2010\/05\/28\/audit-mysql-tmp_table_size-max_heap_table_size\/","title":{"rendered":"Audit MySQL &#8211; tmp_table_size &#038; max_heap_table_size"},"content":{"rendered":"<p>Je suis amen\u00e9 \u00e0 r\u00e9aliser r\u00e9guli\u00e8rement des audits de serveurs MySQL.Voici le premier volet d&rsquo;une s\u00e9rie d&rsquo;articles o\u00f9 je vais essayer de vous donner quelques points cl\u00e9s pour mieux comprendre le fonctionnement de MySQL.<\/p>\n<p>La configuration du serveur est un des points que je regarde, et l&rsquo;une des erreurs les plus courantes concerne le param\u00e9trage des options <a title=\"tmp_table_size\" href=\"http:\/\/dev.mysql.com\/doc\/refman\/5.5\/en\/server-system-variables.html#sysvar_tmp_table_size\" target=\"_blank\">tmp_table_size<\/a> et <a title=\"max_heap_table_size\" href=\"http:\/\/dev.mysql.com\/doc\/refman\/5.5\/en\/server-system-variables.html#sysvar_max_heap_table_size\" target=\"_blank\">max_heap_table_size<\/a>.<\/p>\n<address><strong><span style=\"color: #0000ff;\">tmp_table_size<\/span><\/strong><span style=\"color: #0000ff;\"> permet de fixer la taille maximale au-del\u00e0 de laquelle les tables temporaires en m\u00e9moire cr\u00e9\u00e9es par MySQL (avec le moteur Memory) se transforment en table MyISAM en migrant les donn\u00e9es sur le disque. <\/span><strong><span style=\"color: #0000ff;\">max_heap_table_size<\/span><\/strong><span style=\"color: #0000ff;\"> permet de fixer la taille maximale des tables avec pour moteur de stockage Memory (Heap est l&rsquo;ancien nom de Memory).<\/span><\/address>\n<div><a title=\"Audit et optimisation - MySQL 5; Bonnes pratiques pour l'administrateur\" href=\"http:\/\/dasini.net\/blog\/bibliotheque\/#audit_optimisation_mysql5\" target=\"_blank\"><em><strong>Extraits du livre \u00ab\u00a0Audit et optimisation &#8211; MySQL 5; Bonnes pratiques pour l&rsquo;administrateur\u00a0\u00bb<\/strong><\/em><\/a><\/div>\n<div><\/div>\n<div><em><br \/>\n<\/em><\/div>\n<div>Ce qui est important de savoir c&rsquo;est que <strong>la limite des tables temporaires en m\u00e9moire cr\u00e9\u00e9es par MySQL est la plus petite de ces deux valeurs<\/strong>. Ce que je vois souvent dans les fichier de configurations, c&rsquo;est un\u00a0tmp_table_size \u00e0 64 Mo (par exemple) et un max_heap_table_size qui lui n&rsquo;y figure pas et qui par\u00a0cons\u00e9quent\u00a0prend \u00e7a valeur par d\u00e9faut, c&rsquo;est \u00e0 dire <strong>16Mo<\/strong>. Votre table temporaire cr\u00e9\u00e9e par le serveur (lors de votre GROUP BY par exemple) sera sur disque d\u00e8s 16Mo de donn\u00e9es et non 64 Mo comme vous le pensiez.<\/div>\n<div>Alors pourquoi faut il limiter le nombre de tables temporaires cr\u00e9\u00e9es sur le disque ? Tous simplement car <strong>sur disque,\u00a0le temps d&rsquo;ex\u00e9cution de la requ\u00eate sera beaucoup, beaucoup plus long, de l&rsquo;ordre de fois 10 voir fois 100<\/strong> !<\/div>\n<div><\/div>\n<div>Lorsque vous renseignez l&rsquo;option tmp_table_size, pensez \u00e9galement \u00e0 donner la m\u00eame valeur \u00e0 l&rsquo;option max_heap_table_size.<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Je suis amen\u00e9 \u00e0 r\u00e9aliser r\u00e9guli\u00e8rement des audits de serveurs MySQL.Voici le premier volet d&rsquo;une s\u00e9rie d&rsquo;articles o\u00f9 je vais essayer de vous donner quelques points cl\u00e9s pour mieux comprendre le fonctionnement de MySQL.<\/p>\n<p>La configuration du serveur est un des points que je regarde, et l&rsquo;une des erreurs les plus courantes concerne le param\u00e9trage des options tmp_table_size et max_heap_table_size.<\/p>\n<p>tmp_table_size permet de fixer la taille maximale au-del\u00e0 de laquelle les tables temporaires en m\u00e9moire cr\u00e9\u00e9es par MySQL (avec le moteur Memory) se transforment en table MyISAM en migrant les donn\u00e9es sur le disque. max_heap_table_size permet de fixer la taille maximale des tables avec pour moteur de stockage Memory (Heap est l&rsquo;ancien nom de Memory).<br \/>\nExtraits du livre \u00ab\u00a0Audit et optimisation &#8211; MySQL 5; Bonnes pratiques pour l&rsquo;administrateur\u00a0\u00bb<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"categories":[88,158,8],"tags":[159,161,160],"class_list":["post-912","post","type-post","status-publish","format-standard","hentry","category-astuce","category-audit","category-mysql","tag-audit-mysql","tag-max_heap_table_size","tag-tmp_table_size"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9LfWW-eI","jetpack-related-posts":[{"id":1102,"url":"https:\/\/dasini.net\/blog\/2011\/08\/29\/duplicate-key-cause-par-un-select\/","url_meta":{"origin":912,"position":0},"title":"Duplicate key caus\u00e9 par un SELECT","author":"Olivier DASINI","date":"29 ao\u00fbt 2011","format":false,"excerpt":"Parmi les erreurs courantes en MySQL, ont trouve la fameuse ERROR 1062 (23000): Duplicate entry '2984' for key 'PRIMARY' caus\u00e9e par la tentative d'insertion d'une donn\u00e9es, d\u00e9j\u00e0 pr\u00e9sente, dans un colonne ayant une contrainte d'unicit\u00e9. Dans la m\u00eame famille il y a aussi l'erreur 1022...","rel":"","context":"Dans &quot;Astuce&quot;","block_context":{"text":"Astuce","link":"https:\/\/dasini.net\/blog\/category\/astuce\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":817,"url":"https:\/\/dasini.net\/blog\/2009\/11\/09\/audit-et-optimisation-mysql-5\/","url_meta":{"origin":912,"position":1},"title":"Audit et optimisation MySQL 5","author":"Olivier DASINI","date":"9 novembre 2009","format":false,"excerpt":"Arnaud Gadal DBA MySQL \u00e0 Virgin Mobile, Pascal Borghino architecte base de donn\u00e9es \u00e0 Yahoo! (mes potos de dbnewz) et moi, venons juste de terminer l'\u00e9criture d'un livre consacr\u00e9 \u00e0 l'audit et \u00e0 l'optimisation d'un serveur MySQL. A travers cet ouvrage, nous avons essay\u00e9s de synth\u00e9tiser nos diff\u00e9rentes exp\u00e9riences pour\u2026","rel":"","context":"Dans &quot;Divers&quot;","block_context":{"text":"Divers","link":"https:\/\/dasini.net\/blog\/category\/divers\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1370,"url":"https:\/\/dasini.net\/blog\/2013\/01\/30\/full-table-scan-vs-full-index-scan-part2-2\/","url_meta":{"origin":912,"position":2},"title":"Full table scan vs Full index scan part2-2","author":"Olivier DASINI","date":"30 janvier 2013","format":false,"excerpt":"2\/ FTS ou FIS Avant de r\u00e9pondre explicitement \u00e0 la question, un petit zoom sur l\u2019une des nombreuses nouveaut\u00e9s de MySQL 5.6. La commande EXPLAIN s\u2019est enrichie de la clause format=json. Elle permet d\u2019avoir une version un peu plus d\u00e9taill\u00e9e que l\u2019EXPLAIN classique. Query 1\/ EXPLAIN format=json SELECT d,avg(price) FROM\u2026","rel":"","context":"Dans &quot;optimisation&quot;","block_context":{"text":"optimisation","link":"https:\/\/dasini.net\/blog\/category\/optimisation\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":857,"url":"https:\/\/dasini.net\/blog\/2010\/03\/09\/audit-et-optimisation-mysql-5-2\/","url_meta":{"origin":912,"position":3},"title":"Sortie du livre: Audit et optimisation &#8211; MySQL 5","author":"Olivier DASINI","date":"9 mars 2010","format":false,"excerpt":"Pascal Borghino, Olivier Dasini, Arnaud Gadal et Eyrolles sont heureux de vous annoncer la sortie du livre Audit et optimisation MySQL 5. A l'occasion du salon Solutions Linux\/Open Source qui se tiendra du 16 au 18 mars \u00e0 Paris Expo-Porte de Versailles, cet ouvrage sera disponible en exclusivit\u00e9 et en\u2026","rel":"","context":"Dans &quot;Divers&quot;","block_context":{"text":"Divers","link":"https:\/\/dasini.net\/blog\/category\/divers\/"},"img":{"alt_text":"Bonnes pratiques pour l'administrateur","src":"https:\/\/i0.wp.com\/dasini.net\/blog\/wp-includes\/images\/blog\/OptimiMySQL5_400x238.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":985,"url":"https:\/\/dasini.net\/blog\/2010\/10\/22\/cest-dans-les-vieux-pots\/","url_meta":{"origin":912,"position":4},"title":"C&rsquo;est dans les vieux pots&#8230; ?","author":"Olivier DASINI","date":"22 octobre 2010","format":false,"excerpt":"J'ai\u00a0eu r\u00e9cemment \u00e0 intervenir sur un de nos serveurs MySQL en production. L'une de nos \u00e9quipes m'a remont\u00e9 le fait que la commande SELECT n'affichait pas plus de 1000 enregistrements sur\u00a0certaines des tables de la base ! J'ai instinctivement pens\u00e9 \u00e0 un probl\u00e8me de corruptions de tables, j'ai donc lanc\u00e9\u2026","rel":"","context":"Dans &quot;MySQL&quot;","block_context":{"text":"MySQL","link":"https:\/\/dasini.net\/blog\/category\/mysql\/"},"img":{"alt_text":"MySQL 3.22.32, commande help dans le client texte","src":"https:\/\/i0.wp.com\/dasini.net\/blog\/wp-includes\/images\/blog\/MySQL-3.22.32_status_min.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":756,"url":"https:\/\/dasini.net\/blog\/2009\/09\/08\/forum-mysql-12-et-13-novembre-2009\/","url_meta":{"origin":912,"position":5},"title":"Forum MySQL: 12 et 13 Novembre 2009","author":"Olivier DASINI","date":"8 septembre 2009","format":false,"excerpt":"L\u2019association LeMug.fr (MySQL User Group francophone) organisera son forum MySQL avec l\u2019aide de l\u2019Association Fran\u00e7aise des Utilisateurs de PHP (http:\/\/www.afup.org) les 12 et 13 Novembre 2009 \u00e0 la Cit\u00e9 des Sciences et de l\u2019Industrie. Plusieurs conf\u00e9rences sont pr\u00e9vues sur la base de donn\u00e9es MySQL avec des intervenants de renom. Le\u2026","rel":"","context":"Dans &quot;Conf\u00e9rence&quot;","block_context":{"text":"Conf\u00e9rence","link":"https:\/\/dasini.net\/blog\/category\/conference\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts\/912","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/comments?post=912"}],"version-history":[{"count":6,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts\/912\/revisions"}],"predecessor-version":[{"id":918,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/posts\/912\/revisions\/918"}],"wp:attachment":[{"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/media?parent=912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/categories?post=912"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dasini.net\/blog\/wp-json\/wp\/v2\/tags?post=912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}