Resumen de conocimientos básicos de MySQL

** Transacción **
es la unidad básica de control de concurrencia. La llamada transacción, es una secuencia de operaciones,

Las cuatro características de la
atomicidad de la transacción (ACID) : se refiere a que la transacción es una unidad más pequeña, no se puede separar y se convierte en un todo. Se ejecutan todas las transacciones o no se ejecutan todas y no hay un estado intermedio.
Coherencia: significa que los métodos de la transacción tienen éxito al mismo tiempo o no. Por ejemplo, A a B transfiere dinero, todos tienen éxito o todos fracasan.
Aislamiento: Se pueden iniciar muchas transacciones en la base de datos MySQL al mismo tiempo, pero están separadas entre sí, es decir, no se afectan entre sí. Garantizado por cerraduras.
Persistencia: cuando un registro de la base de datos se inserta correctamente, la base de datos debe asegurarse de que una parte de los datos se escriba permanentemente en el disco de la base de datos.

Concurrencia
de transacciones 1. Concurrencia de transacciones y ejecución simultánea de múltiples transacciones

Problemas causados ​​por la concurrencia de transacciones
1. Escrituras sucias Los
datos de la transacción 2 se han modificado pero aún no se han confirmado. La
transacción 1 modifica los datos de la transacción 2 y
luego la transacción 2 confirma los datos.
Luego, la transacción 1 se revierte, lo que
provoca la modificación en la transacción 2 para ser sobrescrito y revertido

2. Lectura sucia Los
datos de la transacción 2 están modificados pero aún no se han confirmado. La
transacción 1 lee los datos de la transacción 2 y los confirma. La
transacción 2 luego se revierte, lo que
hace que la transacción 1 lea datos inexistentes.

3. La lectura no repetible
significa que la lectura repetida causará problemas. Transacción 1 en las mismas condiciones, los datos leídos en el momento actual y los datos leídos en el siguiente momento son inconsistentes, es decir, hay otra transacción entre los dos tiempos que ha modificado los datos.

4. La lectura fantasma
significa que la transacción 1 leerá más filas de datos en el momento siguiente que en el momento actual en las mismas condiciones, lo que parece una ilusión, porque hay otras transacciones que agregan datos entre estos dos momentos.

Niveles de aislamiento de transacciones, cada nivel causará cualquier problema
nivel de aislamiento de la transacción: lectura no confirmada, lectura confirmada, lectura repetible, enviar la
lectura en serie no confirmada: habrá lectura sucia, para escribir lectura sucia, no repetible, lectura fantasma
lectura Enviada :
ocurrirá lectura no repetible y lectura fantasma Lectura repetible: ocurrirá lectura fantasma Envío en
serie: los problemas anteriores no ocurrirán

¿Qué nivel de mysql predeterminado es
lectura repetible?

¿Qué tipo de bloqueos tiene mysql?
1. Un bloqueo es un mecanismo para que una computadora coordine múltiples procesos o subprocesos para acceder simultáneamente a un determinado recurso.
2. Varias operaciones del bloqueo, incluida la obtención del bloqueo, verificar si el bloqueo ha sido liberado y liberando el bloqueo.
Otros:
3. Los bloqueos de mysql son bloqueos optimistas, pesimistas, compartidos, exclusivos, de fila y de tabla Bloqueos
compartidos (bloqueos de lectura): otras transacciones se pueden leer pero no escribir.
Bloqueo exclusivo (bloqueo de escritura): otras transacciones no pueden leer ni escribir.
Dividido por fuerza: bloqueo a nivel de mesa, bloqueo de página, bloqueo a nivel de fila.
Hay bloqueos de tabla y bloqueos de fila de forma predeterminada.
Bloqueos a nivel de tabla: baja sobrecarga y bloqueo rápido; sin interbloqueos; gran granularidad de bloqueo, la mayor probabilidad de conflictos de bloqueo y la menor concurrencia.
Bloqueos a nivel de fila: alta sobrecarga y bloqueo lento; se producirán interbloqueos; la granularidad de bloqueo es la más pequeña, la probabilidad de conflictos de bloqueo es la más baja y la concurrencia es la más alta.

bloqueo pesimista de mysql y bloqueo optimista
1, el bloqueo pesimista cree que los conflictos de concurrencia siempre ocurrirán, por lo que los datos deben bloquearse durante todo el proceso de procesamiento de datos.
Bloqueo pesimista: Es más adecuado para escenarios donde las operaciones de escritura son más frecuentes. Si hay una gran cantidad de operaciones de lectura, se realizarán bloqueos cada vez que se lean, lo que aumentará la sobrecarga de una gran cantidad de bloqueos y reducirá la rendimiento del sistema.
Los bloqueos compartidos, también conocidos como bloqueos de lectura, son un tipo de bloqueo pesimista que se puede ver pero no se puede modificar ni eliminar.

2. Optimistic lock cree que no se producirán conflictos de concurrencia, pero al actualizar, juzgará si otros han actualizado los datos durante este período.
Es más adecuado para escenarios donde las operaciones de lectura son frecuentes. Si se produce una gran cantidad de operaciones de escritura, aumentará la posibilidad de conflictos de datos. Para garantizar la coherencia de los datos, la capa de aplicación necesita volver a adquirir datos constantemente, lo que aumentará una gran cantidad de número de La operación de consulta reduce el rendimiento del sistema.

¿Cómo agregar bloqueo exclusivo cuando se selecciona?
Bloqueos de conflictos y puntos muertos
1. Un punto muerto es un bucle sin fin de bloqueos entre dos o más transacciones / solicitudes.
2. Conflicto de bloqueo: una sesión mantiene un bloqueo de escritura para un determinado recurso (como datos con id = 1), y otra sesión solo necesita solicitar un bloqueo de escritura para los mismos datos, y debe bloquearse hasta que finalice la sesión anterior. Hasta que se alcanza el bloqueo, generalmente lo llamo "bloqueo muerto" o "larga espera para el bloqueo".

** ¿Cuál es la diferencia entre los tres motores de almacenamiento comunes en mysql? **
1, InnoDB
2, MyISAM
3, MEMORIA

Los motores de almacenamiento MyISAM e InnoDB de MySQL son aplicables a los niveles de transacción y bloqueo, y sus respectivos escenarios aplicables.
¿Cuál es el orden en el que se ejecutan los diferentes elementos de la declaración de consulta (dónde, unirse, limitar, agrupar por, tener, etc.)?
Resuma el siguiente orden: Mi (W) hermano (G) es (SH) par (O) como unirse donde grupo por límite
W (donde) -> G (Grupo) -> S (Seleccionar) -> H (Tener) - > O (Orden)
1. Ejecute donde xx para filtrar todos los datos de la tabla y devolver el primer conjunto de resultados.
2. Utilice agrupar por agrupación para el primer conjunto de resultados y devuelva el segundo conjunto de resultados.
3. Ejecute select xx para cada grupo de datos en el segundo conjunto de resultados, ejecútelo varias veces para varios grupos y devuelva el tercer conjunto de resultados.
4. Ejecute teniendo xx para el tercer conjunto a filtrar y devuelva el cuarto conjunto de resultados.
5. Ordene el cuarto conjunto de resultados.
6, límite

¿Qué es una tabla temporal y cuándo se elimina? Una
tabla temporal es similar a una tabla de entidad, excepto que durante el uso, la tabla temporal se almacena en la base de datos del sistema tempdb. Cuando ya no usemos la tabla temporal, la tabla temporal se eliminará automáticamente.

** índice mysql **
1. El índice es en realidad una estructura de datos que puede ayudarnos a recuperar datos rápidamente en la base de datos.
2. MySQL tiene dos estructuras principales: índice hash e índice B + Tree

Ventajas y desventajas de la
indexación Ventajas de la indexación: 1. Clasificación natural. 2. Búsqueda rápida.
Desventajas del índice: 1. Ocupa espacio. 2. Reducir la velocidad de actualización de la tabla.
Por qué ocupa espacio: porque la indexación organizará los datos ordenados en árboles B y los colocará en el disco.

¿Cuál es la diferencia entre un índice agrupado y un índice no agrupado?
Al igual que buscar en un diccionario, la
recuperación de Pinyin es un índice agrupado; la recuperación de trazos es un índice no agrupado. El
contenido del texto se ordena y almacena de acuerdo con una dimensión específica, y esta dimensión específica es el índice agrupado; el
no- Los elementos de índice agrupados se almacenan en orden, pero el contenido correspondiente a los elementos de índice es aleatorio Almacenado

¿La diferencia entre el índice de árbol B + de mysql y el índice de hash?
declaración de consulta sql para determinar qué tipo de índice crear? ¿Cómo optimizar la consulta?
¿Cuál es la diferencia entre una base de datos no relacional y una base de datos relacional, y cuáles son las ventajas?
1. Las bases de datos relacionales generalmente tienen una estructura de tabla fija y las bases de datos no relacionales se basan en documentos, con un mecanismo de almacenamiento de pares clave-valor de KV.
2. Las bases de datos no relacionales son más rápidas de leer y escribir que las bases de datos relacionales
3. Las bases de datos no relacionales tienen mejor escalabilidad
4. Las bases de datos relacionales requieren consistencia Las bases de datos no relacionales no tienen requisitos estrictos.

¿Tres paradigmas de base de datos, diseño de tabla de datos según una determinada escena?
7 problemas de separación de lectura y escritura de la base de datos, replicación maestro-esclavo, análisis de replicación maestro-esclavo?
¿Utilizar explicar para optimizar sql y el índice?

** ¿Cómo resolver la consulta lenta de MySQL? **
Consulte el registro de consultas lentas para encontrar el motivo de la consulta lenta, vea si se trata de un problema de índice y si el índice es incorrecto.
Optimice las declaraciones de consulta para evitar combinaciones de más de tres tablas, etc.
¿Se pueden utilizar subconsultas para reducir el número de consultas?
Para una gran cantidad de datos, se adopta el método de sub-base de datos y tabla.

¿Qué son las uniones internas, las uniones externas, las uniones cruzadas, los productos cartesianos, etc.? Unión
interna:
seleccione * de una
combinación interna b
en a.id = b.parend_id
combinación izquierda:
seleccione * de una
combinación izquierda b
en a.id = b.parend_id
combinación derecha
seleccione * de una
combinación derecha b
en a.id = b.parend_id

¿Cuáles son los escenarios de uso de varchar y char?
Char usa una longitud fija con una longitud especificada para representar una cadena de campos.
Varchar (M) es un tipo de datos más flexible que char. También se usa para representar datos de caracteres, pero varchar puede almacenar cadenas de longitud variable.

¿Solución de entorno de alta concurrencia mysql?
El mecanismo de recuperación de transacciones cuando la base de datos falla
el registro de REDO y el registro de
DESHACER REDO para rehacer la información guardada en el cambio de página de datos (página), utilizado para restaurar
UNDO para deshacer la información guardada en el cambio de registro de datos (tupla), utilizado para revertir la transacción

1. CONCAT (A, B) -concatenar dos valores de cadena para crear una salida de cadena única. Usualmente se usa para combinar dos
o más campos en un solo campo.
2. FORMAT (X, D): formatee los dígitos efectivos de X a D.
3. CURRDATE (), CURRTIME (): devuelve la fecha u hora actual.
4. AHORA (): devuelve la fecha y hora actuales como valor.
5. MES (), DÍA (), AÑO (), SEMANA (), DÍA DE LA SEMANA (): extrae
los datos dados del valor de la fecha .
6. HORA (), MINUTO (), SEGUNDO () - extrae los datos dados del valor de tiempo.
7. DATEDIFF (A, B):
para determinar la diferencia entre dos fechas, generalmente se usa para calcular la edad. 8. SUBTIMES (A, B): para determinar la diferencia entre dos fechas .
9. FROMDAYS (INT) -Convertir días enteros a valores de fecha.
La
base de datos del caso MySQL se utiliza como almacenamiento del sistema de publicación, con un incremento de más de 50.000 entradas por día, y se
espera que sea operada y mantenida durante tres años. Cómo optimizar
1. Una estructura de base de datos bien diseñada permite Redundancia de datos parcial, evita las consultas de combinación tanto como sea posible y mejora la eficiencia. 
2. Seleccione el motor de almacenamiento y el tipo de datos de campo de la tabla apropiado, y agregue los índices de manera apropiada.
3. Separación de maestro y esclavo para la biblioteca MySQL.
4. Encuentre subtablas regulares, reduzca la cantidad de datos en una sola tabla y mejore la velocidad de consulta.
5. Agregue mecanismos de almacenamiento en caché, como memcached, apc, etc.
6. Genere páginas estáticas para páginas que no se cambian con frecuencia.
7. Escriba SQL de alta eficiencia. Por ejemplo, SELECT * FROM TABEL se cambia a SELECT field_1, field_2, field_3 FROM TABLE.
Estrategia de optimización de bloqueo
1, separación de lectura y escritura
2, bloqueo segmentado
3, reducción del tiempo de retención de bloqueo
4, varios subprocesos intentan ir en el mismo orden. Los recursos no pueden hacer que la granularidad del bloqueo sea demasiado fina; de lo contrario, puede haber demasiados subprocesos para bloquear y liberar el número de veces, pero la eficiencia no es tan buena como agregar un bloqueo grande a la vez.

Supongo que te gusta

Origin blog.csdn.net/jassyzhen/article/details/115299980
Recomendado
Clasificación