MySQL optimización (a) - el motor de almacenamiento de MySQL

Artículo de referencia:

https://mp.weixin.qq.com/s?__biz=MzI4Mzc5NDk4MA==&mid=2247486569&idx=2&sn=97110c3d1b682c8dbb5f4e265ba715a3&chksm=eb840722dcf38e343fe8d48ad491a39d0d8015425c743fcf2febf98d577f47b4a7f23559d5a3&scene=0&xtrack=1#rd
================ ==========================
https://www.cnblogs.com/aikutao/p/11207365.html
https://baijiahao.baidu ? .com / s id = 1629308672995568286 y wfr = araña y para pc =
bloqueo: https: //www.cnblogs.com/zyy1688/p/9924048.html

motor de base

  1. Descripción: El motor de base de datos es la organización de software de base de datos subyacente, los sistemas de gestión de bases de datos (DBMS) utilizando el motor de base de datos para crear, consultar, actualizar, y los datos de borrado, diferentes motores de almacenamiento proporcionan diferentes mecanismos de almacenamiento, técnicas, nivel de bloqueo y otras funciones de indexación, el uso de diferentes motor de almacenamiento, también se puede obtener una función específica.

La diferencia entre el motor de almacenamiento sencilla

Aquí Insertar imagen Descripción

Aquí Insertar imagen Descripción

  1. La estructura de datos InnoDB MylSAM utilizado tanto por el motor es índice de árbol B +, pero la diferencia es:
  1. estructura de datos de contenido InnorDb almacenado en un B + árbol es la dirección de los datos reales, índice, y es separada de los datos reales, pero utiliza el señalador índice para los datos reales, un patrón de dicho índice está en un índice no agrupado.
    estructura de datos almacenada en 2.MyISAM B + árboles son datos reales, este índice se denomina índice agrupado.

Índice de Categoría:

  1. El único índice: índice único no permite el mismo valor de índice
  2. índice de clave principal: índice único es un tipo especial, con el fin de definir una tabla de clave principal se creará automáticamente un índice de clave principal. índice de clave primaria requerida para cada valores de clave principal son únicas, y no puede ser nulo.
  3. índice agrupado (agrupado) orden lógico-física de los valores clave en cada fila de la orden misma tabla (índice), cada mesa puede tener sólo una.
  4. índice no agrupado (no agrupados): se especifica tabla de índice orden lógico no agrupado, los datos se almacenan en un índice de localización se almacena en otra ubicación, el índice contiene un puntero a la ubicación de almacenamiento de datos, que puede haber más que, menor que 249.

A, InnoDB

  1. Descripción: Este es el MySQL 5.5 o una versión posterior del motor de almacenamiento por defecto.Proporciona tabla de transacciones-safe (conforme a ACID), soporte clave restricciones de integridad referencial extranjeros. Es compatible con la recuperación presentación, reversión y de emergencia a los datos de protección contra escritura. También es compatible con el bloqueo de filas. Cuando se utiliza en un entorno multi-usuario, de "no-bloqueo consistente leer" mejorar el rendimiento. Se almacena en los datos de índice de agrupación, reduciendo así la clave primaria de la I / O. basado en consultas

Debido a que la base de datos InnoDB usando como índice la clave principal clave, InnoDB para que el archivo de índice principal en sí, y porque los archivos de datos que los agregados necesidad InnoDB acuerdo con la llave maestra,Por lo tanto, como los datos de la tabla utilizando el motor InnoDB requiere una clave primariaSi no se especifica explícitamente, MySQL intentará seleccionar automáticamente un se pueden enumerar como la clave principal, si no se encuentra, se generará un implícito identifica de forma exclusiva un campo de datos como la clave principal, la longitud del campo de 6 bytes, el tipo de entero largo.

Aquí Insertar imagen Descripción
二, MyISAM

  1. Características: La tabla de gestión de motor de almacenamiento no transaccional, siemprealmacenamiento de alta velocidad y recuperación, el apoyo a la búsqueda de texto completo, bloqueos de tabla, El índice sólo guardar los registros de datos de direcciones.
    Aquí Insertar imagen Descripción
    Tres, MEMORIA

Proporciona tablas en memoria, antes llamado el montón. loTodos los datos en la RAM para un acceso más rápido que los datos almacenados en el disco. Y otras referencias utilizadas para encontrar rápidamente los mismos datos.

Cuatro, MERGE

Una pluralidad de tablas MyISAM similares agrupados en una tabla que puede manejar tablas no transaccionales, incluyendo tablas de forma predeterminada.

Cinco, EJEMPLO

Puede utilizar este motor para crear la tabla, pero no puede almacenar o recuperar datos. El objetivo es enseñar a los desarrolladores cómo escribir nuevo motor de almacenamiento.

Seis, ARCHIVO

Para almacenar grandes cantidades de datos, que no soporta la indexación.

Siete, CSV

En un formato de archivo de texto para almacenar un valor de datos separados por comas.

Ocho, BLACKHOLE

Por los datos que se almacenan, pero siempre devueltos vacíos.

九, FEDERADOS

Los datos almacenados en la base de datos remota.

bloqueo

  1. modo de bloqueo de bloqueo a nivel de tabla de MySQL (MyISAM)
    De bloqueo de nivel de tabla MySQL tiene dos modos: una tabla de bloqueo compartido (Tabla Bloqueo de lectura) y una mesa de escritura exclusivo cerraduras (Tabla de escritura de bloqueo).
  • MyISAM para operaciones de lectura no bloquean otros usuarios solicitan la misma mesa, pero bloquearán la petición de escribir la misma mesa;
  • Escribe para MyISAM, y bloquearán otros usuarios en la misma mesa leído y operaciones de escritura;
  • Entre las mesas de operaciones de lectura y escritura MyISAM, así como entre la operación de escritura es de serie.
    Cuando un hilo adquiere un bloqueo de escritura en la tabla, sólo el hilo que tiene el bloqueo puede actualizar operaciones en la tabla. Otros temas de lectura y las operaciones de escritura van a esperar hasta que se libere el bloqueo.
  1. INNOR los bloqueos compartidos y exclusivos
    para bloqueos compartidos bien podemos entender, es que varias transacciones sólo pueden leer los datos no pueden cambiar los datos,Después de un bloqueo exclusivo para la comprensión de todos podría haber algunas diferencias, acababa cometido un error, que un bloqueo exclusivo para bloquear una fila de datos, otras transacciones no serán capaces de leer y modificar la línea de datos, de hecho, no es el caso. bloqueo exclusivo se refiere a una transacción en una fila después de que datos más bloqueo exclusivo, otras transacciones no pueden agregar otro bloqueo en ella. MySQL InnoDB por defecto del motor modificar las declaraciones de datos, actualizar, eliminar, insertar automáticamente a los datos relacionados con el plus bloqueo exclusivo, seleccione por defecto declaración no añade ningún tipo de bloqueo, si la tasa de bloqueo exclusivo puede utilizar el selecto ... para la instrucción de actualización, además de la cuota bloqueo puede usar select ... bloqueo en los estados de modalidad de compartimiento. Por lo tanto, el aumento es demasiado exclusivos filas de bloqueo de datos a otros tipos de datos de la transacción no se pueden cambiar, ni por actualización y bloqueo en el modo de participación en forma de datos de consulta de bloqueo, pero se pueden seleccionar directamente ... ... de datos de consulta,Debido a que no hay ningún mecanismo común de consulta cerraduras.

  2. InnoDB implementaciones bloqueo de fila
    InnoDB bloqueo de fila se consigue mediante las entradas de índice en el índice, que es diferente de MySQL y Oracle, que está cerrada por una línea de datos correspondiente en los datos obtenidos. InnoDB bloqueo de registro para lograr este medio característicos de: recuperar sólo los datos a través del índice de condiciones, InnoDB utilizará el bloqueo de filas, de lo contrario, sería utilizar el bloqueo de tabla InnoDB!
    En la aplicación práctica, prestar especial atención a esta característica bloqueo de registro InnoDB, de lo contrario, puede dar lugar a un gran número de conflictos de bloqueo, lo que afecta el rendimiento concurrente.

  3. Sobre Punto muerto
    tabla MyISAM bloqueo es un punto muerto libre, esto se debe a MyISAM es siempre el acceso a tiempo a todas las cerraduras requeridos para cumplir con cualquiera de todos, o de espera, así que no hay punto muerto. Pero en InnoDB, además de una transacción de SQL único que consiste en el bloqueo se obtiene poco a poco, lo que determina el punto muerto InnoDB es posible.
    Después se produce un punto muerto, InnoDB general puede detectar automáticamente y hacer una transacción para liberar el bloqueo y el retorno, otra transacción para obtener un bloqueo, continuar para completar la transacción. Sin embargo, en el contexto de un bloqueo externo, bloqueo, o que involucre, == InnoDB no completamente detectar automáticamente los puntos muertos, los parámetros de tiempo de espera que es necesario esperar innodb_lock_wait_timeout resuelto mediante el establecimiento de bloqueo. == Debe tenerse en cuenta que este parámetro no sólo se utiliza para los puntos muertos a resolver en el acceso concurrente es relativamente alta, si un gran número de transacciones debido a la imposibilidad de obtener el bloqueo requerido e inmediatamente suspendido, tendrá una gran cantidad de recursos de la computadora, lo que resulta en serios problemas de rendimiento e incluso causaron el colapso de la base de datos. Esperamos a que el umbral de tiempo de espera mediante el establecimiento de las cerraduras adecuadas para evitar que esto suceda.

Publicado 36 artículos originales · ganado elogios 11 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/s_xchenzejian/article/details/104556750
Recomendado
Clasificación