¿Por qué tabla bloqueo de nivel mejor que el bloqueo de filas de tablas de gran tamaño?

StackOverflow https://stackoverflow.com/questions/3462643

  •  27-09-2019
  •  | 
  •  

Pregunta

De acuerdo con la MySQL manual de :

  

Para tablas grandes, mesa de bloqueo es a menudo mejor que el bloqueo de filas,

¿Por qué es esto? Yo presumo que el bloqueo de filas es mejor porque cuando se bloquea en una mesa más grande, que estés de bloqueo más datos.

¿Fue útil?

Solución

de la (pre-edit) enlace

  

Más lento que el de nivel de página o bloqueos a nivel de tabla cuando se utiliza en una gran parte de la mesa, ya que debe adquirir muchas más bloqueos

utilizar un bloqueo de nivel de fila si sólo se está golpeando una fila o dos. Si el código golpea muchas filas o desconocidas, palo con bloqueo de tabla.

Otros consejos

  • necesita el bloqueo de filas más memoria de la tabla o el nivel de bloqueo de página.

  • tiene que adquirir muchos más cierres con bloqueo de registro, que gasta más recursos

http://www.devshed.com/ c / a / MySQL / MySQL-Optimization-parte-2 /

  • Las ventajas del bloqueo de filas:

    • Menos conflictos de bloqueo cuando se accede a las diferentes filas de muchas discusiones.
    • Menos cambios de reversiones.
    • Hace que sea posible bloquear una sola fila mucho tiempo.
  • Desventajas de bloqueo de fila:

    • Toma más memoria que a nivel de página o bloqueos a nivel de tabla.
    • Es más lento que a nivel de página o bloqueos a nivel de tabla cuando se utiliza en una gran parte de la mesa, ya que debe adquirir muchas más bloqueos.
    • Es sin duda mucho peor que otras cerraduras si usted a menudo hace GROUP BY operaciones a gran parte de los datos o si a menudo tiene que escanear toda la tabla.
    • Con bloqueos de nivel superior, también se puede apoyar con mayor facilidad de bloqueo de diferentes tipos para sintonizar la aplicación, debido a que el bloqueo de sobrecarga es menor que para los bloqueos a nivel de fila.
  • cerraduras de mesa son superiores a los de nivel de página o de nivel de fila cerraduras en los casos siguientes:

    • La mayoría de las declaraciones de la tabla son las lecturas.
    • Lea y actualizaciones sobre las teclas estrictas, en las que actualizar o eliminar una fila que se pueden recuperar con una sola llave leer: UPDATE tbl_name SET column=value WHERE unique_key_col=key_value; DELETE FROM tbl_name WHERE unique_key_col=key_value;
    • Seleccione combina con declaraciones concurrentes INSERT, y muy pocos UPDATE y DELETE.
    • Muchas exploraciones o grupo por las operaciones en toda la tabla sin ningún tipo de escritores.

fila Tabla bloqueo nivel es mejor para una gran mesa donde las principales modificaciones de datos se llevan a cabo. Esto permite que el sistema de lidiar con un candado en la mesa en vez de tener que lidiar con un cerraduras tropecientos (uno para cada fila).

Los RDBMS automáticamente aumenta los niveles de bloqueo interno.

  

bloqueo de tablas permite a muchas sesiones para leer de una tabla a la vez

     

Para lograr una velocidad muy alta de bloqueo, MySQL utiliza la tabla de bloqueo

"Yo supondría que el bloqueo de filas es mejor porque" [se bloquea menos datos].

En primer lugar "mejor" no está bien definido en esta página. Parece que los mejores medios "más rápido".

bloqueo de nivel de fila no puede (en general) será más rápido debido a la pelea por los bloqueos. Bloqueo de cada fila de un gran conjunto de resultados significa la posibilidad muy real de un conflicto con otro gran conjunto de resultados de consulta y una reversión.

En general, si usted necesita para bloquear una gran cantidad de datos a continuación, 1 bloqueo en una mesa grande es más barato que un montón de nivel de fila o página de cerraduras

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top