30 questions sur MySQL – Réponses de la partie 2

19 novembre 2010 par stephane

Voici les réponses de la 2è partie de notre quiz. Là encore, des commentaires expliquent rapidement les réponses.

16- a : Le nom d’hôte n’étant pas spécifié, ce sera donc localhost. Et pour MySQL, cela indique que le client cherche à se connecter à travers une socket : le numéro de port est ignoré. Pour que le port soit pris en compte, il faut ajouter soit -h=127.0.0.1 soit –protocol=tcp

17- b : Conséquence : quand MySQL a besoin de créer une table temporaire de manière interne (pour un tri par exemple) et que la table contient un champ TEXT ou dérivé, elle est automatiquement créée sur disque et risque de poser des problèmes de performance

18- b : Et malheureusement, la taille du tablespace ne diminue pas !

19- a : Seuls les index des tables MyISAM peuvent être mis en cache par le serveur, les données ne peuvent l’être que par l’OS, ce qui est beaucoup moins efficace

20- b : Toutes les requêtes ne peuvent pas utiliser de requêtes préparées (ex : SELECT avec un LIMIT dynamique)

21- a : Cette option démarre une transaction et fait le dump à l’intérieur de cette transaction

22- b : On trouve également cette possibilité dans le Percona Server (http://www.percona.com/docs/wiki/percona-server:features:innodb_split_buf_pool_mutex)

23- c : Avec InnoDB, la clé primaire se retrouve automatiquement dans tout index secondaire, d’où l’intérêt aussi d’avoir une clé primaire aussi compacte que possible

24- b : InnoDB stocke les données avec la clé primaire, scanner les données revient donc à scanner la clé primaire

25- c : En particulier, si le tri se fait dans une table temporaire, vous verrez alors également la mention Using temporary

26- a :

27- b :

28- c : Avec MySQL 5.5 et la fonctionnalité de réplication semi-synchrone, on peut faire en sorte qu’un ou plusieurs esclaves n’aient jamais de retard sur le maître

29- b :

30- b : Données et index peuvent être fragmentées

Comme dans tout bon quiz, c’est le moment de faire un petit bilan :

Si vous avez moins de 10 bonnes réponses sur 30 : apparemment, ce n’était pas un bon jour pour vous. Allez, soyez persévérant, tout le monde a des choses à apprendre !

Si vous avez entre 10 et 20 bonnes réponses : manifestement, vous connaissez bien les bases de MySQL, mais il vous reste encore à vous frotter aux sujets complexes pour acquérir une bonne maîtrise du sujet.

Si vous avez entre 20 et 25 bonnes réponses : votre expérience et vos connaissances vous permettent de répondre à la plupart des problèmes que vous pourrez rencontrer avec MySQL. Encore un peu de patience et de travail et vous deviendrez un véritable expert.

Si vous avez plus de 25 bonnes réponses : MySQL n’a plus beaucoup de secrets pour vous. Bravo !

Alors, quel est votre score ?

Mots-clefs : ,

2 commentaires sur “30 questions sur MySQL – Réponses de la partie 2”

  1. Hicham dit :

    Bonjour,
    Si je peux me permettre de signaler une remarque pour la question :
    20- L’utilisation des requêtes préparées permet d’éliminer tout risque d’injection SQL.
    a) Vrai
    b) Faux

    Vous répondez par :
    20- b : Toutes les requêtes ne peuvent pas utiliser de requêtes préparées (ex : SELECT avec un LIMIT dynamique)

    A ce que pense : La PDO et le meilleur moyen de supprimer les risques injection SQL, si elle est bien fait (.. query->bindValue .. )

    Si je peux me permettre de vous demandez si les risques d’injection SQL sont éliminés à 100% par la PDO ? et si vous pouvez svp donner un exemple.

    Bien à vous !
    Hicham

  2. stephane dit :

    Tout est là : ‘La PDO [...], si elle est bien fait’.

    Il n’y a pas de technique miraculeuse pour empêcher les injections SQL, il faut être rigoureux !

Laisser une réponse