teoria - Preguntas de la entrevista de MySQL
salvador minuchin (3)
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 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 funcionan los JOIN? 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.
Pídale al candidato que discuta las estrategias de respaldo 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 discute problemas comunes como clonar un servidor esclavo ( mysqldump + notación de la posición del bolo ), distribuir la carga usando un equilibrador de carga o proxy MySQL, resolver el retraso esclavo dividiendo las consultas más grandes en fragmentos y cómo promover un esclavo convertirte en un nuevo maestro
¿Cómo resolverí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.
Me han pedido que seleccione algunos candidatos para un puesto de desarrollador / DBA de MySQL para un puesto que requiere un conjunto de habilidades de nivel empresarial.
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?
Idealmente, me gustaría preguntarles sobre las características de nivel empresarial de MySQL que, por lo general, solo usarían cuando trabajen en una gran base de datos. Es necesario separar a los desarrolladores empresariales del tipo de chicos del sitio web casero / pequeño.
Gracias.
Creo que dependería del tipo de base de datos: ¿almacén transaccional o de datos?
De todos modos, para todos los tipos, me gustaría preguntar sobre la replicación de MySQL y los conceptos de clustering, ajuste de rendimiento y monitorización.
Preguntaría acerca de las diferencias entre los diversos motores de almacenamiento, sus beneficios percibidos y sus inconvenientes.
Desafiadamente cubre la replicación y profundiza en los inconvenientes de la replicación, especialmente al usar tablas con teclas de incremento automático.
Si todavía están con usted, pregunte sobre el retraso de replicación, sus efectos y patrones estándar para monitorearlo.