Displaying posts with tag: Optimisation (reset)
64bit VS 32bit

Je croyais jusqu’à tout récemment que la majorité des serveurs étaient tous en 64bit. La presque totalité des nouveaux hardware supportent le 64bit alors pourquoi installer un OS 32bit sur une machine 64bit ? Pour moi la question ne se posait même pas tellement la réponse me semblait évidente. Hé bien j’étais loin de la réalité.

En 5 mois, j’ai été témoin de 4 personnes (amis et connaissance d’IRC) ayant installé un OS 32 bit sur des machines 64bit. On pourrait croire que ce n’est pas tellement grave, puisque de toute façon il y a peu d’application développée spécifiquement pour les 64bit, et s’ils le sont, le gain de performance est à peu près imperceptible. C’est faux, complètement faux.

Il faut être très vigilant dans le choix de l’OS qu’on installe, surtout sur une machine qui sera dédiée à MySQL. Je vais vous expliquer pourquoi avec 2 exemples.

Cas #1.

[Lire plus]
Présentation : Optimiser MySQL

Optimiser sa base de donnée est l’obsession principale du DBA. Savoir identifier, anticiper et régler les problèmes de performances constituent une vrai valeur ajoutée et cela n’est pas donné à tout le monde.  Satisfaction personnelle, satisfaction des décideurs mais surtout satisfaction du client

http://dasini.net/blog/presentations/?#optimiser_mysql

Conférence MySQL / SUN à Paris, mercredi 19 novembre 2008

Mercredi 19 novembre 2008, MySQL/SUN organise sa deuxième conférence française.

Pourquoi y aller ?

  • Découvrir les meilleures pratiques pour déployer et gérer les applications MySQL à travers votre entreprise
  • Comprendre comment bénéficier des nouvelles technologies telles que memcached et MySQL Proxy
  • Obtenir des informations détaillées sur les nouvelles fonctions, produits et services MySQL
  • Bénéficier de conseils de spécialistes sur l’optimisation des performances de MySQL
  • Développer vos compétences pour bâtir des applications MySQL fortement évolutives, fiables, sécurisées et à haute disponibilité
  • Écouter des témoignages clients sur la mise en place d’applications MySQL
[Lire plus]
MySQL: Le Book

Un gars sur IRC me demandait l’autre jour quel était “Le book” de MySQL. Il n’est évidemment pas possible de devenir expert en la matière avec un seul livre. Après quelques échanges, j’ai vite compris qu’il cherchait à améliorer l’utilisation qu’il en fait en tant que développeur d’application Web.

Je n’ai pas eu l’occasion (comprendre le temps) de lire des milliers de livres. Par contre dans ceux que je connais, je lui ai suggéré deux qui répondront bien à ce qu’il veut: MySQL 5.0 Certification Study Guide et MySQL Stored Procedure Programming.

Le Certification Study Guide se divise en deux parties distinctes: la …

[Lire plus]
Performance avec les procédures stockées

Les procédures stockées ont fait leur apparition avec MySQL 5.0. Une procédure stockée est un ensemble de plusieurs requêtes basées sur le standard sql:2003, regroupées ensemble et stockées dans la base de données. On leur attribut plusieurs avantages, notamment:

  • Elles réduisent le trafic réseau: on peut exécuter plusieurs requêtes avec un seul échange entre le client et le serveur.
  • Elles offrent un contrôle de sécurité: un user peut exécuter une procédure qui fait des requêtes sur une ou des tables auxquelles il n’a pas accès. Ces requêtes peuvent être en lecture ou en écriture.
  • Elles assurent le respect de logiques particulières ou d’intégrité.

J’avais un cas où une application devait faire très régulièrement (jusqu’à plusieurs fois par secondes) les 4 mêmes requêtes: SELECT.. UPDATE.. SELECT.. UPDATE. En déplaçant ces 4 requêtes dans une …

[Lire plus]
MySQL Performance Tuning à Montréal

Je vous parlais récemment du cours MySQL Performance Tuning, et contrairement à ce que je disais, j’ai pu y  assister. J’aurais aimé que le cours parle de la configuration du serveur sur lequel se trouve MySQL, car un OS bien optimisé va évidemment offrir beaucoup de performance à MySQL. Mais étant donné que plus d’une 20aine de plateformes sont supportés, nous pourrions en discuter pendant plusieurs semaines. En fait, le cours focus principalement sur la configuration et l’utilisation qu’on en fait.

Il n’y a pas d’option magique à activer pour que MySQL performe bien. Il n’y a pas non plus d’outil statistique comme ceux d’Oracle qui permet automagiquement de comprendre la charge de travail et s’ajuster en conséquence (Notez cependant que c’est un feature prévu avec Falcon). Le Tuning avec MySQL est une question de feeling. Lorsqu’on connaît comment le serveur est fait, qu’on connaît tous les …

[Lire plus]
Raid, Cache et BBU

Je vous parlais récemment de Sysbench, aujourd’hui je vais vous montrer comment il m’a aidé à résoudre un problème. Tout d’abord, je dois vous expliquer le problème initial. Je reçois un nouveau serveur qui sera le Master de notre environnement de pré-production, une bête dans son genre: Dual Quad Xeon 2Ghz, 32Go de RAM, 4 disques scsi montés en RAID5. Après avoir installé un backup, je lance un script qui fait des modifications massives sur les données dans le but de mesurer à quel point le nouveau serveur est performant.

Surprise ! Le script était excessivement plus lent que d’habitude. J’ai fouillé un peu et j’ai constaté que le IOwait était étrangement élevé. Après quelques recherches infructueuses sur google pour des problèmes de MySQL avec un IOwait élevé, je me suis connecté sur IRC, …

[Lire plus]
Optimisez vos requêtes en fonction des index

Aujourd’hui, je vais expliquer comment tirer avantage des index avec certains types de requête.
Nous avons une table client avec un monstrueux index nommé “nom” que voici: nom, prenom, entreprise, telephone. Nous avons un champ de recherche dans une page Web qui nous permet de trouver un client à partir de son prénom ou son nom.

On veut trouver une personne qui a le nom “Phil”:
SELECT SQL_NO_CACHE * FROM client
WHERE groupe = 1
AND ( nom LIKE 'phil%' OR prenom LIKE 'phil%')
---
(490 total, Query took 0.4523 sec)
(490 total, Query took 0.4511 sec)
(490 total, Query took 0.4879 sec)
(490 total, Query took 0.4455 sec)

Dans cette requête, aucun index n’est utilisé. À cause de la condition OR, l’optimiseur estime qu’il est plus efficace de faire un table scan que d’utiliser l’index nom, même si celui-ci possède les champs …

[Lire plus]
Trouver les indexes inutiles

Arjen Lentz a écrit un article très intéressant pour trouver les indexes inutilisés. En gros, il explique la règle du 30% pour les indexes. Pour ceux qui ne la connaissent pas, les indexes ne sont pas utilisés si environs 30% des valeurs indexées sont les mêmes. Arjen propose donc une requête qui permet de trouver quel indexes sont inférieurs à 30% grâce à la cardinalité.

Mais attention! Sa technique est un peu controversée. Premièrement, il faut savoir que les 30% sont une approximation. Les indexes peuvent être utilisés si 25% ou 40% des valeurs sont pareil.

J’ai fait mes propres tests sur la base de données avec laquelle je travail au boulot et les résultats m’ont assez étonné. EXPLAIN indiquait qu’un index avec une cardinalité de 4 (la table possédait 3422 000 rows) était utilisé. C’est beaucoup plus que 30%. J’ai …

[Lire plus]
Optimiser une requête SQL

Depuis quelques temps, un serveur qui héberge quelques petits sites s’est mis à monter régulièrement en charge, sans augmentation de trafic, ni changements applicatifs. J’ai laissé traîner les choses, ne sachant pas d’où venait le souci. Il aura fallu cinq minutes de travail et l’utilisation de la commande shell top, de la directive de configuration... Read more »

Cet article Optimiser une requête SQL est apparu en premier sur EnPause.fr.