Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Política de Privacidad
Base de Datos
SQL Server, Oracle, Sybase, MySQL.
TIPS
Consejos para disminuir los niveles de
Los índices nonclustered generan menos contención (bloqueos) para operaciones masivas
y concurrentes de modificación (insert/delete/update), mejorando así el rendimiento de las
aplicaciones. Así mismo, se reduce el riesgo de deadlocks.
Es importante tener en cuenta que los índices nonclustered ocupan más espacio que los
clustered y pueden ser algo menos eficientes para ciertas operaciones de lectura (select).
Las tablas densas (muchas filas por página), que sean muy utilizadas, tienden a generar
altos niveles de contención, e incluso deadlocks.
Para mayor información sobre los nuevos niveles de bloqueo introducidos en ASE 11.9.2,
vea el documento "Notas Sobre Bloqueo a Nivel de Fila En Adaptive Server Enterprise
11.9.2" (documento número 10025).
Las tablas donde se realicen operaciones masivas y concurrentes de insert son candidatas
número 1 a ser particionadas utilizando el comando alter table ... partition x. Esto
disminuye la contención sobre las páginas de datos de la tabla, aumentando los niveles de
concurrencia.
Recuerde que en ASE 11.0.x NO es posible crear índices de tipo clustered sobre tablas
particionadas. A partir de ASE 11.5 no existe esta restricción.
Para mayor información sobre uso de cursores en ASE, consulte el documento "Cursores:
Recomendaciones sobre Rendimiento y Uso" (documento número 10034).
Aun cuando la fragmentación de datos en ASE no tiene que ver directamente con los
niveles de concurrencia, el hecho de contar con datos contiguos permite a ASE hacer un
uso más eficiente del objeto (tabla, índice), mejorando los tiempos de acceso a los datos y
en consecuencia reduciendo el tiempo durante el cual se mantienen los bloqueos.
En general, la técnica de reorganización que se utiliza en ASE incluye los siguientes pasos:
ASE 11.9.2 introduce el comando Transact-SQL reorg, el cual reorganiza el uso de espacio
de tablas creadas con esquemas de bloqueo datapage y datarow.
Operacione SQL
1. Evite los bloqueos a nivel de tabla. Esto tiene un efecto adverso sobre grandes volúmenes de
información.
2. ¡Mantenga las transacciones SQL tan cortas como le sea posible! El mantener bloqueos por largos
períodos de tiempo previene que otros usuarios completen sus transacciones.
3. ¡Evite el uso de holdlock cuando le sea posible! Esto hace que los bloqueos se mantengar por
períodos más largos de tiempo. La única excepción ocurre en situaciones donde se requiere de
consistencia de operaciones de lectura dentro de una transacción.
4. Mantenga todas las sentencias SQL de una transacción dentro de pocos paquetes de red como le
sea posible, de tal manera que el rendimiento y los problemas de su red no afecten la duración de
los bloqueos.
5. Evite por completo la interacción de usuario dentro de una transacción, de tal manera que la
duración de los bloqueos no se encuentre bajo el control humano.
6. Para un mejor rendimiento en bases de datos sometidas a frecuentes operaciones de update,
considere diseñar la base de datos para que ocurran operaciones de "actualización en sitio" (update
in place). La siguientes condiciones se deben cumplir:
1. La tabla no puede tener triggers de update.
2. Las columnas que se actualicen no pueden ser de longitud variable ni aceptar valores nulos.
3. Las columnas que se actualicen no pueden formar parte del índice utilizado en el plan de
ejecución del optimizador.
4. El update solamente puede afectar una fila a la vez y esta debe poder ser determinada por el
optimizador en el plan de consulta (por ejemplo, utilice un argumento de búsqueda que
corresponda al índice único).
Comments (0)
DBASupport - Foro
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...
Ir arriba