sql >> Base de Datos >  >> RDS >> Mysql

myisam coloca el bloqueo de tabla en la tabla incluso cuando se trata de una consulta 'seleccionar'?

MyISAM tiene diferentes tipos de bloqueos. Un SELECT la operación coloca un LEER BLOQUEO en la mesa. Puede haber varios bloqueos de lectura activos en un momento dado, siempre que no haya BLOQUEOS DE ESCRITURA activos. . Operaciones que modifican la tabla, ej. INSERT , UPDATE , DELETE o ALTER TABLE coloca un BLOQUEO DE ESCRITURA en la mesa. El bloqueo de escritura solo se puede colocar en una tabla cuando no hay bloqueos de lectura activos; Si hay bloqueos de lectura activos, MyISAM pone en cola el bloqueo de escritura para que se active tan pronto como caduquen todos los bloqueos de lectura activos.

Del mismo modo, cuando hay un bloqueo de escritura activo, intentar colocar un bloqueo de lectura en una tabla pondrá en cola el bloqueo (y la consulta asociada) hasta que los bloqueos de escritura hayan expirado en la tabla.

En última instancia, todo esto significa que:

  • Puede tener cualquier cantidad de bloqueos de lectura activos (también llamados bloqueos compartidos)
  • Solo puede tener un bloqueo de escritura activo (también llamado bloqueo exclusivo)

Para obtener más información, consulte:http://dev.mysql. com/doc/refman/5.5/en/bloqueo-interno.html