2010-02-25 23 views
5

Estoy probando diferentes esquemas de bloqueo para una gran mesa, más de 4 millones de filas y se espera que crezca hasta 10 millones.Detalles del impacto de diferentes esquemas de bloqueo en bases de datos?

Mi experiencia con SyBase:
ALLPAGES, BCP extremadamente lento (in) y actualización con un campo que pertenece a la clave principal.
DATAROWS, rápido BCP, actualización rápida para los campos en el PK, selección más rápida.
DATAPAGES, BCP más rápido y actualización, y selección más rápida que ALLPAGES pero no tan rápido como DATAROWS.

No soy un experto, pero me parece que DATAROWS bloquea más que DATAPAGES, y no he visto ningún inconveniente con DATAPAGES.

El único punto a favor de DATAROWS que pude encontrar fue un rendimiento un poco más rápido en las selecciones que usan la clave principal, pero DATAPAGES es considerablemente más rápido en las actualizaciones.

¿Alguna experiencia en la práctica?
¿Cómo se comparan estos esquemas de bloqueo?
Pros/Contras de cada uno?

Intenté leer acerca de la teoría detrás de esto, pero no es muy claro para mí.

+0

Extraño: Noté que cuando aplico un nuevo PK agrupado para una tabla que ya está con el bloqueo de páginas de datos, no parece ordenar físicamente los datos, cuando lo haga seleccione * de él, no todos los resultados están ordenados por el PK ... ¿Por qué es eso? – mencargo

Respuesta

0

El bloqueo es un mecanismo de control de concurrencia. Garantiza la coherencia de los datos dentro de las transacciones y entre ellas. Se necesita el bloqueo en un entorno multiusuario, ya que varios usuarios pueden ser trabajando con los mismos datos al mismo tiempo, por lo que no debe elegir esquemas de bloqueo de acuerdo con, por ejemplo, Velocidad BCP.

Para las tablas que utilizan allpages bloqueo o páginas de datos de bloqueo, ya sea bloqueos de página o bloqueos de tabla

Para las tablas que utilizan datarows de bloqueo, ya sea bloqueos de registro o bloqueos de tabla

pero las tablas allpages-locked protegen contra fantasmas (filas que pueden aparecer o desaparecer de un conjunto de resultados) manteniendo bloqueos en las páginas de índice para la transacción serializable read

En general, debe usar datarows o páginas de datos que bloquean las tablas con contención de bloqueo debido a actualizaciones y selecciones.

Lea más sobre el bloqueo y el rendimiento here

+0

Buena información y sitio web útil, pero aún así mi pregunta es más acerca de la experiencia del mundo real, el impacto en el rendimiento y la comparación. Los "fantasmas" solo ocurrirían si un cambio está sucediendo en el momento de la lectura? ¿O es un problema general con el bloqueo de ALLPAGES? – mencargo

Cuestiones relacionadas