IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

Critique de MySQL !


Sujet :

MySQL

  1. #1
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 986
    Billets dans le blog
    6
    Par défaut Critique de MySQL !
    Bonjour,

    un article qui va faire grincer des dents...
    http://blog.developpez.com/sqlpro/p9...udre-aux-yeux/

    Et il est de ma plume !

    Bref, j'attends vos commentaires.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 195
    Par défaut
    Certes MySQL a ses défauts mais pour ma part je ne m'en plains pas

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 986
    Billets dans le blog
    6
    Par défaut
    Questions subsidiaires :
    1) quelle volume de base de données (en Go) manipulez vous ?
    2) combien d'utilisateurs lancent en moyenne des requêtes simultanées ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Par défaut
    Quelques corrections :

    - les informations sont générées à la demande depuis les fichiers .frm
    Les fichiers .frm sont propres au moteur MyISAM. Chacun des autres moteur a son propre système.
    - pré verrouillage des tables
    InnoDB permet de ne verrouiller que les lignes, à travers le mécanisme transactionnel.

    - aucune possibilité d'utiliser un langage externe
    Si, les UDF sont des fonctions écrites dans un langage externe et compilées.

    pas de collation insensible aux accents
    C'est une erreur. latin1_swedish_ci (la collation par défaut), latin1_german1_ci, utf8_general_ci, utf8_unicode_ci sont des collations insensibles aux accents.

    - pas d'opérateur ensemblistes comme INTERSECT ou EXCEPT
    C'est exact, mais ta formulation laisse penser qu'il n'y a pas du tout d'opérateur ensembliste, alors que l'UNION est bien là. Donc je dirais plutôt "absence des opérateurs ensemblistes INTERSECT et EXCEPT".

    - pas de groupage OLAP
    Il faudrait préciser... si tu parles de WITH ROLLUP et WITH CUBE, ils sont bien présents dans MySQL.

    - pas de point de sauvegarde (SAVEPOINT)
    en fait, si.
    [EDIT] cf http://dev.mysql.com/doc/refman/5.0/en/savepoint.html

    - pas d'authentification possible par certificats
    Là je marche sur des oeufs parce que je ne connais quasiment rien au sujet... mais le DBA peut exiger le SSL, donc j'imagine des certificats ?

    Syntaxe de GRANT dans MySQL :
    Citation Envoyé par doc MySQL
    GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...
    ON [object_type] {tbl_name | * | *.* | db_name.*}
    TO user [IDENTIFIED BY [PASSWORD] 'password']
    [, user [IDENTIFIED BY [PASSWORD] 'password']] ...
    [REQUIRE
    NONE |
    [{SSL| X509}]
    [CIPHER 'cipher' [AND]]
    [ISSUER 'issuer' [AND]]
    [SUBJECT 'subject']]
    [WITH with_option [with_option] ...]

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 986
    Billets dans le blog
    6
    Par défaut
    J'ai corrigé quelques éléments, mais à nouveau MySQL se fout du monde. Par exemple pour CUBE et ROLLUP c'est en pratique inexploitable car il manque la fonction GROUPINGS !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 195
    Par défaut
    Alors pour répondre à tes questions
    Questions subsidiaires :
    1) quelle volume de base de données (en Go) manipulez vous ?
    2) combien d'utilisateurs lancent en moyenne des requêtes simultanées ?
    1) Volume de mes base de données environ 1Go
    2) Au maximum 5 utilisateurs lancent des requêtes en simultanées (et encore c'est rare qu'il y ait énormément du monde en même temps )

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 986
    Billets dans le blog
    6
    Par défaut
    1 Go c'est de la très petite base !
    5 utilisateurs et pas de requêtes simultané, c'est comme de manipuler des fichiers Cobol....
    La différence commencera a se faire sentir quand vous aurez une base qui dépasse de loin la RAM (50 Go par exemple) et plus de 50 users....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Par défaut
    Je crains que tu n'aies omis de corriger les deux points suivants qui sont faux :
    Citation Envoyé par Antoun
    Citation Envoyé par SQLPro
    pas de collation insensible aux accents
    C'est une erreur. latin1_swedish_ci (la collation par défaut), latin1_german1_ci, utf8_general_ci, utf8_unicode_ci sont des collations insensibles aux accents.
    Citation Envoyé par Antoun
    Citation Envoyé par SQLPro
    - pas de point de sauvegarde (SAVEPOINT)
    en fait, si.
    [EDIT] cf http://dev.mysql.com/doc/refman/5.0/en/savepoint.html

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 986
    Billets dans le blog
    6
    Par défaut
    Sur les collations, vu la pauvreté de la chose, (un seule langue gérée le suédois) c'est inexploitable, donc fonctionnalité poudre aux yeux.
    A quand des collations French, german, italian, Spanish.... ?

    De la même façon pour les save point :

    "Beginning with MySQL 5.0.17, a new savepoint level is created when a stored function is invoked or a trigger is activated. The savepoints on previous levels become unavailable and thus do not conflict with savepoints on the new level. When the function or trigger terminates, any savepoints it created are released and the previous savepoint level is restored. "

    Autrement dit (et si j'ai bien compris), il n'est pas possible d'utiliser des SAVEPOINT à l'intérieur de procédures ou fonction, alors que le fait de piloter les transactions au sein du code serveur est le loin la fonction la plus intéressantes dans les SGBDR !

    Donc encore une fonctionnalité poudre aux yeux !

    A +
    ,
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  10. #10
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 414
    Par défaut
    De mon point de vue, apres une dizaine d'années passées en prestation et en fixe dans des contextes complexes, à fort volume de données (>x To) et à fort volumétrie transactionnelle (plusieurs milliers d'utilisateurs simultanés) , je remarque que l'utilisation de MySQL reste très marginal.

    J'ai vu du DB2, du Oracle, du SQLServer sur des applications de ce type mais pas encore de MySQL.
    Alors les défenseurs de MySQL vont nous sortir des articles pourris comme quoi Google ou Facebook utilisent .. Ils utilisent oui mais pour des besoins très spécifiques (bcp de lectures, et peu d'écritures, pas de besoin de transaction, etc...).
    Plus serieusement, sur des applications business ca reste assez marginal je pense.

    donc les entreprises en général ne s'y trompent pas et ont bien remarqué la pauvreté du SGBD qui effectivement ressemble plus à ce qu'on faisait dans les années 80 avec les fichiers VSAM sous OS/390 qu'aux SGBD actuels.

    Maintenant, il reste un choix judicieux pour des petites applications où bien souvent on déployait Oracle / SQL ou DB2 sous pretexte qu'on avait les licences mais pour lesquelles des SGBDR comme cela étaient inutiles et surdimensionnés.

  11. #11
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Sur les collations, vu la pauvreté de la chose, (un seule langue gérée le suédois) c'est inexploitable, donc fonctionnalité poudre aux yeux.
    A quand des collations French, german, italian, Spanish.... ?
    MySQL a les collations latin1_spanish, latin1_german1 et latin1_german2 (ainsi que, pour être complet, latin1_danish). Ces collations (et notamment german1) contiennent les règles pour les lettres accentuées utilisées en français.

    De manière générale, tu peux parfaitement dire que c'est de la poudre aux yeux, mais pas que ça n'existe pas.

    Citation Envoyé par SQLpro Voir le message
    De la même façon pour les save point :

    Autrement dit (et si j'ai bien compris), il n'est pas possible d'utiliser des SAVEPOINT à l'intérieur de procédures ou fonction, alors que le fait de piloter les transactions au sein du code serveur est le loin la fonction la plus intéressantes dans les SGBDR !
    En fait il n'est pas possible d'utiliser des SAVEPOINTs "when a stored function is invoked or a trigger is activated", donc dans un trigger ou une fonction. Mais c'est possible dans une procédure. En fait, dans un trigger ou une fonction, il n'est de tout façon pas possible de faire de COMMIT ou un ROLLBACK, l'interdiction des SAVEPOINTs va donc de soi.

    Là encore, tu peux dire que c'est de la poudre aux yeux, mais pas que ça n'existe pas !

  12. #12
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 986
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Antoun Voir le message
    MySQL a les collations latin1_spanish, latin1_german1 et latin1_german2 (ainsi que, pour être complet, latin1_danish). Ces collations (et notamment german1) contiennent les règles pour les lettres accentuées utilisées en français.
    En fait il n 'y a pas de collation qui gère les accents ( 'fêtées' = fetees' par exemple) et il n'y a pas de collation spécifique au français. Par exemple en utilisant une collation qu'advient t-il du c cédille ? (j'ai pas fait le test....)


    Citation Envoyé par Antoun Voir le message
    En fait il n'est pas possible d'utiliser des SAVEPOINTs "when a stored function is invoked or a trigger is activated", donc dans un trigger ou une fonction. Mais c'est possible dans une procédure. En fait, dans un trigger ou une fonction, il n'est de tout façon pas possible de faire de COMMIT ou un ROLLBACK, l'interdiction des SAVEPOINTs va donc de soi.
    OK, je prend note. Peut tu poster en commentaire dans le blog ?

    A +


    Là encore, tu peux dire que c'est de la poudre aux yeux, mais pas que ça n'existe pas ![/QUOTE]
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  13. #13
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    En fait il n 'y a pas de collation qui gère les accents ( 'fêtées' = fetees' par exemple)
    Si, comme te le prouvera ce petit test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Create table testcoll (txt varchar(30) charset latin1 collate latin1_german1_ci, descr varchar(30)) ;
     
    insert into testcoll (txt, descr) values ('fêtées', 'accents saisis') ;
    insert into testcoll (txt, descr) values (CONCAT('f', char(234 using latin1), 't', char(233 using latin1), 'es'), 'codes ASCII') ;
    insert into testcoll (txt, descr) values ('fetees', 'sans accent') ;
     
    select txt, descr from testcoll where txt = 'fetees' ;
    Par exemple, les collations latin1_swedish_ci (la collation par défaut), latin1_german1_ci, utf8_general_ci, utf8_unicode_ci, etc., sont insensibles aux accents.

    Citation Envoyé par SQLpro Voir le message
    et il n'y a pas de collation spécifique au français. Par exemple en utilisant une collation qu'advient t-il du c cédille ? (j'ai pas fait le test....)
    Les collations insensibles aux accents sont également insensibles à la cédille, au tilde, etc. En fait, il faudrait dire "insensibles aux signes diacritiques".


    Citation Envoyé par SQLpro Voir le message
    OK, je prend note. Peut tu poster en commentaire dans le blog ?
    OK, comme tu préfères !

  14. #14
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 986
    Billets dans le blog
    6
    Par défaut
    Dans le principe, le test devrait être le suivant :

    1 - jeu d'essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE testcoll 
    (txt1 varchar(30) collate Collation_insensible_aux_diacritiques_sensible_a_la_casse, 
     txt2 varchar(30) collate Collation_sensible_aux_diacritiques_insensible_a_la_casse);
     
    INSERT INTO testcoll (txt1, txt2) VALUES ('fêtées', 'fetees') ;
    INSERT INTO testcoll (txt1, txt2) VALUES ('fêtées', 'FETEES') ;
    Les tests :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    -- test1
    SELECT *
    FROM   testcoll 
    WHERE  txt1 = 'Fetees'
     
    --> réponse1 :
    txt1                           txt2
    ------------------------------ ------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    -- test2
    SELECT *
    FROM   testcoll 
    WHERE  txt1 = 'fetees'
     
    --> réponse2 :
    txt1                           txt2
    ------------------------------ ------------------------------
    fêtées                         fetees
    fêtées                         FETEES
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    -- test3
    SELECT *
    FROM   testcoll 
    WHERE  txt1 = 'Fetees' COLLATE Collation_insensible_aux_diacritiques_insensible_a_la_casse,
     
    --> réponse3 :
    txt1                           txt2
    ------------------------------ ------------------------------
    fêtées                         fetees
    fêtées                         FETEES
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    -- test4
    SELECT *
    FROM   testcoll 
    WHERE  txt1 = txt2
     
    -- Reponse4 :
    Erreur : conflit de collation entre Collation_insensible_aux_diacritiques_sensible_a_la_casse,
             et 'Collation_sensible_aux_diacritiques_insensible_a_la_casse' dans l'opération =.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    -- test5
    SELECT *
    FROM   testcoll 
    WHERE  txt1 = txt2 COLLATE Collation_insensible_aux_diacritiques_sensible_a_la_casse
     
    -- réponse 5
    txt1                           txt2
    ------------------------------ ------------------------------
    fêtées                         fetees

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    -- test6
    SELECT *
    FROM   testcoll 
    WHERE  txt1 = txt2 COLLATE Collation_insensible_aux_diacritiques_insensible_a_la_casse
     
    -- réponse 6 :
    txt1                           txt2
    ------------------------------ ------------------------------
    fêtées                         fetees
    fêtées                         FETEES
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  15. #15
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 986
    Billets dans le blog
    6
    Par défaut
    Autre test intéressant à faire pour voir comment il gère sont classement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    CREATE TABLE testclass 
    (txt_CI_AI varchar(30) collate French_CI_AI,
     txt_CS_AI varchar(30) collate French_CS_AI,
     txt_CI_AS varchar(30) collate French_CI_AS,
     txt_CS_AS varchar(30) collate French_CS_AS);
    -- remplacer les collations par celle de MySQL en :
    -- CI : Case Insensitive, 
    -- CS : case Sensitive, 
    -- AI : Accent Insensitive,
    -- AS : accent Sensitive,
     
    INSERT INTO testclass (txt_CI_AI) VALUES ('c');
    INSERT INTO testclass (txt_CI_AI) VALUES ('C');
    INSERT INTO testclass (txt_CI_AI) VALUES ('ç');
    INSERT INTO testclass (txt_CI_AI) VALUES ('Ç');
    INSERT INTO testclass (txt_CI_AI) VALUES ('a');
    INSERT INTO testclass (txt_CI_AI) VALUES ('A');
    INSERT INTO testclass (txt_CI_AI) VALUES ('à');
    INSERT INTO testclass (txt_CI_AI) VALUES ('À');
    INSERT INTO testclass (txt_CI_AI) VALUES ('s');
    INSERT INTO testclass (txt_CI_AI) VALUES ('S');
    INSERT INTO testclass (txt_CI_AI) VALUES ('t');
    INSERT INTO testclass (txt_CI_AI) VALUES ('T');
    INSERT INTO testclass (txt_CI_AI) VALUES ('ß');
    INSERT INTO testclass (txt_CI_AI) VALUES ('b');
    INSERT INTO testclass (txt_CI_AI) VALUES ('B');
    INSERT INTO testclass (txt_CI_AI) VALUES ('d');
    INSERT INTO testclass (txt_CI_AI) VALUES ('D');
    UPDATE testclass
    SET txt_CS_AI = txt_CI_AI,
    txt_CI_AS = txt_CI_AI,
    txt_CS_AS = txt_CI_AI;[/CODE]


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    -- test1 :
    SELECT *
    FROM   testclass
    ORDER  BY txt_CI_AI
     
    -- résultat1 :
    txt_CI_AI                      txt_CS_AI                      txt_CI_AS                      txt_CS_AS
    ------------------------------ ------------------------------ ------------------------------ ------------------------------
    a                              a                              a                              a
    A                              A                              A                              A
    à                              à                              à                              à
    À                              À                              À                              À
    b                              b                              b                              b
    B                              B                              B                              B
    c                              c                              c                              c
    C                              C                              C                              C
    ç                              ç                              ç                              ç
    Ç                              Ç                              Ç                              Ç
    d                              d                              d                              d
    D                              D                              D                              D
    s                              s                              s                              s
    S                              S                              S                              S
    ß                              ß                              ß                              ß
    t                              t                              t                              t
    T                              T                              T                              T
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    -- test2 :
    SELECT *
    FROM   testclass
    ORDER  BY txt_CS_AI
     
    -- résultat2 :
    txt_CI_AI                      txt_CS_AI                      txt_CI_AS                      txt_CS_AS
    ------------------------------ ------------------------------ ------------------------------ ------------------------------
    a                              a                              a                              a
    A                              A                              A                              A
    à                              à                              à                              à
    À                              À                              À                              À
    b                              b                              b                              b
    B                              B                              B                              B
    c                              c                              c                              c
    C                              C                              C                              C
    ç                              ç                              ç                              ç
    Ç                              Ç                              Ç                              Ç
    d                              d                              d                              d
    D                              D                              D                              D
    s                              s                              s                              s
    S                              S                              S                              S
    ß                              ß                              ß                              ß
    t                              t                              t                              t
    T                              T                              T                              T

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    -- test3 :
    SELECT *
    FROM   testclass
    ORDER  BY txt_CI_AS
     
    -- résultat3 :
    txt_CI_AI                      txt_CS_AI                      txt_CI_AS                      txt_CS_AS
    ------------------------------ ------------------------------ ------------------------------ ------------------------------
    a                              a                              a                              a
    A                              A                              A                              A
    à                              à                              à                              à
    À                              À                              À                              À
    b                              b                              b                              b
    B                              B                              B                              B
    c                              c                              c                              c
    C                              C                              C                              C
    ç                              ç                              ç                              ç
    Ç                              Ç                              Ç                              Ç
    d                              d                              d                              d
    D                              D                              D                              D
    s                              s                              s                              s
    S                              S                              S                              S
    ß                              ß                              ß                              ß
    t                              t                              t                              t
    T                              T                              T                              T

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    -- test4 :
    SELECT *
    FROM   testclass
    ORDER  BY txt_CS_AS
     
    -- résultat4 : 
     
    txt_CI_AI                      txt_CS_AI                      txt_CI_AS                      txt_CS_AS
    ------------------------------ ------------------------------ ------------------------------ ------------------------------
    a                              a                              a                              a
    A                              A                              A                              A
    à                              à                              à                              à
    À                              À                              À                              À
    b                              b                              b                              b
    B                              B                              B                              B
    c                              c                              c                              c
    C                              C                              C                              C
    ç                              ç                              ç                              ç
    Ç                              Ç                              Ç                              Ç
    d                              d                              d                              d
    D                              D                              D                              D
    s                              s                              s                              s
    S                              S                              S                              S
    ß                              ß                              ß                              ß
    t                              t                              t                              t
    T                              T                              T                              T
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  16. #16
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Dans le principe, le test devrait être le suivant :

    1 - jeu d'essai :
    [code]CREATE TABLE testcoll
    (txt1 varchar(30) collate Collation_insensible_aux_diacritiques_sensible_a_la_casse,
    txt2 varchar(30) collate Collation_sensible_aux_diacritiques_insensible_a_la_casse);
    Toutes les collations sensibles à la casse (CS) de MySQL sont également sensibles aux diacritiques (AS). Donc ton premier cas, CS_AI n'existe pas.

    Quant à ton second cas, CI_AS, il ne permet pas de répondre à la question d'origine, qui était l'existence de collation AI. Ceci dit, mon script suffit à prouver cette existence.

  17. #17
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 986
    Billets dans le blog
    6
    Par défaut
    Je vais pousser les tests dès que j'ai un moment, mais il me semble encore une fois que le travail est à moitié fait : soit c'est CI+AI soit c'est CS+AS, mais pas possible d'avoir CI+AS ou CS+AI....

    Et quid du classement ? Ou place t-il la cédille et le etset ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  18. #18
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Par défaut
    Intéressant comme critique, mais j'ai quelques arguments en faveur de mySQL (que j'utilise pour un intranet pro, avec une base MyISAM de 40 Go, quasi-exclusivement en lecture, 50 utilisateurs dont 5-10 concurrents) :
    - c'est très très rapide en interrogation même sur des tables plus grandes que la RAM
    - j'y ai trouvé la fonction GROUP_CONCAT qui manque cruellement en oracle et sql server
    - surtout, c'est facile à installer, à configurer, et on trouve très facilement de l'aide pour des fonctionnalités d'utilisation/administration basiques.

    Donc OK, c'est peut-être pas aussi complet ou rapide que d'autres SGBDR, mais pour certains usages, même pour des volumétries moyennes, c'est un outil adapté.

    EDIT : le jour où mon boss, dont l'équipe n'utilisait qu'Access, m'a demandé de développer un serveur web + SGBD sans budget ni compétences, c'est MySQL qui m'a paru le plus simple, le mieux documenté et avec la meilleure communauté pour débuter. Et CA, c'est un argument de poids !

  19. #19
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 986
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par guidav Voir le message
    Intéressant comme critique, mais j'ai quelques arguments en faveur de mySQL (que j'utilise pour un intranet pro, avec une base MyISAM de 40 Go, quasi-exclusivement en lecture, 50 utilisateurs dont 5-10 concurrents) :
    - c'est très très rapide en interrogation même sur des tables plus grandes que la RAM
    Le problème de MySQL n'est pas tant la rapidité de lecture, que celle transactionnelle. En lecture il est plutôt bon. En écriture en concurrence c'est catastrophique. A plus de 5 utilisateur il plonge dramatiquement ! Alors que Oracle ou SQL Server parviennent à plusieurs milliers d'utilisateurs simultanément, sans broncher....

    - j'y ai trouvé la fonction GROUP_CONCAT qui manque cruellement en oracle et sql server
    Cette fonction est anti-relationnelle et je n'ai cessé de dénoncer son imbécilité ! En effet, les bases de données reposent sur la théorie des ensemble qui suppose une absence d'ordre totale dans les lignes des tables (la clause ORDER BY de SQL ne fait pas partie de l'algèbre relationnelle - c'est une clause cosmétique). Or cette pseudo fonction d'agrégation nécessite un ordre de lecture sinon elle sortira n'importe quoi....
    C'est pour cela que cette horreur n'existe pas dans les SGBDR bien conçus, car ces derniers présentent des commandes SQL de la norme 1999 que MySQL n'implémente toujours pas et qui permettent justement de traiter correctement et de manière relationnelle ce problème, notamment les requêtes récursives : http://sqlpro.developpez.com/cours/s...te-recursives/
    Pour un exemple de l'équivalent de GROUP_CONCAT, lisez l'exemple n°IV-D. Quatrième exemple : concaténer des mots pour former une phrase

    Bref, MySQL c'est plus de 10 ans de retard dans le simple langage SQL !!!

    - surtout, c'est facile à installer, à configurer, et on trouve très facilement de l'aide pour des fonctionnalités d'utilisation/administration basiques.
    Je memarre de la soit disante facilité comparée à SQL Server par exemple... Mais bon, peut être suis-je suggestif !

    Donc OK, c'est peut-être pas aussi complet ou rapide que d'autres SGBDR, mais pour certains usages, même pour des volumétries moyennes, c'est un outil adapté.
    Oui, pour faire des petits sites web en lecture seule (ou presque) comme spip que j'utilise, c'est très bien !

    EDIT : le jour où mon boss, dont l'équipe n'utilisait qu'Access, m'a demandé de développer un serveur web + SGBD sans budget ni compétences, c'est MySQL qui m'a paru le plus simple, le mieux documenté et avec la meilleure communauté pour débuter. Et CA, c'est un argument de poids !
    Vous avez d'autres outils comme PostGreSQL qui est un vrai gratuit (mySQL étant payant, soit en code, soit en monaie).
    Et de nombreux SGBDR payant proposent des version gratuites de moins en moins limitées (exemple SQL Server 2008 R2 express : nombre de bases illimitées, taille maxi des bases 10 Go.).

    Enfin, la qualité de la communauté MySQL est très faible. Le niveau est plus que débutant et le nombre de papiers qui vont de l'erreur à l'imbécilité en passant par le mensonge est légion. Chose que l'on trouve rarement dans les communautés Oracle ou SQL Server !


    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  20. #20
    Membre actif
    Inscrit en
    Mai 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 27
    Par défaut
    Bonjour,

    Concernant les collations je crois que vous avez tort :
    latin1_general_ci est "CI_AS"

    (mais effectivement, il n'y a rien de "CS_AI")

Discussions similaires

  1. Critique de MySQL !
    Par SQLpro dans le forum Débuter
    Réponses: 0
    Dernier message: 21/07/2010, 11h51
  2. [Critique] Mémento MySQL de Rodolphe Rimelé
    Par Alain Defrance dans le forum Contribuez
    Réponses: 0
    Dernier message: 10/05/2009, 18h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo