Este documento presenta una agenda para un webcast sobre optimización de almacenamiento e índices en SQL Server. La agenda incluye una introducción del orador y organizadores, luego cubre los fundamentos de almacenamiento como páginas, extents y tipos de páginas. También explica los índices, incluyendo su definición y tipos como índices clusterizados y no clusterizados.
Avances tecnológicos del siglo XXI y ejemplos de estos
WebCast de optimización Sql Server - Almacenamiento e Índices
1. WebCast de Optimización Sql Server
Almacenamiento e Índices
Expositor:
Ahias Portillo
elrincondesqlserver@gmail.com
2. Sobre Mi
Arquitecto de Inteligencia de Negocios
Ing. Ahias Portillo, MCT, MCITP DBA, BI
Especialista en inteligencia de negocios y base de datos con mas de 7
años de experiencia, ha desarrollado proyectos para mas de 7 países en
América.
Es un evangelista y conferencista latinoamericano de Sql Server,
actualmente es un miembro activo de PASS.
7. Tipos de Paginas
• File header page
• Boot page
• Page Free Space (PFS) page
• Global Allocation Map (GAM)
page
• Shared Global Allocation Map
(SGAM) page
• Differential Changed Map (DCM)
page
• Bulk Changed Map (BCM) page
• Index Allocation Map (IAM) page
• Data page
• Index page
• Large object (Text and Image)
page
8. File Header Page
Es la primera pagina de cualquier archivo de datos, contiene
información de metadatos sobre los archivos de base de datos.
•
•
•
•
•
•
File ID
File group ID
Current size of the file
Max file size
Sector size
LSN information
9. Boot Page
La pagina de inicio es similar Header page, ya que proporciona
metadatos, con la diferencia que la información proporcionada es
de la base de datos.
• Nombre de base de datos
• Identificador de Base De datos
• Nivel de compactibilidad
• Etc.
10. Page Free Space Page(PFS)
Con el fin de dar seguimiento de las paginas que tienen espacio
disponible, para la inserción de filas, cada datafile contiene Page
Free Space Page.
11. Global Allocation Map Page(GAM)/
Shared Global Allocation Map Page(SGAM)
• GAM: Es similar PFS. Esta pagina determina si un Extent esta
disponible para su asignación a un exten uniforme.
• SGAM: Es similar a GAM con la diferencia, que determina si el
extent esta disponible para ser asignado a un extent Mixed.
12. Differential Changed Map Page (DCM)/
Bulk Changed Map Page(BCM))
• DCM: Se utiliza para determinar si un GAM ha cambiado. Cuando
una medida ha cambia de 0 a 1, estos bit se almacena en DCM.
• BCM: Se utiliza para indicar cuando un intervalo de GAM han
cambiado por operaciones de Bulk_logged.
13. Index Allocation Map Page(IAM)
La anteriores paginas estaban relacionadas a Metada de
almacenamiento.
Una de las cosas mas importante que debe saber Sql Server es
saber si una pagina esta asociada a una tabla o índice, la pagina que
proporciona esta información es IAM.
Cada Tabla o índice comienza primero con una pagina IAM.
14. Data Page/Index Page/Large Object Page
• Data Page: Las paginas de datos se utilizan para almacenar los
datos y son los tipos de paginas mas comunes en todas las base de
datos.
• Index Page: Estas paginas proporcionar información de la
estructura y donde las paginas de datos se encuentran.
• Large Object Page: A diferencia de las paginas de datos que están
limitadas a 8kb. Existe algunos tipos de datos cuyo tamaño
máximo es de 2gb, para ellos se requiere un tipo de
almacenamiento distinto.
16. HEAD
Es una estructura de datos que
almacena la posición física en la
que se almacenó cada nueva fila
dentro de las páginas asignadas a
la tabla. (Cuando no existen
índices)
(http://technet.microsoft.com/en-us/library/aa964133(v=sql.90).aspx)
17. B-Tree
Es una estructura utilizada para la
indexación, y se utiliza tanto para
índices Clustered y NonClustered.
El B-Tree organiza los datos en una
jerarquía de árbol inverso.
(http://www.terrymarshall.com.au/Blog/tabid/162/EntryId/156/SQLServer-2012-Columnstore-Indexes.aspx)
18. Column Store Structure
Es una nueva estructura de
almacenamiento introducida con
Sql Server 2012, y organiza los
índices de una forma tabular y por
fila.
(http://www.terrymarshall.com.au/Blog/tabid/162/EntryId/156/SQLServer-2012-Columnstore-Indexes.aspx)
19. Table Scan
• Realiza un recorrido de todo
los registros en una tabla
hasta encontrar el valor
seleccionado.
• Generan altos costos de
procesamiento.
(http://www.codeproject.com/Articles/55505/SQL-Query-OptimizationFAQ-Part-1-With-video-expla)
20. ¿Que es un Índice?
• Es una estructura de almacenamiento de datos que permite el
acceso eficiente a ellos, por medio de columnas o conjuntos de
columnas que sirven como diccionarios.
21. Tipos de Índices
• Clustered
• NonClustered
• Columnares
• Indices Especiales
• Full Text
• XML
• Spatial
22. Clustered
Los Clustered Indexes son índices
que controlan el orden físico de
las filas en la tabla, por lo cual solo
puede existir uno para cada tabla.
(http://technet.microsoft.com/en-us/library/cc917624.aspx)
23. NonClustered
Los Non-Clustered indexes son
índices que mantienen un sub
conjunto de las columnas de la
tabla en orden. Estos índices no
modifican el orden de las filas de
la tabla, en lugar de esto
mantienen una lista ordenada de
referencias a filas de la tabla
original.
(http://technet.microsoft.com/en-us/library/cc917624.aspx)
27. Columnar
SQL Server 2012 introduce los índices
columnares, los cuales aceleran la
ejecución de consultas con grandes
cantidades de datos, especialmente para
los Almacenes de Datos o Data Warehouse.
La ventaja de los índices columnares es que
leen de disco únicamente las columnas
necesarias para resolver la consulta, lo cual
acelera el proceso de obtención de datos
de disco, éstas columnas son almacenadas
de forma compresa en el disco duro, lo cual
disminuye las operaciónes de IO, y por lo
tanto se obtienen los datos más
rápidamente.
(http://ecastrom.blogspot.com/2012/07/column-store-index-en-sql-server-2012.html)
29. Full Text
Es un índice especialidado para realizar consultas
sobre campos que contienen grandes cantidades
de texto, el acceso de este índice es por medio
de funciones especificas proveeidad por el motor
de Full Text.
(http://technet.microsoft.com/en-us/library/ms142571.aspx)
30. Índices XML/Spatial
XML Index: Se pueden crear en columnas de tipo XML, permite el acceso
por medios de funciones especializadas.
Spacial Index: Se pueden crear sobre columnas de tipo spatial, estas
columnas contiene datos de tipo geometry or geography, y permiten
operaciones especializadas con este tipo de datos.