2011-01-11 12 views
19

Me he encontrado con la página en SQL Server 2008, y me siento algo confundido al respecto. Actualmente estoy leyendo MCTS Self-Paced Training Kit (Exam 70-433): Microsoft SQL Server 2008-Database Development, donde los autores discuten el concepto, pero de forma limitada.¿Qué es una página en SQL Server y debo preocuparme?

De MSDN "Understanding Pages and Extents" Recibo una respuesta que realmente no ayuda. La página web describe el tamaño (8 kb) de una página y cómo se almacenan las filas en la página, y cómo las columnas se moverán automáticamente (por SQL Server) si las filas no caben en la página.

Pero aún así, me pregunto si el nivel de página es algo que debería prestar atención al diseño de una base de datos con diagramas ER, tablas y tipos de datos? O, ¿debería simplemente confiar en que SQL Server maneja las páginas automáticamente y de la mejor manera posible?

alt text

Gracias por escuchar!

+1

MS docs son en su mayoría BS. No estas solo. –

Respuesta

30

¡SÍ! Una página es el elemento más básico de almacenamiento en SQL Server.

De los 8192 bytes en una página, aprox. 8060 están disponibles para usted como usuario. Si logra encajar sus filas de datos en la página muy bien, requerirá mucho menos almacenamiento.

Si su fila de datos, p. tiene 4100 bytes de longitud, solo una fila se almacenará en una página (y el resto de la página, 3960 bytes, es espacio desperdiciado). El punto importante es: esas páginas no solo son relevantes en el disco, sino también en la memoria principal de SQL Server -> desea evitar grandes áreas de espacio que no pueden contener información útil en una página.

Si logra reducir su fila para ocupar 4000 bytes, de repente puede almacenar dos filas en una página, y así reducir significativamente la sobrecarga de espacio desperdiciado (hasta 60 bytes por página).

+1

Gracias Marc! Eso es justo lo que necesitaba saber.Por lo tanto, cuanto más grandes sean las filas de datos, más importante es saber cuántos bytes contiene: para garantizar un espacio bien utilizado en SQL Server. ¡Gran respuesta! –

+0

+1 Marc, ¿Y cómo puede evitar las manchas desperdiciadas? –

+0

@marc_s dijiste: _tienes que evitar grandes cantidades de espacio desperdiciado. ¿Cómo puedo minimizar esas manchas desperdiciadas? (Suena como el comando defrag ALIKE) –

7

No necesita preocuparse por la estructura de la página de 8 KB hasta que llegue a problemas de rendimiento. Pero en caso de que quiera conocer las páginas internas de la página de 8 KB, aquí hay un video de youtube http://www.youtube.com/watch?v=He8MRttysmY que muestra cómo se ven las páginas de 8 KB.

enter image description here

1.Page tiendas de cabecera información sobre la página como el tipo de página, siguiente y página anterior si se trata de una página de índice, el espacio libre en la página etc.

2. Después de los datos de cabecera de la página sección de fila sigue. Aquí es donde los datos se almacenan realmente.

3. La información de desplazamiento de la fila se almacena al final de la página, es decir, después de la sección de fila de datos. Cada fila de datos tiene un desplazamiento de fila y el tamaño del desplazamiento de fila es de 2 bytes por fila. La compensación de fila almacena información sobre cuán lejos está la fila desde el inicio de la página.

Poner en palabras simples la ecuación completa de la página viene como se muestra a continuación.

Página (8 KB/8192 bytes) = cabecera de la página (96 bytes) + reales datos (Cualquiera que sea bytes) + fila de desplazamiento (2 bytes por fila).

+0

¿Cuándo empiezo a preocuparme por los problemas de rendimiento relacionados con la página? ¿Puedes darme algunos ejemplos? –

+2

-1 b/c de "No necesita preocuparse por la estructura de la página de 8 KB hasta que llegue a problemas de rendimiento". Actualmente estoy tratando de arreglar un servidor sql de producción con una tabla que contiene 173 millones de filas. El rendimiento (y, por lo tanto, el tamaño de página) se debe considerar en el momento del diseño. – ray

+0

Aunque esta respuesta es informativa, no creo que sea inteligente ignorar el tamaño de la página hasta que surja un problema. –

Cuestiones relacionadas