1.9 Comparatif de MySQL avec les autres serveurs SQL
1 Informations générales
Manuel de Référence MySQL 4.1 : Version Française
->MySQL face à mSQL . Comparatif de MySQL avec PostgreSQL
|
1.9.1 MySQL face à mSQL
-
Performance
-
Pour un véritable test de vitesse, consultez la suite de test de
MySQL. La suite de tests comparatifs de MySQL .
Comme il n'y a pas de création de threads, que l'analyseur est plus
petit, et que les fonctionnalités sont moins nombreuses,
mSQL
devrait être plus rapide avec :
-
les tests qui réalisent des connexions répétées et qui n'exécutent
qu'une simple requête à chaque fois.
-
les opérations d'
INSERT
dans des tables très simples, avec peu
de colonnes et d'index.
-
les commandes de
CREATE TABLE
et
DROP TABLE
.
-
les commandes
SELECT
sur tout ce qui n'est pas indexé (un scan de table
est très facile).
Comme ces opérations sont très simples, il est difficile d'être meilleur
lorsque les coûts d'administration sont bien plus forts. Une fois la connexion
établie, le serveur MySQL devrait être bien plus rapide.D'un autre coté, le serveur MySQL est plus rapide que
mSQL
(et
que les autres serveurs SQL) avec :
-
les opérations
SELECT
complexes.
-
les lectures de grands résultats (le serveur MySQL a un protocole plus rapide,
plus sûr et bien meilleur).
-
les tables à taille de chaînes variable, car le serveur MySQL a une gestion plus
efficace et utilise les colonnes
VARCHAR
indexées.
-
la gestion des tables avec de nombreuses colonnes.
-
la gestion des tables ayant des grandes lignes.
-
les commandes
SELECT
avec de nombreuses expressions.
-
les commandes
SELECT
sur de grandes tables.
-
la gestion de nombreuses connexions simultanées. Le serveur MySQL
est complètement multi-threadé. Chaque connexion possède son propre
thread, ce qui signifie qu'il y a pas d'attente entre les threads
(à moins que l'un d'entre eux modifie une table que l'autre veut
utiliser). En
mSQL
, une fois que la connexion a été établie,
les autres doivent attendre que la première ait fini, indépendamment
de la durée d'exécution de la requête. Lorsque la première connexion
se termine, le suivant peut être servi, tandis que les autres
attendent.
-
les jointures.
mSQL
peut devenir irrémédiablement lent si vous modifiez
l'ordre des tables dans la colonne
SELECT
. Dans la suite de test,
il s'est vu des tests 15000 fois plus lent que MySQL. Ceci est dû au
manque d'optimisateurs chez
mSQL
.
Toutefois, si vous avez placé les tables dans le bon ordre avec
mSQL
2 et que la clause
WHERE
est simple et utilise les
index, la jointure peut être plutôt rapide.
La suite de tests comparatifs de MySQL .
-
les clauses
ORDER BY
et
GROUP BY
.
-
la clause
DISTINCT
.
-
l'utilisation des colonnes de type
TEXT
et
BLOB
.
-
Support de SQL
-
-
GROUP BY
et
HAVING
.
mSQL
ne supporte pas du tout la clause
GROUP BY
.
MySQL supporte totalement la clause
GROUP BY
avec les clauses
HAVING
et les fonctions suivantes :
COUNT()
,
AVG()
,
MIN()
,
MAX()
,
SUM()
et
STD()
.
COUNT(*)
est
optimisée pour retourner très vite le résultat si
SELECT
lit les
lignes dans une table, qu'aucune autre colonne n'est lue, et qu'il n'y
a pas de clause
WHERE
.
MIN()
et
MAX()
accepte les chaînes
de caractères comme arguments.
-
Les
INSERT
et
UPDATE
avec calculs d'expression.
MySQL peut faire des calculs d'expression dans les commandes
INSERT
et
UPDATE
. Par exemple :
mysql> UPDATE SET x=x*10+y WHERE x<20;
|
- Aliasing.
MySQL supporte les alias de colonne.
- Identification simple des colonnes.
Avec MySQL, si un nom de colonne est unique dans les tables utilisées pour
une jointure, vous n'avez pas à utiliser son identifiant total.
-
SELECT
avec des fonctions
MySQL dispose de nombreuses fonctions (trop nombreuses à lister ici : voir Fonctions ).
-
Efficacité d'utilisation de l'espace disque
-
C'est à dire, comment pouvez-vous réduire la taille de vos tables ?MySQL a des types très précis, et vous pouvez créer des tables avec un
très petit espace. Un exemple de type de données pratique est le
type
MEDIUMINT
qui occupe 3 octets. Si vous avez 100 millions
d'enregistrement, économiser un octet par enregistrement est très
important.
mSQL2
a un jeu de type de données plus limité, ses tables sont donc
plus grosses.
-
Stabilité
-
Il est difficile de juger de cela objectivement. Pour un début sur
la stabilité du serveur MySQL, voyez Degré de stabilité de MySQL .
Nous n'avons aucune expérience avec la stabilité du code de
mSQL
, alors
nous ne nous prononceront pas là-dessus.
-
Prix
-
Un autre point important est la licence. MySQL dispose d'une licence
plus souple que
mSQL
, est il est aussi moins cher que
mSQL
. Quelque soit le produit que vous utilisez, n'oubliez pas
de prendre un contrat de support par email ou une licence commerciale.
-
interface Perl
-
MySQL a la même interface avec Perl que
mSQL
, avec des
fonctionnalités supplémentaires.
-
JDBC (Java)
-
MySQL supporte de nombreux pilotes JDBC :
-
le pilote mm : un pilote JDBC de type 4, écrit par Mark Matthews
mmatthew@ecn.purdue.edu . Il est publié sous licence LGPL.
-
Le pilote Resin : un pilote JDBC commercial et Open Source.
http://www.caucho.com/projects/jdbc-mysql/index.xtp
-
Le pilote gwe : une interface Java par GWE technologies (non supporté).
-
Le pilote jms : un pilote gwe amélioré par Xiaokun Kelvin ZHU
X.Zhu@brad.ac.uk (non supporté).
-
Le pilote twz : un pilote JDBC de type 4, écrit par Terrence W. Zellers
zellert@voicenet.com . Il est commercialisé, mais gratuit pour
les utilisations personnelles et éducationnelles (non supporté).
Le pilote recommandé est le pilote mm. Le pilote Resin est aussi bon
(les tests sont bons) mais nous n'avons pas reçu beaucoup d'informations
à son propos.Nous savons que
mSQL
a un pilote JDBC, mais nous n'avons pas l'expérience
pour le comparer.
-
Vitesse de développement
-
MySQL a une petite équipe de développeur, mais nous sommes très
habitués à coder en C et C++, très rapidement. Comme les
threads, les fonctions,
GROUP BY
et de nombreuses autres
fonctionnalités ne sont pas encore codées pour
mSQL
, il y a
beaucoup faire pour nous rattraper. Pour mesurer cela, vous pouvez
consulter le fichier d'historique de
mSQL
HISTORY
pour l'an
dernier, et le comparer avec la section news du manuel de référence
MySQL ( Historique des versions de MySQL ). Il est alors assez évident de voir qui se développe
plus vite.
-
Programmes utilitaires
-
Les deux projets
mSQL
et MySQL ont des contributions de
tiers très intéressantes. Comme il est plus facile de porter vers les
versions plus récentes (depuis
mSQL
vers MySQL), presque toutes
les applications intéressantes de
mSQL
sont disponibles pour MySQL.
MySQL est livré avec un programme simple
msql2mysql
qui corrige les
différences de syntaxe entre
mSQL
et MySQL pour la plupart des
fonctions de l'API C.
Par exemple, il modifie les occurrences de
msqlConnect()
en
mysql_connect()
. Convertir un programme client de
mSQL
vers
MySQL requiert un effort minimal.
Sommaire :
|