Archive for the ‘MySQL’ Category

25
fév

Percona à Paris le 7 mars 2011

   Posted by: freshdaz Tags: ,

Le MySQL User Group Francophone (LeMug.fr) en collaboration avec Openday, vous convient à une conférence gratuite le 7 mars 2011.

Morgan Tocker, consultant et formateur chez Percona (experts en technologies MySQL et performance InnoDB) nous parlera d’XtraDB (moteur de stockage fork d’InnoDB) et d’optimisation avec MySQL.

 


Lundi 7 Mars 2011, à partir de 19h au café Dune à Paris

Au programme

Infos pratiques

Date & heure : lundi 7 Mars à partir de 19h

Lieu : Café Dune
18 av. Claude Vellefaux
75010 Paris

Accès : Metro Goncourt / Col. Fabien

Tarif : gratuit

Inscriptions :  == COMPLET ==

 

Bio de Morgan Tocker:
Morgan is the Director of Training at Percona, Inc. His interests in
MySQL include Performance Tuning, scalability and High Availability.
He is a regular speaker on these topics in the United States and
Canada.
Before joining Percona, Morgan worked as a Technical Instructor for
MySQL (and then Sun Microsystems) in Canada where he taught courses on
High Availability, Performance Tuning and Database Administration. He
has also previously worked in the MySQL Support Team, and provided
DRBD support.

 

 

1
fév

Un disque SSD comme buffer pour InnoDB

   Posted by: freshdaz Tags:

MySQL, la base de données open source la plus populaire, inspire toujours autant les développeurs. David, propose un patch qui permet de créer un buffer pool supplémentaire pour InnoDB, qui est stocké sur un disque SSD ou de la mémoire flash.

Cette fonctionnalité créée un thread qui en tache de fond récupère les pages de données virées du buffer pool pour les copier dans le buffer pool supplémentaire du SSD au lieu du disque classique. L’idée étant d’éviter les accès au disque classique ( beaucoup plus lents notamment lors d’accès aléatoires).

De plus selon ses tests, les résultats restent également bien meilleurs avec une configuration SSD et un seul buffer pool.

Sysbench OLTP benchmark

Server: Intel(R) Xeon Quad-Core E5405 2.00GHz X 2
Database: ~19G ( created by sysbench, row: 80000000 )
disk: 4 disk RAID 10 flash storage: Intel X25-M 80G SSD
test command:
sysbench –test=oltp –oltp-table-size=80000000 –oltp-read-only=off –init-rng=on –num-threads=16 –max-requests=0 –oltp-dist-type=uniform –max-time=7200 –mysql-user=root –mysql-socket=/tmp/mysql.sock –db-driver=mysql run

innodb_buffer_pool innodb_secondary_buffer_pool read-write(tps)
8G 0G 55.03
8G(sbtest on SSD) 0G 60.8
8G 30G 86.23

la suite…

A tester :)

30
déc

Bench MariaDB vs MySQL

   Posted by: freshdaz Tags: , , ,

Avec les sorties de MySQL 5.5.8 et de MariaDB 5.2.4, l’écosystème SGBDR open source se retrouve donc avec 3 bases (n’oublions pas MySQL 5.1.53) en GA. J’ai eu envi de voir le résultat des améliorations apportées par les équipes  d‘Oracle sur la première version majeure post rachat (MySQL 5.5.8) et celles apportées par la communauté et les équipes de Monty program pour la version basée sur MySQL 5.1.53  (MariaDB 5.2.4).

De nombreuses optimisations ont eu lieu sur la version MySQL 5.5.8, ainsi que sur le moteur de stockage InnoDB. Idem pour MariaDB et la version InnoDB  de Percona qu’elle embarque (XtraDB).

Un des gros inconvénients des benchs, c’est qu’ils ne veulent souvent rien dire dans l’absolu. En d’autres termes, le résultat obtenu valide les hypothèses retenues qui ont rarement la chance de s’appliquer totalement à votre cas d’utilisation. Mais faut bien essayer de quantifier les choses ! Dans l’optique d’avoir un résultat le plus objectif possible, j’ai effectué mes tests avec 3 outils de bench open source pour bases de données différents:

Les tests comportent des lectures, des écritures et des transactions plus complexes et ils se déroulent seulement sur des table InnoDB.

La configuration des serveurs est très proche mais pas strictement identique car les paramètres ne sont pas tous les mêmes. Elle n’est pas orientée performances maximale, (ce n’était pas mon but) mais sécurité des données (plus proche de notre réalité de production).

La machine de test n’est qu’un PC (voir configuration ci dessous)

MySQL 5.1.53 vs MySQL 5.5.8 vs MariaDB 5.2.4

Configuration

# OS: Ubuntu  10.04 LTS
# Platform: x86_32
# CPU: Intel Core 2 Duo CPU T9550 @ 2.66GHz (x2)
# RAM: 3.4GB
# Disk(s): 1 x ATA Hitachi HTS723216L9A362
# # Versions : MySQL 5.1.53, MySQL 5.5.8, MariaDB 5.2.4
# # Moteur : Innodb

Résultats

dbt2

Transactions (plusieurs tables)

40 connexions simultanées

MySQL 5.5.8 est 19% plus rapide que MySQL 5.1.53

MariaDB 5.2.4 est 53% plus rapide que MySQL 5.1.53

150 connexions simultanées

MySQL 5.5.8 est 49% plus rapide que MySQL 5.1.53

MariaDB 5.2.4 est 59% plus rapide que MySQL 5.1.53

sysbench

Transactions (1 table)

40 connexions simultanées

MySQL 5.5.8 est 1969% plus rapide que MySQL 5.1.53

MariaDB 5.2.4 est 2271% plus rapide que MySQL 5.1.53

150 connexions simultanées

MySQL 5.5.8 est 287% plus rapide que MySQL 5.1.53

MariaDB 5.2.4 est 427% plus rapide que MySQL 5.1.53

Lectures simples

40 connexions simultanées

MySQL 5.5.8 est 14% moins rapide que MySQL 5.1.53

MariaDB 5.2.4 est 3% moins rapide que MySQL 5.1.53

150 connexions simultanées

MySQL 5.5.8 est 15% moins rapide que MySQL 5.1.53

MariaDB 5.2.4 est 2% moins rapide que MySQL 5.1.53

Lectures complexes

40 connexions simultanées

MySQL 5.5.8 est 12% moins rapide que MySQL 5.1.53

MariaDB 5.2.4 est 0.7% moins rapide que MySQL 5.1.53

150 connexions simultanées

MySQL 5.5.8 est 14% moins rapide que MySQL 5.1.53

MariaDB 5.2.4 est 5% moins rapide que MySQL 5.1.53

mysqlslap

Update primary key

40 connexions simultanées

MySQL 5.5.8 est 1793% fois plus rapide que MySQL 5.1.53

MariaDB 5.2.4 est 1954% fois plus rapide que MySQL 5.1.53

150 connexions simultanées

MySQL 5.1.53 => ERROR : Lock wait timeout exceeded; try restarting transaction

MariaDB 5.2.4 est 26% fois plus rapide que MySQL 5.5.8

Insert

40 connexions simultanées

MySQL 5.5.8 est 1595% fois plus rapide que MySQL 5.1.53

MariaDB 5.2.4 est 1731% fois plus rapide que MySQL 5.1.53

150 connexions simultanées

MySQL 5.5.8 est 4106% fois plus rapide que MySQL 5.1.53

MariaDB 5.2.4 est 4625% fois plus rapide que MySQL 5.1.53

Insert + Select

40 connexions simultanées

MySQL 5.5.8 est 1452% fois plus rapide que MySQL 5.1.53

MariaDB 5.2.4 est 1714% fois plus rapide que MySQL 5.1.53

150 connexions simultanées

MySQL 5.5.8 et MariaDB 5.2.4 sont 2400% fois plus rapide que MySQL 5.1.53

Select

40 connexions simultanées

MySQL 5.1.53 est 8% plus rapide que MariaDB 5.2.4.

MySQL 5.1.53 est 9% plus rapide que MySQL 5.5.8.

150 connexions simultanées

MySQL 5.1.53 et MariaDB 5.2.4 sont 15% plus rapide que MySQL 5.5.8.

Select on primary key

40 connexions simultanées

MySQL 5.1.53 est 4% plus rapide que MariaDB 5.2.4.

MySQL 5.1.53 est 10% plus rapide que MySQL 5.5.8.

150 connexions simultanées

MySQL 5.1.53 et MariaDB 5.2.4 sont 7% plus rapide que MySQL 5.5.8.


Résumé

MariaDB 5.2.4 et MySQL 5.5.8 ont de façon particulièrement significative, de meilleures performances en écritures que MySQL 5.1.53 (avantage à MariaDB 5.2.4).

En ce qui concerne, les lectures, les performances de MariaDB 5.2.4 et de MySQL 5.1.53 sont très proches (léger avantage à MySQL 5.1.53). MySQL 5.5.8 est un peu en retrait.

En fonction des résultats des benchs, mon classement est le suivant :

  1. MariaDB 5.2.4
  2. MySQL 5.5.8
  3. MySQL 5.1.53

Je dois avouer, que je suis surpris par l’ampleur des écarts, notamment en écritures ! D’autres tests seront fait sur une machine plus costaud et dans un environnement plus proche de notre production.

Fichiers

Configuration de MySQL 5.1.53

Configuration de MySQL 5.5.8

Configuration de MariaDB 5.2.4

Résultats brut

15
déc

MySQL 5.5 est disponible

   Posted by: freshdaz Tags:

Oracle annonce la sortie de la toute nouvelle version de la base de données open source MySQL 5.5.8. Cette version est une G.A. ((Generally Available), en d’autre terme la version à utiliser en production.

Voici le communiqué en version originale:

MySQL 5.5 Now Generally Available

New Performance and Scalability Enhancements Highlight Oracle’s Continued Investment in MySQL

Redwood Shores, Calif. – December 15, 2010

News Facts

  • Underscoring its commitment to deliver new innovations to MySQL users, Oracle today announced the general availability of MySQL 5.5.
  • MySQL 5.5 delivers significant enhancements enabling users to improve the performance and scalability of web applications across multiple operating environments, including Windows, Linux, Oracle Solaris, and Mac OS X.
  • The MySQL 5.5 Community Edition, which is licensed under the GNU General Public License (GPL), and is available for free download, includes InnoDB as the default storage engine.
  • This release benefitted from substantial user community participation and feedback on the MySQL 5.5 Release Candidate, helping to provide a more broadly tested product.
  • For more details, join the MySQL Technology Update webcast on Dec. 15th at 10:00am US, Pacific Time.

Enhances Capabilities for Web Applications

  • The 5.5 release of MySQL provides the customization capabilities and scalability that MySQL DBAs and developers need to more efficiently build, maintain and scale web applications.
  • With the MySQL 5.5 release users benefit from:
    • Improved performance and scalability: MySQL Database and InnoDB storage engine have been enhanced to provide optimum performance and scalability when running on the latest multi-CPU and multi-core hardware and operating systems. In addition, with release 5.5, InnoDB is now the default storage engine for the MySQL Database, delivering ACID transactions, referential integrity and crash recovery.
    • Higher availability: New semi-synchronous replication and Replication Heart Beat improve failover speed and reliability.
    • Improved usability: Improved index and table partitioning, SIGNAL/RESIGNAL support and enhanced diagnostics, including a new PERFORMANCE_SCHEMA, improve the manageability of MySQL 5.5.

MySQL 5.5 Delivers Major Performance Gains

  • In recent benchmarks, the MySQL 5.5 release candidate delivered significant performance improvements compared to MySQL 5.1. Results included:
    • On Windows: Up to 1,500 percent performance gains for Read/Write operations and up to 500 percent gain for Read Only.(1)
    • On Linux: Up to 360 percent performance gain in Read/Write operations and up to 200 percent improvement in Read Only.(2)

la suite

9
déc

MariaDB 5.2.4 et 5.1.53 sont disponibles

   Posted by: freshdaz Tags:

The MariaDB community is happy to announce two new releases hot off
the compiler!

MariaDB is a branch of the MySQL database which includes all major
open source storage engines, myriad bug fixes, and many community
patches.

The MariaDB 5.1 release continues with MariaDB 5.1.53, while the 5.2
series moves to 5.2.4. As always, detailed release notes are available
and are highly recommended, especially for those considering an
upgrade.

http://kb.askmonty.org/v/mariadb-5153-release-notes

http://kb.askmonty.org/v/mariadb-524-release-notes

These releases both address a couple of issues in both series that may
affect a large number of users. First, a regression in MySQL relating
to starting as a service on Windows has been patched. You will no
longer need the –console option.

https://bugs.launchpad.net/maria/+bug/678047

http://bugs.mysql.com/bug.php?id=56821

Second, a rather nasty little bug prevented compiling PHP against
MariaDB. This has been fixed in these new releases, as well.

https://bugs.launchpad.net/maria/+bug/674812

Binary builds for many popular platforms, Linux packages, and source
code can be found mirrored worldwide.

http://askmonty.org/wiki/MariaDB:Download

MariaDB: Community developed, feature enhanced, backward compatible.


./k

Kurt von Finck
Chief Community And Communications Officer
Monty Program
http://montyprogram.com

22
oct

C’est dans les vieux pots… ?

   Posted by: freshdaz

J’ai eu récemment à intervenir sur un de nos serveurs MySQL en production. L’une de nos équipes m’a remonté le fait que la commande SELECT n’affichait pas plus de 1000 enregistrements sur certaines des tables de la base !

J’ai instinctivement pensé à un problème de corruptions de tables, j’ai donc lancé un SHOW TABLE STATUS… et j’ai eu la réponse suivant:

mysql> SHOW TABLE STATUS;
ERROR 1064: You have an error in your SQL syntax near 'TABLE STATUS' at line 1

Même réponse avec un SHOW CREATE TABLE…

En fait la raison de cette erreur 1064 est la suivante:

MySQL 3.22.32, commande help dans le client texte

MySQL 3.22.32, commande status dans le client texte

Version du serveur MySQL 3.22.32 !

Je ne vous raconte pas l’émotion :) L’uptime était de près de 400 jours et le principe « tant que ça marche, on touche pas ! » est pleinement appliqué.

Alors pour ne rien vous cacher, la 3.22 n’est pas la norme chez nous :) , les nouveaux projets partent avec de la 5.1 (parfois encore avec de la 5.0).

La 3.22.32 est sortie le 14 février 2000. Voici l’annonce de sa sortie, effectuée par un certain Monty http://lists.mysql.com/announce/45.

MySQL 3.22.32, commande help dans le client texte

MySQL 3.22.32, commande help dans le client texte

La commande SHOW VARIABLES renvoie 37 résultats (274 en 5.1.50)

MySQL 3.22.32, commande show variables dans le client texte

MySQL 3.22.32, commande show variables dans le client texte

P.S. Fin mot de cette histoire, un autre symptôme donnait l’erreur suivante:

ERROR 1114: The table 'SQL5662e654_0' is full

Le problème a été réglé, en augmentant la variable tmp_table_size.

20
sept

Online Schema Change for MySQL

   Posted by: freshdaz Tags: ,

It is great to be able to build small utilities on top of an excellent RDBMS. Thank you MySQL.

This is a small but complex utility to perform online schema change for MySQL. We call it OSC and the source is here.

Some ALTER TABLE statements take too long form the perspective of some MySQL users. The fast index create feature for the InnoDB plugin in MySQL 5.1 makes this less of an issue but this can still take minutes to hours for a large table and for some MySQL deployments that is too long.

A workaround is to perform the change on a slave first and then promote the slave to be the new master. But this requires a slave located near the master. MySQL 5.0 added support for triggers and some replication systems have been built using triggers to capture row changes. Why not use triggers for this? The openarkkit toolkit did just that with oak-online-alter-table. We have published our version of an online schema change utility (OnlineSchemaChange.php aka OSC).

The remainder of this document is copied from the internal documents that were written for this project. Note that this project was done by Vamsi and he did an amazing job with it. In addition to writing the tool, writing the docs and doing a lot of testing he also found and fixed or avoided a few bugs in MySQL to make sure OSC would be reliable.

http://www.facebook.com/notes/mysql-at-facebook/online-schema-change-for-mysql/430801045932

22
juil

Vulnérabilités MySQL 5.1.47

   Posted by: freshdaz

Les versions antérieurs à 5.1.47 MySQL souffrent de vulnérabilités:

  • déni de service. Cet effet peut se produire lorsque le serveur de base de données reçoit un paquet dont la taille est supérieure à la taille maximale autorisée.
  • débordement de mémoire (buffer overflow). Cet effet se produit lorsque l’argument passé à la commande « COM_FILED_LIST » est très long. L’utilisateur doit cependant être authentifié pour exploiter cette vulnérabilité.

Versions affectées:  Versions antérieures à 5.1.47

Criticité: Moyenne

Solution: Mises à jour disponibles sur les différentes distributions

MySQL souffre d’une vulnérabilité de déni de service. Cet effet peut se produire lorsque

le serveur de base de données reçoit un paquet dont la taille est supérieure à la taille

maximale autorisée.

29
juin

MySQL Admin Cookbook

   Posted by: freshdaz

MySQL Admin Cookbook est un livre qui s’adresse aussi bien à l’administrateur de base de données débutant qu’ à celui qui cherche à améliorer ses compétences techniques.

Avec son contenu riche en exemples prêts à l’emploi, présentés sous la forme de « recettes de cuisine » (qui permet d’associer une problématique donnée à sa solution), MySQL Admin Cookbook se veut résolument orienté pratique, d’ailleurs  les exemples et les astuces y sont légions.

Les principaux thèmes abordés sont:

  • La réplication
  • Les index
  • Sauvegarde et restauration
  • Gestion des données et des utilisateurs
  • La supervision
  • Configuration de MySQL

J’ai bien aimé: la variété des sujets et l’angle pratique abordé.

J’ai moins aimé: certaines parties un peu basique

Le site de l’éditeur: Packt Publishing Limited

MySQL Admin Cookbook

MySQL Admin Cookbook

  • Editeur : Packt Publishing Limited
  • Langue : Anglais
  • ISBN-13: 978-1-847197-96-2
  • ISBN : 1847197965
  • 376 pages
  • Auteurs: Daniel Schneller, Udo Schwedt
  • Sortie: Mars 2010

Je suis amené à réaliser régulièrement des audits de serveurs MySQL.Voici le premier volet d’une série d’articles où je vais essayer de vous donner quelques points clés pour mieux comprendre le fonctionnement de MySQL.

La configuration du serveur est un des points que je regarde, et l’une des erreurs les plus courantes concerne le paramétrage des options tmp_table_size et max_heap_table_size.

tmp_table_size permet de fixer la taille maximale au-delà de laquelle les tables temporaires en mémoire créées par MySQL (avec le moteur Memory) se transforment en table MyISAM en migrant les données sur le disque. max_heap_table_size permet de fixer la taille maximale des tables avec pour moteur de stockage Memory (Heap est l’ancien nom de Memory).

Ce qui est important de savoir c’est que la limite des tables temporaires en mémoire créées par MySQL est la plus petite de ces deux valeurs. Ce que je vois souvent dans les fichier de configurations, c’est un tmp_table_size à 64 Mo (par exemple) et un max_heap_table_size qui lui n’y figure pas et qui par conséquent prend ça valeur par défaut, c’est à dire 16Mo. Votre table temporaire créée par le serveur (lors de votre GROUP BY par exemple) sera sur disque dès 16Mo de données et non 64 Mo comme vous le pensiez.
Alors pourquoi faut il limiter le nombre de tables temporaires créées sur le disque ? Tous simplement car sur disque, le temps d’exécution de la requête sera beaucoup, beaucoup plus long, de l’ordre de fois 10 voir fois 100 !
Lorsque vous renseignez l’option tmp_table_size, pensez également à donner la même valeur à l’option max_heap_table_size.