2. Sommaire
✔
Histoire
✔
Un choix
✔
En mode avancé
✔
En pratique
nAcademy – 17 Avril 2013
3. Histoire du début
L'origine Dates importantes
✔
Fondé par ✔
1983 – 1ère idée
✔
Monty Widenius ✔
Fondé en 1995
✔
David Axmark ✔
2007 Préparation pour
Nasdaq
✔
2008 Rachat par Sun
✔
2009 Sun racheté par
Oracle
✔
Promesse de Oracle sur
5 ans (fin 2009)
nAcademy – 17 Avril 2013
4. Et maintenant
✔
De nos jours... MySQL Forks
✔
N° 1 dans le monde ✔
MySQL Oracle
✔
50k Download (depuis ✔
Drizzle
2003) ✔
Percona
✔
+ 13M installation active ✔
MariaDB
nAcademy – 17 Avril 2013
7. Les grandes dates de MySQL
✔
1983 ✔
2008 MySQL 5.1GA(Sun)
✔
1995 Création de MySQL ✔
2010 MySQL 5.5 GA
(Oracle)
✔
1999 MySQL 3.23
✔
2011 Modules de codes
✔
2000 InnoDB
source fermé
✔
2003 MySQL 3.23 GA ✔
2013 MySQL 5.6 GA
✔
2004 MySQL 4.1 GA ✔
??? MySQL 5.7
✔
2005 Oracle avec InnoDB
✔
2005 MySQL 5.0 GA
nAcademy – 17 Avril 2013
8. Que trouve-t-on dans MySQL 5.6 ?
✔
Optimisation ✔
Sous requêtes (Subquery)
✔
Exécution requêtes ✔
In-to-exists
✔
Plus disponibilité
✔
Semi-join
✔
Performance schéma
✔
Materialization
Amélioration
Amélioration
✔
✔
✔
Lecture de lignes avec intervalle
✔
Mode séquentielle au lieu aléatoire ✔
PERFORMANCE_SCHEMA
✔
Index Condition Pushdown (ICP)
✔
Amélioration des petites LIMIT
✔
Information_schema
✔
Fonctionnalité ✔
Scalability
✔
MemcacheD API innodb ✔
Support des Logs
✔
SHA 256 authentification
✔
Microsecond Time précision
✔
Data dictionary cache
✔
Interface NoSQL ✔
Group commit
nAcademy – 17 Avril 2013
10. Drizzle les points forts
✔
Mi 2008 début ✔
Version redessinée de
MySQL 6.0
✔
Mars 2011 1ère version
GA ✔
Basé sur Micro-kernel
+ simple & + léger
✔
En ligne de commande
✔
BDD du coté serveur
✔
GPL v2
nAcademy – 17 Avril 2013
12. Les étapes Percona Server
✔
Dec 2008 : 1ère released ✔
XtraDB au lieu de InnoDB
✔
2010 Percona 5.5 ✔
Plus d'instrumentation
✔
Juin 2013 Percona 5.6 ✔
Nombreux outils
✔
Amélioration Restart
✔
Performance
✔
Statistiques
nAcademy – 17 Avril 2013
20. En un mot... MariaDB vs MySQL
✔
Plus de storages
✔
Vitesse
✔
Innodb, replication, stockage...
✔
Nombreuses extensions et fonctionnalités
✔
Colonnes virtuelles, colonne dynamique, multi...
✔
Plus de tests
✔
Tests correctifs, réactivités...
✔
Code source ouvert
✔
Développé par la communauté
nAcademy – 17 Avril 2013
22. Connecteurs
✔
PHP (driver natif) → BSD licence
✔
Python
✔
Ruby
✔
.NET avec MyODBC
✔
JDBC (basé sur drizzle driver)
✔
C
✔
Oracle connector (licence GPL)
Tous sont LGPL → Aucune licence commerciale
nAcademy – 17 Avril 2013
23. Storages engines 1/4
✔
A partir de MariaDB 5.3
Cassandra SE ✔
NoSQL / NewSQL
✔
Données non structurées
✔
Réplication rapide
✔
Assurer l'intégration des
données SQL / NoSQL
✔
Mapping possible
nAcademy – 17 Avril 2013
25. Storages engines 3/4
➢
Cassandra ✔
MariaDB 10.0
➢
TokuDB
✔
Lecture / Ecriture / MAJ
➢
Connect TXT
✔
✔
DBF
✔
.INI
✔
.XML
✔
ODBC
✔
Locale ou distant
✔
Possible de faire le sien
nAcademy – 17 Avril 2013
26. Storages engines 4/4
➢
Cassandra
➢
TokuDB
✔
PBXT (Désactiver 5.5)
✔
XtraDB (old innoDB)
➢
Connect ✔
FederatedX
A partir de 5.1 ✔
Aria (old MyISAM)
nAcademy – 17 Avril 2013
27. Storages engines 4/4
➢
Cassandra
➢
TokuDB
✔
OQGraph (moteur info)
✔
SphinxSE (=search)
➢
Connect
A partir de 5.1
A partir de 5.2
nAcademy – 17 Avril 2013
28. Colonnes dynamiques
✔
Pont entre les BDD relationnelles et non
relationnelles
✔
Toutes les colonnes stockées dans un « blob »
✔
Possibilité de le manipuler
✔
Possibilité de créer des index Virtuels
nAcademy – 17 Avril 2013
29. Création d'une colonne dynamique
CREATE TABLE t1 ( COLUMN_CREATE(
ID int column_nr,
auto_increment value [as type],
primary key, [
Type_id int, column_nr,
Prix decimal(7,2), value [as type]
extra blob ],
); ...)
INSERT into t1 values (NULL, 1 , 10, COLUMN_CREATE(1, 'bleu', 2 , 'M'));
INSERT into t1 values (NULL, 2 , 400, COLUMN_CREATE(3, 'RAM', 5 , 800));
UPDATE t1 SET extra = COLUMN_ADD(extra, 6 , 2048) WHERE id=2;
ID / Type_id / Prix Coloris / Taille / Matériel / Vide / hard / option
nAcademy – 17 Avril 2013
31. Subquery... MariaDB 5.3+ / MySQL 5.6
SELECT ...
FROM table1
WHERE table1_col IN (
SELECT table2_col
FROM table2
WHERE table2_subq)
AND table1_where;
Optimizer_switch='semijoin=on'
Optimizer_switch='semijoin=on'
Materialization=on / /off
Materialization=on off
in_to_exists = on/off
in_to_exists = on/off
tmp_table_size
tmp_table_size
max_heap_table_size
max_heap_table_size
nAcademy – 17 Avril 2013
32. MariaDB 10.0
✔
Moteur de table (storages engines) natif
✔
Réplication multisource
✔
NOW() à la place de DATETIME
✔
Amélioration des informations erreurs
✔
Amélioration schéma de performance
✔
InnoDB
✔
Replication
✔
Statistics & Monitoring
✔
Optimizer
✔
Performance
nAcademy – 17 Avril 2013
33. Performance
nAcademy – 17 Avril 2013 http://blog.mariadb.org/mariadb-5-3-optimizer-benchmark/
36. Exemple 1 : Wampserver
✔
DL MariaDB (http://mariadb.org)
✔
Installer dans 1 dossier MySQL
✔
Déplacer les BDD sauvegardées data
✔
Lancer Wampserver
nAcademy – 17 Avril 2013
37. Exemple 2 : PHPServer
✔
DL PHPServer
http://www.treshaut.net/viewtopic.php?t=28&p=71
✔
Installation
nAcademy – 17 Avril 2013
39. Exemple 3 : Linux
✔
sudo apt-get install mariadb-server mariadb-client
✔
Vous retrouvez :
✔
/etc/mysql/my.cnf
✔
> mysql
✔
Au final
nAcademy – 17 Avril 2013
40. Outils
Backup Pour vos requêtes
✔
MySQLdump ✔
MySQL Workbench
✔
XtraBackup ✔
SkySQL visual Editor
(SQLYog)
✔
mysqlhotcopy (MyISAM)
✔
HeidiSQL
✔
XtraBackup manager
(PHP) ✔
PhpMyAdmin
✔
... ✔
Toad For MySQL
✔
...
nAcademy – 17 Avril 2013
43. Ceux qui ont sauté...
✔
Distributions ✔
Dec 2012 Wikipedia
✔
OpenSUSE 12.3 ✔
2013
✔
Gentoo ✔
Blog de Mozilla
✔
FreeBSD ✔
Google Developer
✔
Homebrew
✔
Slackware
✔
ArchLinux
✔
Fédora 7.0
✔
...
nAcademy – 17 Avril 2013