2008-09-15 21 views
9

Se me ha pedido que seleccione algunos candidatos para un puesto de desarrollador/DBA de MySQL para un puesto que requiera un conjunto de habilidades de nivel empresarial.Preguntas de la entrevista MySQL

Yo mismo soy una persona de SQL Server, así que sé lo que estaría buscando desde ese punto de vista con respecto a la escalabilidad/diseño, etc. ¿pero hay algo específico que debería preguntar con respecto a MySQL?

Me gustaría preguntarles acerca de las características de nivel empresarial de MySQL que normalmente solo utilizarían cuando se trabaja en una gran base de datos. Es necesario separar a los desarrolladores empresariales del tipo de chicos del sitio web casero/pequeño.

Gracias.

+0

Escribí algunos aquí: http://www.alphadevx.com/a/468-Technical-screening-questions-for-a-MySQL-DBA – alphadevx

Respuesta

39

Aunque SQL Server y MySQL son ambos RDBM, MySQL tiene muchas características únicas que pueden ilustrar la diferencia entre principiante y experto.

El primer paso debe ser asegurarse de que el candidato se sienta cómodo utilizando la línea de comandos, no solo las herramientas de la GUI como phpMyAdmin. Durante la entrevista, intente pedir al candidato que escriba código MySQL para crear una tabla de base de datos o agregar un nuevo índice. Estas son consultas muy básicas, pero exactamente del tipo que las herramientas GUI impiden que los novatos dominen. Puede verificar las respuestas con alguien que esté más familiarizado con MySQL.

¿Puede el candidato demostrar conocimiento de cómo funciona JOINs? Por ejemplo, intente pedirle al candidato que construya una consulta que devuelva todas las filas de la Tabla Uno donde no existen entradas coincidentes en la Tabla Dos. La respuesta debería incluir una unión IZQUIERDA.

Pida al candidato que analice las estrategias de copia de seguridad y las diversas fortalezas y debilidades de cada una. El candidato debe saber que la copia de seguridad de los archivos de la base de datos directamente no es una estrategia efectiva a menos que todas las tablas sean MyISAM. El candidato definitivamente debería mencionar a mysqldump como una piedra angular para las copias de seguridad. Las soluciones de copia de seguridad más sofisticadas incluyen ibbackup/innobackup e instantáneas LVM. Idealmente, el candidato también debería analizar cómo las copias de seguridad pueden afectar el rendimiento (una solución común es usar un servidor esclavo para realizar copias de seguridad).

¿El candidato tiene experiencia con la replicación? ¿Cuáles son algunas de las configuraciones de replicación comunes y las diversas ventajas de cada una? La configuración más común es maestro-esclavo, lo que permite a la aplicación descargar consultas SELECT a servidores esclavos, junto con tomar copias de seguridad usando un esclavo para evitar problemas de rendimiento en el maestro. Otra configuración común es master-master, el principal beneficio es la capacidad de realizar cambios en el esquema sin afectar el rendimiento. Asegúrese de que el candidato discuta problemas comunes como clonar un servidor esclavo (mysqldump + notation of the binlog position), distribuir la carga utilizando un equilibrador de carga o proxy MySQL, resolving slave lag dividiendo las consultas más grandes en fragmentos, y cómo promover un esclavo para convertirse en un nuevo maestro.

¿Cómo solucionaría el candidato los problemas de rendimiento? ¿Tienen suficiente conocimiento del sistema operativo subyacente y del hardware para diagnosticar si un cuello de botella está vinculado a la CPU, a la IO o a la red? ¿Pueden demostrar cómo usar EXPLAIN para descubrir problemas de indexación? ¿Mencionan el registro de consulta lento o las opciones de configuración, como el búfer de la llave, el tamaño de la tabla tmp, el tamaño del grupo de búfer innodb, etc.?

¿El candidato aprecia las sutilezas de cada motor de almacenamiento? (MyISAM, InnoDB y MEMORY son los principales). ¿Entienden cómo cada motor de almacenamiento optimiza las consultas y cómo se maneja el bloqueo? Como mínimo, el candidato debe mencionar que MyISAM emite un bloqueo a nivel de tabla, mientras que InnODB utiliza el bloqueo a nivel de fila.

¿Cuál es la forma más segura de hacer cambios de esquema en una base de datos en vivo? El candidato debe mencionar la replicación maestro-maestro, así como evitar los problemas de bloqueo y rendimiento de ALTER TABLE creando una nueva tabla con la configuración deseada y usando mysqldump o INSERT INTO ... SELECT seguido de RENAME TABLE.

Por último, la única medida verdadera de un profesional es la experiencia. Si el candidato no puede apuntar a una experiencia específica en el manejo de grandes conjuntos de datos en un entorno de alta disponibilidad, es posible que no pueda respaldar ningún conocimiento que posean en un nivel puramente intelectual.

1

Creo que dependería del tipo de base de datos: ¿almacén de datos o transaccional?

De todos modos, para todos los tipos, preguntaría acerca de la replicación de MySQL y los conceptos de clustering, ajuste de rendimiento y monitorización.

+0

Será una base de datos transaccional. ¿Alguna característica específica de MySQL que esperaba escuchar? – Campbell

6

Me gustaría preguntar acerca de las diferencias entre los diversos motores de almacenamiento, sus beneficios percibidos y sus inconvenientes.

Defiantemente cubre la replicación, y profundiza en los inconvenientes de la replicación, especialmente cuando se usan tablas con teclas de incremento automático.

Si todavía están con usted, pregunte acerca del retraso de replicación, sus efectos y los patrones estándar para controlarlo.

Cuestiones relacionadas