Algunos problemas relacionados con MySQL


1. ¿Cuáles son los tres paradigmas de las bases de datos?

El primer paradigma: enfatiza la atomicidad de las columnas, es decir, cada columna de la tabla de la base de datos es un elemento de datos atómicos indivisible.
El segundo paradigma: requiere que los atributos de la entidad sean completamente dependientes de la clave primaria. La llamada dependencia completa significa que no puede haber atributos que solo dependan de una parte de la clave primaria.
El tercer paradigma: cualquier atributo no primario no depende de otros atributos no primarios.

2. Hay un total de 7 piezas de datos en una tabla de incremento automático, las 2 últimas piezas de datos se eliminan, la base de datos MySQL se reinicia y se inserta otra pieza de datos. ¿Cuál es la identificación en este momento?

Si el motor mysql es innodb, el id es 6 en este momento;
si el motor mysql es MyISAM, el id en este momento es 8; las
tablas InnoDB solo registrarán el id máximo de la clave primaria de incremento automático en la memoria, por lo que el La identificación máxima se perderá después de reiniciar. La clave primaria de autoincremento comienza desde 1.

3. ¿Cómo obtener la versión actual de la base de datos?

Use sql: seleccione la versión ()

Cuarto, ¿qué es ACID?

R: Atomicidad
Todas las operaciones en una transacción se completan o no se completan en absoluto, no habrá interrupción en el medio. Si la operación de la transacción es anormal, se revertirá antes de la transacción no confirmada.
C: Consistencia
Antes del inicio de la transacción y después del final de la transacción, la integridad de la base de datos no ha sido destruida. Esto significa que los datos escritos deben cumplir completamente con todas las restricciones preestablecidas, disparadores, reversiones en cascada, etc.
I: Aislamiento La
base de datos tiene la capacidad de permitir que múltiples transacciones concurrentes lean, escriban y modifiquen sus datos al mismo tiempo. El aislamiento puede prevenir inconsistencias de datos causadas por la ejecución cruzada cuando se ejecutan múltiples transacciones al mismo tiempo.
D: Persistencia
Una vez completada la transacción, la modificación de los datos es permanente y no se perderán incluso si el sistema falla.

5. ¿Cuál es la diferencia entre char y varchar?

char (n): tipo de longitud fija, como suscripción char (10), cuando ingresa los tres caracteres "abc", todavía ocupan 10 bytes y los otros 7 son bytes nulos.
Ventajas de carga: Alta eficiencia; Desventajas: Ocupación de espacio; Escenarios aplicables: El valor md5 de la contraseña se almacena y el uso de char es muy adecuado.
varchar (n): longitud variable, el valor almacenado es la longitud del byte ocupado por cada valor más un byte utilizado para registrar su longitud.
Por lo tanto, es más apropiado considerar varcahr en términos de espacio; es más apropiado considerar char en términos de eficiencia, y es necesario sopesar el uso de los dos.

6. ¿Cuál es la diferencia entre flotar y doble?

Float puede almacenar hasta 8 dígitos decimales y ocupa 4 bytes en la memoria.
Un doble puede almacenar números decimales de hasta 16 dígitos y ocupar 8 bytes en la memoria.

7. ¿Cuál es la diferencia entre la conexión interna de MySQL, la conexión izquierda y la conexión derecha?

Palabras clave de unión interna: unión interna; unión izquierda: unión izquierda; unión derecha: unión derecha.
La conexión interna es para mostrar los datos relacionados coincidentes; la conexión de la izquierda es para mostrar todas las tablas de la izquierda y la tabla de la derecha muestra los datos que cumplen con las condiciones; la conexión de la derecha es todo lo contrario.

8. ¿Cómo se implementa el índice MySQL?

Un índice es una estructura de datos que satisface un determinado algoritmo de búsqueda, y estas estructuras de datos apuntan a los datos de cierta manera, para lograr una búsqueda eficiente de datos.
Específicamente, los índices en MySQL se implementan de manera diferente por diferentes motores de datos, pero los índices de los principales motores de bases de datos actuales se implementan todos mediante árboles B +. La eficiencia de búsqueda de los árboles B + puede alcanzar el rendimiento de la dicotomía. Después de encontrar el área de datos, Se ha encontrado la estructura de datos completa, por lo que el rendimiento del índice es mejor.

9. ¿Cómo verificar si el índice MySQL cumple con los requisitos?

1. Verifique viendo el plan de ejecución explicando
2. Verifique comparando la diferencia entre la búsqueda indexada y la búsqueda no indexada, que requiere mucho tiempo

Diez, ¿hablar sobre el aislamiento de transacciones de la base de datos?

lectura sin compromiso: lectura sin compromiso:
otras transacciones pueden operar en la base de datos antes de que se confirme la transacción, lo que dará lugar a lecturas sucias, lecturas no repetibles y lecturas fantasmas.
Lectura confirmada:
después de que se confirma la transacción de lectura , otras transacciones pueden operar en la base de datos. Se pueden evitar las lecturas sucias, pero no se pueden evitar las lecturas no repetibles y las lecturas fantasmas;
Lectura repetible: el
nivel predeterminado de lecturas repetibles , para garantizar que cuando los mismos datos se leen varias veces, su valor sea consistente con el contenido al comienzo de la transacción Prohibida la lectura de datos no comprometidos a otras transacciones (causará lecturas fantasmas).
Serializable: serialización
Este modo es el nivel de aislamiento que consume el nivel más alto y más seguro (el más costoso y confiable). Puede evitar lecturas sucias, lecturas no repetibles y lecturas fantasma.

11. ¿Cuáles son los motores más utilizados para MySQL?

innodb: El
motor InnoDB proporciona soporte para transacciones ácidas de bases de datos, y también proporciona bloqueos de nivel de fila y restricciones de clave externa. Su objetivo de diseño es manejar sistemas de bases de datos de gran capacidad de datos. Cuando MySQL se está ejecutando, InnoDB creará un grupo de búfer en la memoria para almacenar datos e índices. Sin embargo, el motor no admite la búsqueda de texto completo y su inicio es relativamente lento. No guarda el número de filas en la tabla, por lo que cuando se ejecuta la instrucción

select count ( ) from table, toda la tabla debe ser escaneado. Debido a que la granularidad del bloqueo es pequeña, la operación de escritura no bloqueará toda la tabla, por lo que su uso en escenarios con alta simultaneidad mejorará la eficiencia. MyISAM: el motor predeterminado de MySQL, pero no proporciona soporte para transacciones, ni admite bloqueos de nivel de fila ni claves externas. Por lo tanto, cuando se ejecutan declaraciones de inserción y actualización, es decir, la tabla debe estar bloqueada al realizar operaciones de escritura, por lo que se reducirá la eficiencia. Sin embargo, a diferencia de InnoDB, el motor MyISAM guarda el número de filas en la tabla, por lo que cuando se ejecuta la instrucción select count ( ) from table, el valor guardado se puede leer directamente sin escanear toda la tabla. Por lo tanto, si la tabla tiene muchas más operaciones de lectura que operaciones de escritura y no requiere soporte de transacciones, puede usar MyISAM como la primera opción para el motor de base de datos.

12. ¿Qué pasa con los bloqueos de filas y de tablas en MySQL?

MyISAM solo admite bloqueos de tabla, InnoDB admite bloqueos de tabla y bloqueos de fila, y el valor predeterminado es bloqueos de fila.
Bloqueos a nivel de mesa: gastos generales bajos, bloqueo rápido y sin interbloqueos. La granularidad de bloqueo es grande, la probabilidad de conflictos de bloqueo es la más alta y la cantidad de simultaneidad es la más baja.
Cerraduras a nivel de fila: alto sobrecarga, bloqueo lento e interbloqueo. La granularidad de bloqueo es pequeña, la probabilidad de conflictos de bloqueo es pequeña y la simultaneidad es la más alta.

Trece, ¿hablar de bloqueo optimista y bloqueo pesimista?

Bloqueo optimista: Cada vez que obtienes los datos, piensas que otros no los modificarán, por lo que no se bloqueará, pero al enviar la actualización, se juzgará si otros han actualizado los datos durante este período.
Bloqueo pesimista: cada vez que obtiene los datos, cree que alguien más los modificará, por lo que los bloqueará cada vez que obtenga los datos, de modo que otras personas que quieran obtener los datos se bloquearán hasta que se libere el bloqueo.
El bloqueo optimista de la base de datos debe ser implementado por usted mismo. Agregue un campo de versión en la tabla y agregue 1 al valor exitoso de cada modificación, para que pueda comparar la versión que posee con la versión actual de la base de datos cuando modificarlo Si es inconsistente, no Modificar, para que se realice un bloqueo optimista.

14. ¿Cuáles son los métodos para solucionar problemas de MySQL?

1. Utilice el comando show processlist para ver toda la información de conexión actual.
2. Utilice el comando explicar para consultar el plan de ejecución de la instrucción SQL.
3. Abra el registro de consultas lentas y vea el SQL de la consulta lenta.

15. ¿Cómo optimizar el rendimiento de MySQL?

1. Cree un índice para el campo de búsqueda.
2. Evite el uso de seleccionar * y enumere los campos que deben consultarse.
3. Divida la mesa verticalmente.
4. Elija el motor de almacenamiento correcto.

16. Estructura del índice Mysql, ¿la diferencia entre el árbol B + y BTree?

1. En B + Tree, todos los nodos de registro de datos se almacenan en los nodos hoja de la misma capa en el orden del tamaño del valor clave, en lugar de almacenar solo la información del valor clave en los nodos hoja, esto puede aumentar en gran medida la clave almacenada por cada Valor del nodo, reduzca la altura del árbol B +.
2. B + Tree agrega un puntero de cadena a todos los nodos de hoja.

17. ¿Por qué utilizar la estructura del árbol B / B + para implementar la indexación?

MySQL es una base de datos basada en disco. El índice existe en el disco en forma de archivo de índice. El proceso de búsqueda de índice implica el consumo de IO del disco. El consumo de IO del disco es varios órdenes de magnitud mayor que el consumo de IO de la memoria. La estructura organizativa del índice debe diseñarse para minimizar el número de E / S de disco cuando se buscan palabras clave, y solo la estructura de datos de árbol B / B + puede satisfacer las necesidades.

18. ¿Por qué el índice MySQL usa el árbol B + en lugar del árbol B?

1. El árbol B + es más adecuado para el almacenamiento externo (generalmente se refiere al almacenamiento en disco). Dado que los nodos internos (nodos no hoja) no almacenan datos, un nodo puede almacenar más nodos internos, y cada nodo puede indexar un mayor y más preciso abarcar. Es decir, la cantidad de información en una E / S de un solo disco utilizando el árbol B + es mayor que la del árbol B, y la eficiencia de E / S es mayor.
2. MySQL es una base de datos relacional. A menudo accede a una determinada columna de índice según el intervalo. Los nodos hoja del árbol B + establecen punteros de cadena en orden, lo que refuerza la accesibilidad del intervalo. Por lo tanto, el árbol B + consulta el rango del intervalo. muy bien en la columna del índice. Sin embargo, la clave y los datos de cada nodo del árbol B están juntos y no se puede realizar la búsqueda de intervalo.

Supongo que te gusta

Origin blog.csdn.net/qq_42697271/article/details/114012692
Recomendado
Clasificación