Filegroups. Índices y rendimiento (Performance) en el SQL Server. Filegroups (2) Filegroups (3) Páginas. Indices 03/11/2009



Documentos relacionados
Filegroups. Arquitectura rendimiento y performance Tuning del motor relacional del SQL Server. Filegroups (2) Filegroups (3) Páginas Indices

Asignatura: Administración de Bases de Datos. Pedro P. Alarcón Cavero

OPTIMIZACIÓN DE CONSULTAS EN SQL. Análisis de Consultas y Transacciones Ajuste de Indices Ajuste de Consultas

Contenido Manejo de Concurren en Mysql... 2 Modos de bloqueo InnoDB... 2 InnoDB y AUTOCOMMIT... 3

Administración de transacciones y bloqueos

Base de datos relacional

Consultas con combinaciones

Diseño y Admón. de Bases de Datos. Ingeniería Informática curso 2010/11

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Manejo de Transacciones

BASES DE DATOS AVANZADAS Transacciones en MYSQL

Tablas internas 1-12

Formato para prácticas de laboratorio

HERRAMIENTAS DE ACCESS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Tema 6. Transacciones y seguridad

LABORATORIO 10. ADMINISTRACIÓN DE COPIAS DE SEGURIDAD EN SQL SERVER

Tabla de contenido. Manual B1 Time Task

LABORATORIO 10. Concurrencia y bloqueos en el SMBD Oracle

T ema 2. S is tem as ges tores de bas es de datos

SISTEMA ETAP en línea Estándares Tecnológicos para la Administración Pública

7.1 Estimación de Costos

5- Uso de sentencias avanzadas

Operación de Microsoft Word

BASES DE DATOS SQL MÁS S DE SQL (DML) OPERADOR UNION (L30) <SELECT1> UNION <SELECT2> UNION <SELECTN> Copyright 2006, 2007 Instituto Gala

Entendiendo y Optimizando MySQL

Resumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl

TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

La ventana de Microsoft Excel

SQL Server 2008 Bootcamp Día 2 SQL 2008 FILESTREAM

Estándar de desarrollo de aplicaciones del Govern de les Illes Balears

Modelos y Bases de Datos

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

SQL (Structured Query Language)

T12 Vistas y tablas temporales

BASES DE DATOS curso 2002/3

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

TEMA 3 PROFESOR: M.C. ALEJANDRO GUTIÉRREZ DÍAZ 2 3. PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

CÓMO CREAR NUESTRO CATÁLOGO

Construcción de Escenarios

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

GERENCIA DE INTEGRACIÓN

MANUAL COPIAS DE SEGURIDAD

Lenguaje de Consulta Estructurado S Q. Lenguaje de Consulta Estructurado. Wael Najjar /

Informática I Notas del curso

Universidad Católica Boliviana San Pablo Centro de Sistemas de Información

Introducción a los Sistemas de Gestión de Bases de Datos

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

ANEXO. PROCESOS PARA MANEJAR EL COSTO DE LO VENDIDO EN ASPEL-SAE

ANEXO (NÓMINA DE CANDIDATOS EN SOPORTE INFORMÁTICO

Acceso a la aplicación de solicitud de subvenciones (Planes de Formación 2014)

Toda base de datos relacional se basa en dos objetos

Sub consultas avanzadas

OBTENER DATOS EXTERNOS

MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA

Capítulo 12: Indexación y asociación

Práctica 3. Consultas SQL

Tema 1: Introducción a los S.O. Ejercicios de Planificiación de Procesos

CONSULTAS MULTITABLAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

MATERIAL 2 EXCEL 2007

Base de Datos Práctica 1.

INFORME TECNICO PREVIO DE EVALUACIÓN DE SOFTWARE N /UIE-PATPAL - FBB

Prueba de Concepto, Informes XBRL vs. SGBDR.

Instalación del programa PSPP y obtención de una distribución de frecuencias.

Nociones de performance

Transacciones y bloqueos en SQL-Server

BANCOS. Manejo de Bancos. Como crear una ficha de Banco? Como modificar los datos de una ficha de Banco? Como borrar una ficha de Banco?

Activos Intangibles Costos de Sitios Web

Microsoft SQL Server 2005

UNIDAD EJECUTORA DE CONSERVACION VIAL MANUAL DEL USUARIO DEL SISTEMA INTEGRAL DE CONTROL DE PROYECTOS

DataBase Administration

Trabajos de Ampliación. Bases de datos NoSQL.

Arquitectura de sistema de alta disponibilidad

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

Herramientas para la optimización

Capitulo V Administración de memoria

Servicio de estadísticas de Alojamiento Fecha de revisión: 19/09/2005

IAP ENTORNOS INFORMATIZADOS CON SISTEMAS DE BASES DE DATOS

INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INTRODUCCIÓN INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES INSTRUCCIONES DE DEFINICIÓN DE TABLAS E ÍNDICES

UNIDAD 3 ASPECTOS ASOCIADOS CON BASES DE DATOS. Diseno Físico de Bases de Datos Objetivo. 2.2 Visión General del Procesamiento de Consultas

PLATAFORMA SAP HANA Diez preguntas principales al elegir una base de datos in-memory. Empiece aquí

Boot Camp Manual de instalación y configuración

Presentación 4: ADO.NET

Curso Online de Microsoft

Tema 8: Gestión de la Configuración

QUÉ ES UNA BASE DE DATOS Y CUÁLES SON LOS PRINCIPALES TIPOS? EJEMPLOS: MYSQL, SQLSERVER, ORACLE, POSTGRESQL, INFORMIX (DV00204A)

ESCUELA DE CIENCIAS BASICAS TECNOLOGIA E INGENIERIA Programación de sitios web Act 11: Reconocimiento de la unidad 3

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Otros tipos de Consultas

Usando los disparadores de la base de datos con el Blended Agent para hacer el proceso específico a la aplicación

HP Backup and Recovery Manager

Operación 8 Claves para la ISO

Tutorial Sistema de indicadores Observatorio de la Persona Joven

Menús. Gestor de Menús

Organización de Computadoras. Turno Recursantes Clase 8

Microsoft Access 2007 (Completo)

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

Actualización de versión a Bizagi 10.x

TEMA 6. ARQUITECTURA DE ADO.NET 6.1. INTRODUCCIÓN A ADO.NET

Transcripción:

Índices y rendimiento (Performance) en el Ing. J os e M ariano A lvarez j o s e. m a r i a n o. a l va r e z @g m a i l. c o m www. s qltotalc ons ulting. com http : / / Blog. josemarianoalvarez. com Filegroups un archivo o filegroup puede ser usado solo por una base de datos Un archivo puede ser miembro de un solo filegroup. El log no es parte de ningún filegroup y no puede ser parte de ningún archivo. Un archivo es una unidad de paralelismo y de recuperación. Los filegroups permiten asignar objetos a archivos especificos. 2 Filegroups (2) Las tablas solo se pueden asignar a un filegroup. Se puede crear varios archivos para que use en paralelo los discos. Crea un thread por cada archivo. Si el RAID es por hardware puede que no mejore Permite realizar stripping Filegroups (3) Usar un archivo por disco físico si Disk Queue length <= 3 Verificar que se produce una mejora si se usa Separar los índices no clustered de las tablas en conjuntos de discos separados Combinar Hardware con filegroups separando carga 3 4 Páginas Indices 6 1

Extents Árboles B y Heap 7 8 Qué es un índice? Índices clustered Solo puede haber uno por tabla porque define el orden físico Al crearlo se requiere el doble de espacio de la tabla porque se copian Recomendado para Grandes resultados con Scan por rango Obtención de datos ordenados No recomendado Columnas que se actualizan habitualmente Claves anchas 9 10 Clustered Seek - Cluster 11 12 2

Range - Cluster Índices non Clustered Puede haber varios por tabla (hasta 249) Son estructuras secundarias a la tabla Accesos puntuales Requieren alta selectividad Requiere Bookmark Lookup porque depende del clustered index Son muy útiles con resultados de pocas filas de tablas grandes 13 14 Nonclustered Traversing Bookmark look-up 15 16 Seek Non Cluster Range Non Cluster 17 18 3

Características de los índices Unicidad Ayuda a las estrategias de acceso Selectividad Es el porcentaje de la tabla accedida Selectividad = filas accedidas / Total Selectividad de un join Es el número de filas de una tabla inner de la relación con respecto a una tabla outer definida Definición de índices Fillfactor Indica cuan llenas deben estar las páginas de un índice 0: 100% de todas las páginas ( Only) 100: 100% de las páginas hoja Padd index Indica cuan llenas deben estar las páginas intermedias Se usa junto a fillfactor 19 20 Fill Factor Análisis de las estadísticas de una tabla Muestra la información estadística de una tabla que usa el para seleccionar el mejor plan Densidades Define la selectividad de un índice Density All density Histograma 21 22 Planes de ejecución SET SHOWPLAN_TEXT Muestra la información detallada del plan aproximado (no ejecuta la instrucción) SET SHOWPLAN_ALL Muestra la información detallada del plan aproximado y de los recursos utilizados (no ejecuta la instrucción) Análisis gráfico desde el Query Analyzer Plan estimado (CTRL+L) Plan ejecutado (CTRL+K) Operadores Operadores lógicos Describe la operación algebraica relacional usada para procesar una sentencia Operadores físicos Describe la implementación física del algoritmo usado para procesar una sentencia 23 24 4

Estadísticas de ejecución Statistics time ON Muestra información de tiempo en ms relativa al parsing, compilación y ejecución de cada sentencia Indica que el proceso actualice la columna CPU de la tabla sysprecesses No funcione en el modo FIBER (lightweight pooling ON) Statistics IO ON Muestra información relacionada con el acceso a disco Table scan count logical reads physical reads read-ahead reads Sugerencias Crear primero el Clustered y luego los non clustered Borrarlos en el orden inverso Crear la menor cantidad de índices Hacer los índices tan pequeños como se pueda, especialmente en los clustered Crear índices non clustered que sean altamente selectivos, UNIQUE de ser posible 25 26 Cover index Cover index Todos los datos requeridos están en el índice No accede a las paginas de datos (sin Bookmark Lookup) Solo para índices Non Clustered Actúa como un índice clustered (efectividad y ordenamiento) Es costoso mantenerlos Index intersection Permite el Uso de más de un índice por tabla y por query Obtienen un subconjunto que es la intersección de múltiples índices 27 28 Index Join Utiliza solo índices para satisfacer la consulta mediante técnicas de join Usa técnicas de Index intersection Covering index SARGS (search argument) Limitan las búsquedas mediante un valor exacto o rango No puede haber dos columnas en la condición0/ columna (Operador) <constante o variable> Operadores =, >, <, =>, <=, BETWEEN, y LIKE (con restricciones) Un SARG puede tener varias condiciones con AND si pueden ser resueltas por un índice Un OR puede dar lugar a dos SARG 29 30 5

Otras consideraciones Heurísticas usadas cuando no hay estadísticas disponibles = 10% > 30% < 30% BETWEEN 10% Constraints Pueden provocan accesos adicionales para su verificación Tipos de join Hash: Es efectivo si Ambos conjuntos difieren de tamaño pero no tienen ordenamiento por las columnas del join En resultados intermedios no indexados Merge: Es efectivo si Los conjuntos están ordenados por la columna del join Uno de los conjuntos no esta ordenado pero ambos son del mismo tamaño (Se realiza un SORT) Nested loops: Es efectivo Cuando uno de los conjuntos del join es muy chico (< 10 reg) 31 32 Conceptos de índices Las tablas sin clustered index tienen una fila en sysindexes con indid = 0 Las tablas con clustered index tienen una fila en sysindexes con indid = 1 Las tablas con nonclustered indexes tienen una fila en sysindexes con indid >= 2 Una tabla nunca tendrá indid = 0 e indid = 1 a la vez en sysindexes! Estadísticas Las estadísticas también se almacenan como nonclustered indexes en sysindexes con indid >= 2!! Se almacenan en la columna StatsBlob Cuantas más estadísticas haya en una tabla, menos cantidad de índices se podrán crear!! 33 34 Resumiendo Interacción de las Transacciones Valor en indid Sin clustered 0 Con clustered 1 Non-clustered y estadísticas 2-250 Columna text / ntext / image 255 SQL Server Cliente #3 Cliente #1 Cliente #2 35 36 6

Niveles de Aislamiento Posibles problemas READ UNCOMMITTED READ COMMITTED (default) REPEATABLE READ SERIALIZABLE Uncommitted Dirty Non- Repeatable Phantoms Conflicto en Update Si Si Si No Committed No Si Si No Repeatable No No Si No Serializable No No No No 37 38 Cambio del nivel de aislamiento Cambio del nivel de aislamiento Permanece en vigencia hasta que la conexión se cierre o se lo cambie nuevamente SET TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED READ COMMITTED REPEATABLE READ SNAPSHOT SERIALIZABLE } SET TRANSACTION ISOLATION LEVEL READ UNCOMMITED SELECT UPDATE INSERT SET TRANSACTION ISOLATION LEVEL READ COMMITED SELECT UPDATE INSERT 39 40 READ UNCOMMITTED Especifica que las instrucciones pueden leer filas que han sido modificadas por otras transacciones pero todavía no se han confirmado. READ COMMITTED Especifica que las instrucciones no pueden leer datos que hayan sido modificados, pero no confirmados, por otras transacciones. Esto evita las lecturas no actualizadas. Otras transacciones pueden cambiar datos entre cada una de las instrucciones de la actual, dando como resultado lecturas no repetibles o datos ficticios. Esta opción es la predeterminada para. 41 42 7

REPEATABLE READ Especifica que las instrucciones no pueden leer datos que han sido modificados pero aún no confirmados por otras transacciones y que ninguna otra puede modificar los datos leídos por la actual hasta que ésta finalice. SERIALIZABLE Las instrucciones no pueden leer datos que hayan sido modificados, pero aún no confirmados, por otras transacciones. Ninguna otra puede modificar los datos leídos por la actual hasta que la actual finalice. Otras transacciones no pueden insertar filas nuevas con valores de clave que pudieran estar incluidos en el intervalo de claves leído por las instrucciones de la actual hasta que ésta finalice. 43 44 SNAPSHOT (2005) Especifica que los datos leídos por cualquier instrucción de una vean la versión coherente, desde el punto de vista transaccional, de los datos existentes al comienzo de la. La únicamente puede reconocer las modificaciones de datos confirmadas antes del comienzo de la misma. Las instrucciones que se ejecuten en la actual no verán las modificaciones de datos efectuadas por otras transacciones después del inicio de la actual. El efecto es el mismo que se obtendría si las instrucciones de una obtuviesen una instantánea de los datos confirmados tal como se encontraban al comienzo de la. E quivalencia nivel de aislamiento Locking Hints R E A D U N C O M M I TTE D R E A D C O M M I TTE D R E P E A TA B L E R E A D S E R I A L I ZA B L E N O L O C K o R E A D U N C O M M I TTE D R E A D C O M M I TTE D R E P E A TA B L A R E A D H O L D L O C K 45 SELECT * FROM MI_TABLA WITH (NOLOCK) 46 Modos de las transacciones SET IMPLICIT_TRANSACTIONS { ON / OFF } Implícito Características Tipo de lockeo adquirido (Lock mode) Unidad de datos lockeada (Lock resource) Duración del lockeo (Lock duration) Modo Explícito (default) Transacción Implícita Transacción Explícita Estos datos se mantienen en la pseudo-tabla SysLockInfo 47 48 8

Tipos de locks adquiridos (Lock mode) S hare S E xc lus ive X U pdate U Intent IS / IX / IU R o w P a g e E x t e n t Unidad de datos lockeada (Lock resource) Ta b l e I n d e x k e y R a n g e i n d e x k e y Los Extents se lockean en operaciones de grow de tablas o índices. Tienen lugar dependiendo de la existencia o no de un clustered index. 49 50 Duración de los locks sp_lock Lock Mode Share Committed Hasta que los datos se leen y procesan Repeatable Serializable EXEC sp_lock [ [ @spid_1], [@spid_2] ] Update Hasta que los datos se leen y procesan, a menos que sea escalada a Exclusive y duran hasta el final de la A menos que sea escalada a Exclusive EXEC sp_lock @@spid Exclusive 51 52 Compatibilidad Otros tipos de locks B ulk Update y Schema Modo actualmente existente Modo solicitado IS S U IX SIX X Intent Share (IS) SI SI SI SI SI NO Bulk Update Shared (S) SI SI SI NO NO NO Lock Stability (Sch-S) Update (U) SI SI NO NO NO NO Schema Intent Exclusive (IX) SI NO NO SI NO NO Shared con Intent Exclusive (SIX) SI NO NO NO NO NO Modification (Sch-M) Exclusive NO NO NO NO NO NO 53 54 9

Range locks Solamente aplica en el SERIALIZABLE ISOLATION LEVEL Afecta un rango de claves sin incluir el inicio. Ejemplo en T-SQL sería:nombre > JORGE AND NOMBRE <= JUAN Escalamiento automático de locks escalará los locks que sean posibles cuando el uso de los mismos supere el 40% de la memoria destinada a ellos Para modificar esto utilizar sp_configure locks, valor Optimizer Hints RowLock PageLock TabLock TabLockX 55 56 Latches Mantienen la consistencia de los datos mientras éstos son leídos Raramente se ven errores 844 y 845 Ver el artículo 310834 en http://support.microsoft.com Controlando los locks Niveles de aislamiento / ISOLATION LEVEL SET LOCK_TIMEOUT (nuevo en 7.0) Error 1222 es time-out de lock pero no hace ROLLBACK! Setear SET XACT_ABORT ON READPAST Locking Hint (solo para SELECT) 57 58 Deadlocks Error con deadlocks- SPID 1 Databases Server: Msg 1205, Transaction (Process ID xxx) was deadlocked with another process and has been chosen as deadlock victim. Rerun the transaction. SET DEADLOCK_PRIORITY { LOW / NORMAL / @variable_char } SPID 2 59 60 10

Controlando los deadlocks Utilizar el trace-flag 1204 para registrar en el Log de errores de SQL Server todos los deadlocks. Trace flags Análisis de Performance DBCC TRACEON ( #traza [,...n ] ) Trace Flags Otra forma de usarlos DBCC TRACESTATUS ( #traza [,...n ] ) DBCC TRACEOFF ( #traza [,...n ] ) 61 62 11