2010-08-16 113 views
5

Por alguna razón, mi archivo MDF es 154gigs, sin embargo, solo cargué 7 gigas de datos de archivos planos. ¿Por qué el archivo MDF es mucho más grande que los datos fuente reales?Tamaño de archivo MDF mucho más grande que los datos reales

Más información:

Sólo unas pocas mesas con ~ 25 millones de filas. No hay grandes campos varchar (el más grande es 300, la mayoría son menos que varchar (50). Tablas no muy anchas < 20 columnas. Además, ninguna de las tablas grandes está indexada todavía. Las tablas con índices tienen menos de 1 millón de filas. t uso char, solamente varchar para cuerdas. Tipo de datos no es la cuestión.

Resultó que era el archivo de registro, no el archivo mdf. el archivo MDF es en realidad 24gigs que parece más razonable, sin embargo sigue siendo grande en mi humilde opinión.

ACTUALIZACIÓN:

Solucioné el problema con el archivo LDF (log) cambiando el modelo de recuperación de COMPLETO a simple. Esto está bien porque este servidor solo se usa para el desarrollo interno y el procesamiento ETL. Además, antes de cambiar a SIMPLE tuve que reducir el archivo LOG. En la mayoría de los casos, no se recomienda encogerse, pero este fue uno de esos casos en los que el archivo de registro nunca debería haber crecido tanto y tan rápido. Para obtener más información, consulte this

Respuesta

3

Podría haber muchas razones por las que quizás esté usando char (5000) en lugar de varchar (5000), quizás esté utilizando bigints en lugar de int, nvarchar cuando todo lo que necesita es varchar, etc. Tal vez estés usando una gran cantidad de índices por tabla, todos estos se sumarán. Tal vez su configuración de crecimiento automático sea incorrecta. Está seguro de que este es el MDF y no el archivo LDF ¿verdad?

+0

Además, tenga cuidado con el factor de relleno dudoso en los índices: he encontrado índices en más de una ocasión con un factor de relleno del 10% en lugar del 90% previsto. :) –

+0

Además, la fragmentación del índice podría ser un factor. http://www.sqlmag.com/article/tsql3/automatic-reindexing.aspx – David

+1

Me siento tonto. Es el archivo de registro. –

4

Debido a que el MDF se asignó con 154 Gb, o ha crecido a 154 Gb a través de varias operaciones. Un archivo de base de datos tiene al menos el tamaño de los datos que contiene, pero puede ser mayor que el monto utilizado por cualquier cantidad.

Una pregunta obvia será ¿cómo se mide la cantidad de datos en la base de datos? ¿Usaste sp_spaceused? ¿Marcó sys.allocation_units? ¿Lo adivinaste?

Si el tamaño utilizado es de hecho 7Gb de 154Gb, entonces debe dejarlo como está. La base de datos fue dimensionada por alguien de este tamaño, o ha crecido, y es probable que vuelva a crecer. Si crees que el crecimiento o el ajuste previo del tamaño fue accidental, entonces el punto anterior aún se aplica y debes dejarlo tal como está.

Si está absolutamente seguro de que la sobreasignación es un error, puede reducir la base de datos, con todos los negative consequences of shrinking.

+0

Buena información. No soy administrador de DB, pero leeré algo de esto. Gracias. –

0

O AUTO SHRINK no está habilitado o El tamaño inicial se estableció en el valor más grande.

Cuestiones relacionadas