Aller au contenu

« InnoDB » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Supprimé l'autre phrase qui indiquait quand InnoDB était devenu le moteur par défaut et les liens qui étaient morts.
Dszalkowski (discuter | contributions)
Ajout d'informations sur la gestion des verrous et compléments opérationnels sur la sauvegarde à chaud des fichiers.
Ligne 13 : Ligne 13 :
|consulté le = 2008-07-31
|consulté le = 2008-07-31
}}
}}
</ref>. Son principal avantage par rapport aux autres moteurs de stockage de MySQL est qu'il permet des [[Transaction (base de données)|transactions]] [[Propriétés ACID|ACID]] (atomiques, cohérentes, isolées et durables), ainsi que la gestion des [[clé étrangère|clés étrangères]] (avec vérification de la cohérence).
</ref>. Son principal avantage par rapport aux autres moteurs de stockage de MySQL est qu'il permet des [[Transaction (base de données)|transactions]] [[Propriétés ACID|ACID]] (atomiques, cohérentes, isolées et durables), ainsi que la gestion des [[clé étrangère|clés étrangères]] (avec vérification de la cohérence). Autrement dit, InnoDB est un moteur de bases de données relationnelles et transactionnelles, à l'image de celui utilisé par son concurrent Open Source [[PostgreSQL]].

En matière de gestion de verrous, InnoDB permet de lire les données alors que les tables sont verrouillées à l'occasion de mises à jours (UPDATE) ou de suppression (DELETE) de données au travers de transactions (BEGIN, START TRANSACTION, COMMIT, ROLLBACK). En revanche, il n'y a aucune possibilité de réaliser des mises à jour et des suppressions concurrentes sur une même table. InnoDB ne propose pas de verrous sur lignes. Les seuls verrous qu'il sait poser sont des [https://dev.mysql.com/doc/refman/8.0/en/innodb-locking.html#innodb-shared-exclusive-locks verrous exclusifs sur table].


InnoDB est devenu un produit d'[[Oracle Corporation]], qui a acquis {{Lien|langue=en|trad=Innobase|fr=Innobase Oy}} en octobre 2005<ref>
InnoDB est devenu un produit d'[[Oracle Corporation]], qui a acquis {{Lien|langue=en|trad=Innobase|fr=Innobase Oy}} en octobre 2005<ref>
Ligne 34 : Ligne 36 :
Ce moteur de base de données utilise aussi deux fichiers de logs, d'habitude ib_logfile0 et ib_logfile1. Les fichiers de définitions de table .frm sont également dans un dossier au nom de la base comme pour [[MyISAM]].
Ce moteur de base de données utilise aussi deux fichiers de logs, d'habitude ib_logfile0 et ib_logfile1. Les fichiers de définitions de table .frm sont également dans un dossier au nom de la base comme pour [[MyISAM]].


Les fichiers données de InnoDB ne peuvent pas être facilement sauvegardés par copie de fichiers, il en résulterait très probablement une corruption des données. Il est possible de le faire si le serveur est arrêté mais pas autrement. Remarquez que les fichiers de logs et les .frm sont importants et ne doivent pas être ignorés.
Les fichiers données de InnoDB ne peuvent pas être sauvegardés par copie de fichiers : il en résulterait une corruption de données. La seule façon de faire une copie consistante des fichiers à chaud est d'utiliser [https://www.percona.com/downloads/XtraBackup/LATEST/ Percona XtrabBackup] pour MySQL et [https://mariadb.com/kb/en/library/full-backup-and-restore-with-mariabackup/ Mariabackup] pour MariaDB. L'autre manière de faire une sauvegarde consistante est d'utiliser la commande [https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html mysqldump] en mode "[https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_single-transaction single transaction]". Remarquez que les fichiers de logs et les .frm sont importants et ne doivent pas être ignorés.


Depuis la version 5.6, une extension ''memcached'' au moteur InnoDB permet un accès aux données via une interface du type [[NoSQL]] permettant d'améliorer les performances. Non seulement les données sont accessibles en lecture et écriture avec les requêtes SQL classiques, mais il est possible d'y accéder de façon plus simple à l'aide d'une syntaxe du style « @@get key » évitant l'interprétation d'une requête par le [[Analyse syntaxique|parseur]]<ref>[https://blogs.oracle.com/mysqlinnodb/entry/nosql_to_innodb_with_memcached Oracle NoSQL to InnoDB with Memcached]</ref>.
Depuis la version 5.6, une extension ''memcached'' au moteur InnoDB permet un accès aux données via une interface du type [[NoSQL]] permettant d'améliorer les performances. Non seulement les données sont accessibles en lecture et écriture avec les requêtes SQL classiques, mais il est possible d'y accéder de façon plus simple à l'aide d'une syntaxe du style « @@get key » évitant l'interprétation d'une requête par le [[Analyse syntaxique|parseur]]<ref>[https://blogs.oracle.com/mysqlinnodb/entry/nosql_to_innodb_with_memcached Oracle NoSQL to InnoDB with Memcached]</ref>.

Version du 13 janvier 2019 à 06:23

InnoDB est un moteur de stockage pour les systèmes de gestion de base de données MySQL et MariaDB. Il est inclus et activé dans toutes les distributions fournies par MySQL AB depuis la version 4[1] et devient le moteur par défaut à partir de MySQL 5.5.5[2]. Son principal avantage par rapport aux autres moteurs de stockage de MySQL est qu'il permet des transactions ACID (atomiques, cohérentes, isolées et durables), ainsi que la gestion des clés étrangères (avec vérification de la cohérence). Autrement dit, InnoDB est un moteur de bases de données relationnelles et transactionnelles, à l'image de celui utilisé par son concurrent Open Source PostgreSQL.

En matière de gestion de verrous, InnoDB permet de lire les données alors que les tables sont verrouillées à l'occasion de mises à jours (UPDATE) ou de suppression (DELETE) de données au travers de transactions (BEGIN, START TRANSACTION, COMMIT, ROLLBACK). En revanche, il n'y a aucune possibilité de réaliser des mises à jour et des suppressions concurrentes sur une même table. InnoDB ne propose pas de verrous sur lignes. Les seuls verrous qu'il sait poser sont des verrous exclusifs sur table.

InnoDB est devenu un produit d'Oracle Corporation, qui a acquis Innobase Oy (en) en octobre 2005[3]. Le logiciel est sous double licence : il est distribué sous la GNU General Public License, mais des licences commerciales sont vendues pour des développements qui intégreraient InnoDB à des logiciels propriétaires (ce que la GPL ne permet pas)[4].

Toutes les bases de données sont stockées au même endroit. Par défaut dans le fichier ibdata1 qui, sous les systèmes de type Unix, se trouve généralement dans le dossier /var/lib/mysql/ . Il est également possible d'utiliser plusieurs fichiers ou même d'utiliser directement une ou plusieurs partitions sur le disque en mode RAW.

Ce moteur de base de données utilise aussi deux fichiers de logs, d'habitude ib_logfile0 et ib_logfile1. Les fichiers de définitions de table .frm sont également dans un dossier au nom de la base comme pour MyISAM.

Les fichiers données de InnoDB ne peuvent pas être sauvegardés par copie de fichiers : il en résulterait une corruption de données. La seule façon de faire une copie consistante des fichiers à chaud est d'utiliser Percona XtrabBackup pour MySQL et Mariabackup pour MariaDB. L'autre manière de faire une sauvegarde consistante est d'utiliser la commande mysqldump en mode "single transaction". Remarquez que les fichiers de logs et les .frm sont importants et ne doivent pas être ignorés.

Depuis la version 5.6, une extension memcached au moteur InnoDB permet un accès aux données via une interface du type NoSQL permettant d'améliorer les performances. Non seulement les données sont accessibles en lecture et écriture avec les requêtes SQL classiques, mais il est possible d'y accéder de façon plus simple à l'aide d'une syntaxe du style « @@get key » évitant l'interprétation d'une requête par le parseur[5].

Voir aussi

Références

  1. « InnoDB avec MySQL version 3.23 », Oracle (consulté le )
  2. (en) « Setting the Storage Engine », Oracle (consulté le )
  3. (en) « Oracle Announces the Acquisition of Open Source Software Company, Innobase », Oracle (consulté le )
  4. (en) « Licensing MySQL and InnoDB », InnoDB.com (consulté le )
  5. Oracle NoSQL to InnoDB with Memcached