Archivo
Archivo
-
-
-
-
- Navegación sincronizada en Total Commander
- Pantalla de bloqueo iOS5
- Desaparece la opción de compartir archivos en WS2003
- Errores que no existen en SQL Server
- Restablecer valores de la columna identidad en SQL...
- Bloquear programas en el Firewall de Windows 7
- Rendimiento SQL Server: grado de paralelismo
- iOS 5 debería llamarse beta
- Read Committed Snapshot Isolation (RCSI)
- Instalando iOS 5 en 2 horas
- Optimizar las estadísticas en SQL Server
- Memoria máxima para SQL Server
- Agregar un valor por defecto en SQL Server
- Errores al mover datos antiguos en SQL Server
- Tipos de campos en SQL Server con PHP
- Tickets que caducan en jQuery
- SQL Server Managment Studio Denali
-
-
-
-
-
-
-
-
Etiquetas
Etiquetas
Entradas populares de este blog
Hacer un select readonly con jQuery
Listado de palabras en castellano
Read Committed Snapshot Isolation (RCSI)
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Con el lanzamiento de SQL Server 2005 se introdujo un nuevo nivel de aislamiento llamado Read Committed Snapshot (aislamiento de instantáneas).
¿Qué son los niveles de aislamiento?
El nivel de aislamiento de una transacción (transaction isolation level) define el grado en que se aísla una transacción de las modificaciones de recursos o datos realizadas por otras transacciones. El nivel de aislamiento de una transacción es una característica de vital importancia en el desarrollo de aplicaciones de base de datos, ya que afecta a los tipos y duración de bloqueos que se producen en nuestra infraestructura de base de datos, lo cual, tiene efectos directos en el rendimiento y tiempo de respuesta de nuestras consultas y transacciones. Además, el nivel de aislamiento nos permite indicar cómo deseamos que se comporte nuestro motor de base de datos frente a situaciones (…) que pueden impactar consistentemente en la eficacia de nuestros desarrollos en entornos de base de datos con concurrencia.
Se pueden consultar más detalles en el artículo sobre ¿Qué es el nivel de aislamiento (Isolation Level) de una Transacción? ¿Qué niveles de aislamiento ofrece SQL Server?
¿Por qué es tan diferente el nivel de aislamiento Snapshot?
Este nivel de aislamiento imita el Nivel 1 de lectura confirmada (Level 1 Read Committed), que es el predeterminado de SQL Server, pero permite una mayor concurrencia y menos bloqueo ya que utiliza un principio de versiones en los registros bloqueados.
Los procesos de lectura y escritura reciben diferentes "versiones" del registro para que no bloquee cada vez que mantiene la coherencia transaccional. Estas versiones de filas se ayudan del almacén de versiones que se mantiene en TempDB.
Optimización para Microsoft Dynamics NAV
Desde la perspectiva de aplicaciones como Microsoft Dynamics NAV no es muy útil como NAV envía sugerencias de nivel de aislamiento con la mayoría de los estados que anularán RCSI, sino que este nivel de asilamiento tendrá un beneficio cuando otras aplicaciones externas accedan a los registros en la base de datos de producción NAV tales como informes, opiniones, y aplicaciones secundarias como SQL Server Reporting Services (SSRS), procesos Extract, Transform and Load (ETL), etc..
Activar Read Committed Snapshot Isolation
Primero comprobemos que no está activado, para ello desde el SQL Server Managment Studio ejecutamos la siguiente instrucción:
USE MASTER
GO
SELECT is_read_committed_snapshot_on FROM sys.databases WHERE name= 'database'
Si el valor devuelto es 0 el nivel de aislamiento de instantáneas (read committed snapshot) no está activado. Para activarlo debemos ejecutar las siguientes instrucciones T-SQL:
USE database
GO
ALTER DATABASE database
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE database SET READ_COMMITTED_SNAPSHOT ON
GO
ALTER DATABASE database SET MULTI_USER
GO
Es muy importante poner en modo de usuario único (SINGLE_USER) la base de datos primero.
NOTA: Cuidado la forma en que escribimos las palabras ROLLBACK IMMEDIATE porque suelen dar errores del tipo Incorrect syntax near.
Es importante tener la base de datos temporales TempDB configurada según las recomendaciones de Microsoft o la asignación de páginas pueden producir cuellos de botella. En un post dentro de poco explicaré cuales son estas recomendaciones.
Al parecer hay cambios en las propiedades de la base de datos en la próxima versión de SQL Server 2011 (code name Denali) y no será necesario escribir el código anterior para activar este nivel de aislamiento de instantáneas, aquí os dejo el post en inglés y una imagen:
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Comentarios