MySQL: bloqueos a nivel de tabla, bloqueos a nivel de fila, bloqueos compartidos, bloqueos exclusivos, bloqueos optimistas, bloqueos pesimistas


Lea todos los bloqueos en un artículo, comprenda sus ventajas, desventajas y escenarios de uso.


Cerraduras a nivel de mesa y cerraduras a nivel de fila


Bloqueo a nivel de mesa:


  • Bloqueo a nivel de mesa, para bloquear toda la mesa.

  • La sobrecarga es pequeña y la cerradura es rápida.

  • Sin interbloqueo (cargue todas las tablas necesarias a la vez).

  • La granularidad de bloqueo es grande, la probabilidad de conflictos de bloqueo es alta y la eficiencia de concurrencia es baja.

  • Adecuado para consultas.


Bloqueo a nivel de fila:


  • bloqueo de nivel de fila, bloquear una fila de registros.

  • La sobrecarga es grande y el bloqueo es lento.

  • Se estancará.

  • La granularidad de bloqueo es pequeña, la probabilidad de conflictos es pequeña y la eficiencia de concurrencia es alta.

  • Adecuado para escritura simultánea y control de transacciones.


En lugar de perder directamente la fila de registro y bloquearla, bloquea el índice correspondiente a la fila:

  • Si la instrucción sql manipula el índice de la clave principal, Mysql bloqueará el índice de la clave principal.

  • Si la instrucción sql opera un índice de clave no principal, MySQL primero bloqueará el índice de clave no principal y luego bloqueará el índice de clave principal relacionado.

  • En InnoDB, si la declaración SQL no incluye un índice, el registro se bloqueará a través del índice agrupado oculto.

  • El efecto real de bloquear un índice agrupado es el mismo que el de un bloqueo de tabla, porque para encontrar un registro, se debe escanear toda la tabla, y para escanear toda la tabla, la tabla debe estar bloqueada.


Motor y cerradura:


  • El motor MyISAM admite bloqueos a nivel de tabla, pero no admite bloqueos a nivel de fila.

  • El motor InnoDB admite bloqueos a nivel de tabla y bloqueos a nivel de fila, y el valor predeterminado es bloqueos a nivel de fila.

 


Cerradura compartida y cerradura exclusiva


 

Cerradura compartida:


  • Se llaman cerraduras S y cerraduras de lectura.

  • El subproceso actual agrega un bloqueo compartido al recurso compartido, y otros subprocesos pueden leer este recurso y continuar agregando bloqueos compartidos, pero este recurso no se puede modificar y no se pueden agregar bloqueos exclusivos.

  • 语法 : seleccione id de t_table en modo compartir;

  • Pueden coexistir múltiples bloqueos compartidos, los bloqueos compartidos y los bloqueos exclusivos no pueden coexistir.


Cerradura exclusiva:


  • También se llama bloqueo X y bloqueo de escritura.

  • El subproceso actual agrega un bloqueo exclusivo al recurso compartido, otros subprocesos no pueden leer este recurso, no pueden agregar bloqueos compartidos, no pueden modificar este recurso y no pueden agregar bloqueos exclusivos.

  • gramática:

       1. actualice t_table set a = 1; // Agregar, eliminar y modificar la base de datos de forma predeterminada agregará un bloqueo exclusivo

       2. seleccione * de t_table para actualizar; // para actualizar también es un tipo de adición, eliminación y modificación

  • Las cerraduras exclusivas son exclusivas y no convivirán con otras cerraduras.

 


Bloqueo optimista y pesimista


 

El bloqueo optimista y el bloqueo pesimista son bloqueos lógicos.


Cerradura optimista:


  • Bloqueo optimista: cree con optimismo que los problemas de concurrencia son difíciles de producir.

  • Aunque el bloqueo optimista cree que los problemas de concurrencia son difíciles de producir, no es que no ocurran, por lo que existen medidas para evitar que los problemas ocurran realmente: cada modificación de datos incrementa automáticamente el número de versión.

  • Cuando se leen datos, el número de versión actual version1 no está bloqueado, pero el número de versión actual version1 se lee al mismo tiempo; cuando se modifican los datos, es necesario juzgar si el número de versión actual version2 es igual a la versión anterior número versión 1.

  • El número de versión no coincide, significa que se ha producido el problema de simultaneidad, por lo que debe revertir esta operación.

  • Método de implementación: mecanismo de número de versión, CAS.


Bloqueo pesimista:


  • Bloqueo pesimista: cree pesimistamente que los problemas de concurrencia son propensos a ocurrir.

  • El bloqueo pesimista cree que los problemas de concurrencia son muy fáciles de producir, por lo que cada operación, independientemente de la lectura o escritura, bloqueará el registro para evitar que otros subprocesos modifiquen los datos.

  • Modo de implementación: bloqueo de fila, bloqueo de lectura y bloqueo de escritura de la base de datos.



Supongo que te gusta

Origin blog.51cto.com/7567511/2666911
Recomendado
Clasificación