2008-09-15 5 views
9

On m'a demandé de présélectionner certains candidats pour un poste de DBA/développeur MySQL pour un rôle qui nécessite un ensemble de compétences au niveau de l'entreprise.Questions d'entrevue MySQL

Je suis moi-même une personne de SQL Server donc je sais ce que je rechercherais de ce point de vue en ce qui concerne l'évolutivité/design etc mais y a-t-il quelque chose de spécifique que je devrais demander à MySQL?

Je voudrais idéalement leur poser des questions sur les fonctionnalités au niveau de l'entreprise de MySQL qu'elles n'utiliseraient typiquement que lorsque vous travaillez sur une grande base de données. Besoin de séparer les développeurs de l'entreprise de la maison/petit site genre de gars.

Merci.

+0

J'ai écrit quelques-uns ici: http://www.alphadevx.com/a/468-Technical-screening-questions-for-a-MySQL-DBA – alphadevx

Répondre

39

Bien que SQL Server et MySQL soient tous deux des RDBM, MySQL possède de nombreuses fonctionnalités uniques qui peuvent illustrer la différence entre novice et expert.

Votre première étape devrait être de s'assurer que le candidat est à l'aise avec la ligne de commande, et pas seulement avec les outils GUI tels que phpMyAdmin. Pendant l'interview, essayez de demander au candidat d'écrire du code MySQL pour créer une table de base de données ou ajouter un nouvel index. Ce sont des requêtes très basiques, mais exactement le type que les outils graphiques empêchent les novices de maîtriser. Vous pouvez revérifier les réponses avec quelqu'un qui est plus familier avec MySQL. Le candidat peut-il démontrer sa connaissance du fonctionnement de JOIN? Par exemple, essayez de demander au candidat de construire une requête qui renvoie toutes les lignes de la table 1 lorsqu'aucune entrée correspondante n'existe dans la table 2. La réponse devrait impliquer un LEFT JOIN.

Demandez au candidat de discuter des stratégies de sauvegarde et des différentes forces et faiblesses de chacune. Le candidat doit savoir que la sauvegarde directe des fichiers de la base de données n'est pas une stratégie efficace à moins que toutes les tables soient MyISAM. Le candidat doit absolument mentionner mysqldump comme une pierre angulaire pour les sauvegardes. Les solutions de sauvegarde plus sophistiquées incluent ibbackup/innobackup et les instantanés LVM. Idéalement, le candidat devrait également discuter de la manière dont les sauvegardes peuvent affecter les performances (une solution courante consiste à utiliser un serveur esclave pour effectuer des sauvegardes).

Le candidat a-t-il une expérience de la réplication? Quelles sont les configurations de réplication courantes et les avantages de chacun? La configuration la plus courante est maître-esclave, permettant à l'application de décharger des requêtes SELECT sur des serveurs esclaves, ainsi que de prendre des sauvegardes à l'aide d'un esclave pour éviter les problèmes de performance sur le maître. Une autre configuration courante est master-master, le principal avantage étant la possibilité de modifier les schémas sans affecter les performances. Assurez-vous que le candidat traite des problèmes courants tels que le clonage d'un serveur esclave (mysqldump + notation of the binlog position), chargez la distribution en utilisant un équilibreur de charge ou un proxy MySQL, resolving slave lag en décomposant des requêtes plus volumineuses en morceaux, et comment promouvoir un esclave pour qu'il devienne un nouveau maître.

Comment le candidat pourrait-il résoudre les problèmes de performance? Ont-ils une connaissance suffisante du système d'exploitation et du matériel sous-jacent pour diagnostiquer si un goulot d'étranglement est lié à l'unité centrale, lié à l'E/S ou lié au réseau? Peuvent-ils montrer comment utiliser EXPLAIN pour découvrir des problèmes d'indexation? Mentionnent-ils le journal de requêtes lent ou les options de configuration telles que le tampon de clé, la taille de la table tmp, la taille du pool de tampons innodb, etc? Le candidat apprécie-t-il les subtilités de chaque moteur de stockage?

(MyISAM, InnoDB et MEMORY sont les principaux). Comprennent-ils comment chaque moteur de stockage optimise les requêtes et comment le verrouillage est-il géré? Au minimum, le candidat doit mentionner que MyISAM émet un verrou au niveau de la table alors que InnODB utilise un verrouillage au niveau de la ligne.

Quelle est la manière la plus sûre d'apporter des modifications de schéma à une base de données active? Le candidat doit mentionner la réplication maître-maître, ainsi que les problèmes de verrouillage et de performance de ALTER TABLE en créant une nouvelle table avec la configuration souhaitée et en utilisant mysqldump ou INSERT INTO ... SELECT suivi de RENAME TABLE. Enfin, la seule vraie mesure d'un pro est l'expérience. Si le candidat ne peut pas pointer vers une expérience spécifique de gestion de grands ensembles de données dans un environnement à haute disponibilité, il se peut qu'il ne soit pas en mesure de sauvegarder ses connaissances à un niveau purement intellectuel.

1

Je pense que cela dépend du type de base de données: transactionnel ou entrepôt de données?

Quoi qu'il en soit, pour tous les types je voudrais poser des questions sur les concepts spécifiques de réplication et de mise en cluster MySQL, de mise au point des performances et de surveillance.

+0

Ce sera une base de données transactionnelle. Des fonctionnalités spécifiques à MySQL auxquelles je devrais m'attendre? – Campbell

6

Je voudrais poser des questions sur les différences entre les différents moteurs de stockage, leurs avantages et inconvénients perçus.

Recouvrez la réplication de manière provocatrice et explorez les inconvénients de la réplication, en particulier lorsque vous utilisez des tables avec des clés d'incrémentation automatique.

S'ils sont toujours avec vous, posez des questions sur le délai de réplication, les effets et les modèles standard pour le surveiller.