Las 20 preguntas de la entrevista de Mysql formuladas con más frecuencia por innumerables empresas

Las siguientes son las 20 preguntas de la entrevista de Mysql que he resumido de entrevistas con innumerables empresas y siento que me han preguntado con más frecuencia y de manera más útil. Las compartiré para su referencia. ¡Espero que os vaya bien en la entrevista y os hagáis una oferta satisfactoria!Inserte la descripción de la imagen aquí

¿Puedes decirme la diferencia entre myisam e innodb?

El motor myisam es el motor predeterminado antes de la versión 5.1. Admite recuperación de texto completo, compresión, funciones espaciales, etc., pero no admite transacciones ni bloqueos a nivel de fila, por lo que generalmente se usa en escenarios donde hay una gran cantidad de consultas y una pequeña cantidad de inserción, y myisam no admite claves externas. Y el índice y los datos se almacenan por separado.

Innodb se basa en un índice agrupado. A diferencia de myisam, admite transacciones, claves externas y admite alta concurrencia a través de MVCC. Los índices y los datos se almacenan juntos.

¿Sabes qué es índice de cobertura y volver a la mesa?

El índice de cobertura se refiere a que en una consulta, si un índice contiene o cubre los valores de todos los campos que deben consultarse, lo llamamos índice de cobertura y no es necesario volver a la consulta de la tabla.

Para determinar si una consulta es un índice de cobertura, solo necesitamos explicar la instrucción sql para ver si el resultado de Extra es "Usar índice".

Tome la tabla de usuarios anterior como ejemplo, agreguemos otro campo de nombre y luego intentemos algunas consultas.

explicar seleccionar * del usuario donde edad = 1; // El nombre de la consulta no se puede obtener de los datos del índice
explicar seleccionar id, edad del usuario donde edad = 1; // Se puede obtener directamente del índice

¿Cuáles son los tipos de cerraduras?

Los bloqueos de MySQL se dividen en bloqueos compartidos y bloqueos exclusivos, también llamados bloqueos de lectura y bloqueos de escritura.

El bloqueo de lectura es compartido y se puede realizar mediante bloqueo en modo compartir. En este momento, solo puede leer pero no escribir.

El bloqueo de escritura es exclusivo, bloqueará otros bloqueos de escritura y de lectura. Desde la granularidad para distinguir, se puede dividir en bloqueos de tabla y bloqueos de fila.

Los bloqueos de tabla bloquearán toda la tabla y bloquearán todas las operaciones de lectura y escritura en la tabla por parte de otros usuarios. Por ejemplo, alter bloqueará la tabla al modificar la estructura de la tabla.

Los bloqueos de fila se pueden dividir en bloqueos optimistas y bloqueos pesimistas. Los bloqueos pesimistas se pueden implementar para actualización y los bloqueos optimistas se implementan mediante números de versión.

¿En qué garantía se basa ACID?

La atomicidad está garantizada por el registro de registro de deshacer, que registra la información del registro que debe revertirse. Cuando se revierte la transacción, se deshace el SQL ejecutado correctamente

La consistencia de C generalmente está garantizada por el nivel de código

El aislamiento está garantizado por MVCC.

La durabilidad de D está garantizada por la memoria + el registro de rehacer. MySQL modifica los datos y registra esta operación en la memoria y el registro de rehacer al mismo tiempo. Cuando se confirma la transacción, se vacía a través del registro de rehacer y se puede restaurar desde el registro de rehacer cuando está inactivo.

Dado que hay demasiados puntos de conocimiento para recopilar, aquí solo se muestra una parte. Los amigos que necesitan las respuestas a las preguntas de la entrevista y más materiales de la entrevista pueden hacer clic en el enlace a continuación para obtenerlo de forma gratuita. Enlace: 1103806531 Contraseña: CSDN

Inserte la descripción de la imagen aquí

¿Cómo se puede garantizar la unicidad del ID después de la subtabla?

Debido a que todas nuestras claves primarias se incrementan automáticamente de forma predeterminada, las claves primarias después de las subtablas definitivamente entrarán en conflicto en diferentes tablas. Hay varias formas de considerar:

Establecer el tamaño de paso, como tablas 1-1024, establecemos el tamaño de paso básico de 1-1024 respectivamente, de modo que las claves primarias no entren en conflicto cuando caigan en tablas diferentes.
ID distribuido, implemente un conjunto de algoritmos de generación de ID distribuidos usted mismo o use un código abierto como el algoritmo de copo de nieve.
Después de dividir la tabla, la clave principal no se usa como base de consulta, pero se usa un nuevo campo en cada tabla como clave principal única, como la tabla de pedidos. El número de pedido es único, sin importar en qué tabla se encuentre finalmente, se basa en el número de pedido como base de la consulta y la actualización es la misma.

Es un índice único más rápido que el índice normal y por qué

El índice único no es necesariamente más rápido que el índice normal, puede ser más lento.

Al realizar consultas, cuando no se utiliza el límite 1, después de que se hace coincidir un dato, se devuelve el índice único, y el índice ordinario continuará coincidiendo con el siguiente dato y regresará después de encontrar una discrepancia. Parece que el índice único tiene una coincidencia menos, pero De hecho, este consumo es mínimo. Durante la
actualización, la situación es más complicada. Se ejecuta la sentencia del índice ordinario que pone el registro en el búfer de cambios. Para el índice único, se debe verificar la unicidad, por lo que debe ser La página de datos se lee en la memoria para asegurarse de que no haya ningún conflicto, y luego la operación puede continuar. Para el caso de más escrituras y menos lecturas, el índice ordinario usa el búfer de cambio para reducir efectivamente el número de accesos al disco, por lo que el rendimiento del índice ordinario es mayor que el del índice único.

¿Cuáles son los componentes de MySQL y para qué se utilizan?

Conector de servidor: conexión de administración, verificación de permisos. Analizador: análisis léxico, análisis gramatical. Optimizador: generación de plan de ejecución, selección de índice. Actuador: operar motor de almacenamiento, devolver resultados de ejecución.
Motor de almacenamiento: almacenar datos, proporcionar lectura y escritura interfaz.

¿Cuáles son las desventajas de la caché de consultas de MySQL, bajo qué circunstancias debe usarse y qué cambios se han realizado en la caché de consultas en la versión 8.0?

La caché de consultas puede fallar con mucha frecuencia. Para una tabla, siempre que haya una actualización, todas las cachés de consultas de la tabla se vaciarán. Por lo tanto, para una tabla que se actualiza con frecuencia, la caché de consultas puede no tener un efecto positivo.
Para lecturas mucho más de Puede considerar el uso de la caché de consultas para tablas escritas.
La función de caché de consultas de la versión 8.0 se ha eliminado ( ̄. ̄).

¿Cómo restaura MySQL los datos de hace medio mes?

Restaurar a través de la copia de seguridad completa de la base de datos + binlog La premisa es tener copias de seguridad regulares de toda la base de datos y guardar los registros binlog.

¿Cuáles son las características del nivel de aislamiento de las transacciones MySQL?

Lectura no confirmada (RU): cuando una transacción no está confirmada, los cambios que realiza pueden ser vistos por otras transacciones.
Lectura confirmada (RC): después de que una transacción está confirmada, los cambios que realiza serán vistos por otras transacciones.
Lectura repetible (RR): los datos vistos durante la ejecución de una transacción siempre son consistentes con los datos vistos al inicio de la transacción. Por supuesto, bajo el nivel de aislamiento de lectura repetible, los cambios no confirmados no son para otras transacciones
Serialización (S) visible : Para la misma fila de registros, tanto las lecturas como las escrituras se bloquearán. Cuando se produce un conflicto de bloqueo de lectura-escritura, la transacción de acceso subsiguiente debe esperar a que se complete la transacción anterior antes de que pueda continuar.

Qué optimizaciones relacionadas con el índice MySQL se han realizado

Intente utilizar la consulta de clave principal: todos los datos se almacenan en el índice agrupado, lo que reduce el consumo de volver a la tabla en comparación con las consultas de índice ordinarias.
Después de MySQL 5.6, se introduce la optimización de inserción de índice y, mediante el uso apropiado de índices conjuntos, reduce el juicio de volver a la tabla Consumo.
Si consulta con frecuencia una columna de datos, puede considerar usar un índice de cobertura para evitar volver a la tabla. El
índice conjunto coloca el campo de alta frecuencia en el extremo izquierdo.

Hable brevemente sobre el paradigma de la base de datos

Primera forma normal: los atributos no se pueden dividir.
Segunda forma normal: sobre la base de una forma normal, cada instancia o fila en una tabla de base de datos debe ser distinguible de forma única. Por lo general, es necesario agregar una columna a la tabla para almacenar cada instancia Esta columna de atributo único se denomina clave primaria o clave primaria. El
tercer paradigma: sobre la base del segundo paradigma, se requiere que una tabla de base de datos no contenga información de clave no primaria que haya estado contenida en otras tablas. La tercera forma normal tiene las siguientes características: 1). Cada columna tiene un solo valor. 2) Cada fila se puede distinguir. 3) Cada tabla no contiene información de clave no primaria que ya contienen otras tablas.

Una tabla con 10 millones de datos, cómo consultar por página

Cuando la cantidad de datos es demasiado grande, la paginación de compensación de límite será más lenta para consultar más tarde debido a demasiados datos de escaneo. Puede consultar con el último ID de la página actual, SELECCIONAR * FROM T WHERE id> # {ID} LIMIT # {LIMIT } Por supuesto, en este caso se debe solicitar la identificación, que también es uno de los beneficios de la identificación ordenada.

Cómo lidiar con la consulta lenta debido a la creciente cantidad de datos en la tabla de pedidos

Subtabla de la base de datos. Dado que la tasa histórica de uso de pedidos no es alta, la frecuencia alta puede ser solo pedidos recientes. Por lo tanto, la tabla de pedidos se divide según el tiempo y la subtabla mensual o anual se considera de acuerdo con la cantidad de datos. Pedidos El ID contiene preferiblemente la hora (tal como se genera según el algoritmo del copo de nieve). En este momento, el registro del pedido se puede obtener directamente según el ID del pedido, o se puede consultar según el tiempo.

Inserte la descripción de la imagen aquí

¿Por qué usar el árbol B + como índice en lugar de tabla hash?

1. La tabla hash mapea el campo de índice con el código hash correspondiente y luego lo almacena en la ubicación correspondiente. En este caso, si queremos realizar una búsqueda difusa, obviamente la estructura de la tabla hash no es compatible y solo se puede recorrer Esta mesa. El árbol B + puede encontrar rápidamente los datos correspondientes a través del principio de prefijo más a la izquierda.

2. Si queremos realizar una búsqueda de rango, como buscar una persona con un ID de 100 ~ 400, la tabla hash tampoco es compatible y solo podemos recorrer toda la tabla.

3. El campo de índice se asigna a un código hash mediante hash. Si muchos campos se asignan al código hash del mismo valor, la estructura del índice formada será una lista vinculada muy larga. En este caso, el tiempo de búsqueda será aumentar considerablemente.

¿Cuál es la diferencia entre CHAR y VARCHAR?

1. Los tipos CHAR y VARCHAR son diferentes en almacenamiento y recuperación

2. La longitud de la columna CHAR se fija a la longitud declarada cuando se crea la tabla, y el rango de valores de longitud es de 1 a 255. Cuando se almacenan valores CHAR, se rellenan con espacios hasta una longitud específica. Los espacios finales deben eliminarse al recuperar valores CHAR.

¿Cuál es la diferencia entre la clave principal y la clave candidata?

Cada fila de la tabla está identificada de forma única por la clave principal, y una tabla tiene solo una clave principal.

La clave principal también es una clave candidata. Por convención, las claves candidatas se pueden designar como claves primarias y se pueden utilizar para cualquier referencia de clave externa.

¿Para qué se utiliza myisamchk?

Se utiliza para comprimir tablas MyISAM, lo que reduce el uso de disco o memoria.

¿Cuál es la diferencia entre MyISAM Static y MyISAM Dynamic?

Todos los campos de MyISAM Static tienen un ancho fijo. La tabla dinámica MyISAM tendrá campos como TEXT, BLOB, etc. para acomodar tipos de datos de diferentes longitudes.

MyISAM Static es más fácil de recuperar en caso de daño.

¿Qué son las transacciones en la base de datos?

Una transacción es un conjunto ordenado de operaciones de base de datos como una unidad. Si todas las operaciones en el grupo son exitosas, la transacción se considera exitosa, incluso si solo una operación falla, la transacción no es exitosa. Si se completan todas las operaciones, la transacción se confirma y sus modificaciones se aplicarán a todos los demás procesos de la base de datos. Si una operación falla, la transacción se revertirá y se cancelará el impacto de todas las operaciones de la transacción.

Características de la transacción:

1. Atomicidad: es decir, indivisibilidad, se ejecutan todas las transacciones o no se ejecutan todas las transacciones.

2. Coherencia o rigor. La ejecución de la transacción hace que la base de datos pase de un estado correcto a otro estado correcto.

3. Aislamiento. Antes de que la transacción se confirme correctamente, no se permite proporcionar ningún cambio de datos realizado por la transacción a ninguna otra transacción.

4. Persistencia. Una vez que la transacción se envía correctamente, el resultado se guardará permanentemente en la base de datos. Incluso si hay otras fallas después de enviar la transacción, el resultado del procesamiento de la transacción se guardará. O entiéndalo de esta manera: una transacción es un grupo de declaraciones SQL que se unen como una unidad lógica de trabajo. Si falla alguna operación de declaración, toda la operación fallará y la operación volverá al estado anterior a la operación, o hay una nodo. Para asegurarse de que se ejecute o no, puede utilizar transacciones. Para considerar las declaraciones agrupadas como transacciones, es necesario pasar la prueba ACID, es decir, atomicidad, consistencia, aislamiento y durabilidad.

¿Qué causa las vulnerabilidades de inyección de SQL? ¿Cómo prevenirlo?

Razones para la inyección SQL: En el proceso de desarrollo del programa, no se tiene cuidado de escribir sentencias sql y filtrar caracteres especiales, como resultado, el cliente puede enviar algunas sentencias sql a través de las variables globales POST y GET para su ejecución normal. Formas de prevenir la inyección de SQL:

Habilite las configuraciones magic_quotes_gpc y magic_quotes_runtime en el archivo de configuración

Cuando ejecute la instrucción SQL, use addedlashes para convertir la instrucción SQL. La escritura de la instrucción SQL trate de no omitir las comillas dobles y las comillas simples.

Filtre algunas palabras clave en la declaración SQL: actualizar, insertar, eliminar, seleccionar, *.

Mejore las habilidades para nombrar las tablas y campos de la base de datos, nombre algunos campos importantes de acuerdo con las características del programa y elija los que no sean fáciles de adivinar.

Inserte la descripción de la imagen aquí

Al final

También he compilado un conjunto completo de tutoriales en video para arquitectos y materiales sistemáticos sobre Java, que incluyen puntos de conocimiento básicos de Java, temas de entrevistas y los últimos 20 años de preguntas reales de Internet, libros electrónicos, etc. ¡Espero ayudarlo!

¡Los amigos que lo necesiten pueden hacer clic en el enlace de abajo para obtenerlo gratis!

Enlace: 1103806531 Contraseña: CSDN
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_48655626/article/details/108492209
Recomendado
Clasificación