Sidebar

Este articulo explica la manera en que SQL Server administra los datos internamente. Es importante entender como SQL Server almacena los datos para poder calcular y especificar la cantidad de espacio requerido para alojar una base de datos.

Como se almacenan los datos

 Considera los siguientes puntos de almacenamiento de datos de SQL Server

{mosimage}

  • Todas las bases de datos cuentan con un archivo primario, identificado por la extensión mdf y uno o más archivos de log identificados por la extensión ldf, además de archivos secundarios de datos que se identifican por la extensión ndf.
  • Cuando creas una base de datos, se crea una copia de la base de datos del sistema model que incluye las tablas del sistema. El tamaño mínimo de una base de datos es igual al tamaño de la base de datos model.
  • SQL Server almacena, lee y escribe información en bloques de 8kb continuos llamados páginas. Esto significa que una base de datos puedo almacenar 128 páginas por MB.
  • Un registro no puede expandirse a otra página. Esto significa que el máximo tamaño de un registro eliminando el overhead es de 8060 bytes.
  • Todas las páginas son almacenadas en extents. Un extent consta de 8 paginas continuas o 64KB. Esto significa que una base de datos puede contener 16 extents por MB.
  • El log de transacciones cuenta con toda la información necesaria para recuperarse de una falla. Inicialmente el log de transacciones se configura del 25% del tamaño de los datos y posteriormente se va ajustando a las necesidades de las aplicaciones.

Tipos de páginas y extents

Las páginas y los extents son las primeras estructuras fisicals de una base de datos.

{mosimage}

{mospagebreak}

Tipos de páginas

SQL Server utiliza varios tipos de páginas, algunas administran el espacio y otras contienen datos de usuario e  indices.

Tipos de Extents

SQL Server utiliza dos tipos de extents

  • Extentes que contienen paginas de dos o más objectos llamados mixted extents. Todas las tablas inician con un extent mixto ya que requieren páginas para administrar los espacios asi como páginas para datos.
  • Extents donde su ocho páginas estan dedicadas a un solo objeto llamados uniform extents. Generalmente estos son usados cuando las tablas o indices requieren más de 64KB de espacio.

Páginas que administran el espacio libre

El primer extent de cada archivo de datos es un extent mixto, que contienen una página para elencabezado seguida de 3 paginas para administrar las localidades de datos. SQL Server genera este extent mixto cuando se crea el archivo primario (mdf)

{mosimage}

Página File Header

Esta página contiene los atributos del archivo de datos, como el nombre de la base de datos a la que pertenece el archivo, su flle group, su tamaño mínimo y el incremento. Es la primera página en cada archivo de datos(página 0).

 Página PFS(Page free Soace)

Contiene información sobre el espacio disponible en la páginas de un archivo. SQL Server agrega otras páginas PFS como las vaya necesitando.

Cada pàgina PFS puede administrar 8,000 páginas continuas que es cerca de 64MB de datos. Por cada página, la página PFS contiene 1 byte para administrar:

  • Donde se alojao la página
  • Si la página se encuentra en un extent mixto o uniforme
  • Una aproximación del espacio libre de la página

Páginas GAM y SGAM

SQL Server usa las páginas GAM(Global Allocation Map) y SGAM (Secondary Global Allocation Map) para encontrar la ubicación de extentes vacios o extents mixtos con páginas vacias.

Páginas GAM

Contiene información sobre todos los extents que han sido asignados. La segunda página de cada archivo es una página GAM.

Cada página GAM puede administrar hasta 63,904 extents o cerca de 4GB de datos. Estas páginas contienen 1 bit por cada extent que administran. El bit se pone en 0 si el extent a sido asignado y 1 si se encuentra libre.

Páginas SGAM

Contiene información sobre los extent mixtos que han sido asignados. La tercera página de cada archivo es una página SGAM.

Las páginas SGAM administran los extents mixtos que al menos tienen una página utilizada. Cada página SGAM puede administrar hasta 63,904 extents. Un bit en 0 indica que no tiene páginas libres y el bit en 1 indica que al menos tiene 1 página libre.

{mospagebreak}

Páginas que administran las tablas e índices

SQL Server inicialmente asigna a cada tabla e índice una allocation page y al menos una página en un extent mixto. Como vaya creciendo el objeto, SQL Server asigna hasta 7 páginas más de extents mixtos. Cuando el objeto excede ocho páginas, SQL Server asigna páginas adicionales de extents uniformes.

SQL Server utiliza 4 tipos de páginas para administrar las tablas e indices. Estas pueden aparecer en cualquier localidad de un archivo.

{mosimage}

Páginas IAM

Las páginas IAM son páginas que administran los extents que una tabla o indice utilizan.
Las páginas IAM contienen la localidad de las 8 páginas inciales y un bitmap de extents indicando que extents pertenecen al objeto. Una sola página IAM puede administrar hasta 512,000 páginas de datos.
Las páginas IAM siempre son alojadas en extents mixtos, y pueden estar en cualquierarchivo o filegroup. SQL Server trata de mantener a todas las páginas IAM agrupadas para mejorar el performance.

Páginas de datos
Las páginas de datos contienen toda la información a exepción de datos tipo text, ntext e image.

Páginas de Text/Image
contienen información datos tipo text, ntext e image.

Páginas de Indices
Contienen la esttructura de los índices.


Search

Tips BD