2010-08-11 18 views

Respuesta

17

de la (pre-edit) link

lento que el 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 su código golpea muchas filas o filas desconocidas, quédese con el bloqueo de la mesa.

+4

Ya veo. Así que quizás sería mejor si se expresara más como "para grandes conjuntos de resultados, el bloqueo de tablas a menudo es mejor que el bloqueo de filas". –

0

A fila El bloqueo de nivel de tabla es mejor para una mesa grande donde se están produciendo modificaciones de datos importantes. Esto permite que el sistema contenga un único bloqueo en la mesa en lugar de tener que lidiar con un bloqueo de varios millones (uno por cada fila).

El RDBMS escala automáticamente los niveles de bloqueo internamente.

+0

Creo que quieres decir "Un bloqueo de mesa es mejor ....." – SQLMenace

+0

Creo que quieres decir "Un bloqueo de fila es mejor ...": P –

+0

* (sonrisa tímida) * Sí, quise decir Table ... –

0

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 bloqueos de página

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

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

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

  • Ventajas de bloqueo de filas:

    • bloqueo Menos conflictos al acceder a filas diferentes en muchos hilos.
    • Menos cambios para reversiones.
    • Hace posible bloquear una sola fila por un tiempo prolongado.
  • desventajas de bloqueo de filas:

    • Toma más memoria que el nivel de página o bloqueos a nivel de tabla.
    • Es más lento que los bloqueos a nivel de página o de tabla cuando se usa en una gran parte de la tabla porque debe adquirir muchos más bloqueos.
    • Definitivamente es mucho peor que otros bloqueos si a menudo realiza operaciones GROUP BY en una gran parte de los datos o si a menudo debe escanear toda la tabla.
    • Con bloqueos de nivel superior, también puede admitir más fácilmente bloqueos de diferentes tipos para ajustar la aplicación, porque la sobrecarga del bloqueo es menor que para los bloqueos de nivel de fila.
  • bloqueos de tabla son superiores a nivel de página o bloqueos a nivel de fila en los siguientes casos:

    • mayoría de las declaraciones de la tabla son lee.
    • Lea y actualizaciones sobre las teclas estrictas, en las que actualizar o eliminar una fila que se pueden recuperar con una sola lectura clave: UPDATE tbl_name SET column=value WHERE unique_key_col=key_value; DELETE FROM tbl_name WHERE unique_key_col=key_value;
    • SELECCIONAR combinarse con declaraciones concurrentes INSERT, y muy pocos update y delete.
    • Muchos escaneos o operaciones GROUP BY en toda la tabla sin escritores.
1

tabla de bloqueo 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

"lo haría Supongamos que el bloqueo a nivel de fila es mejor porque "[bloquea menos datos].

Primero "mejor" está mal definido en esta página. Parece que mejor significa "más rápido".

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

Cuestiones relacionadas