2009-04-01 15 views
9

Tengo un método que se ejecuta periódicamente para optimizar la base de datos SQL Server Compact Edition (3.5) de mi aplicación. El código existente usa el método Shrink():¿Cuál es la diferencia entre Shrink y Compact en SQL Server CE?

 SqlCeEngine engine = new SqlCeEngine(dbConnectionString); 
     engine.Shrink(); 

Hoy noté que también hay un método Compact(). ¿Cuál es preferible para el mantenimiento periódico?

Respuesta

9

Desde el SQL Server Compact Team Blog:

La diferencia entre estos dos es muy similar a la fragmentación interna y externa memoria.


De SqlCeEngine.Shrink documentación,

recupera desperdicia espacio en la base de datos de moviendo páginas vacías y no asignados al final del archivo, y luego truncar el archivo. Puede configurar una base de datos para reducir automáticamente el configurando la opción de umbral de autoshrink en la cadena de conexión. Shrink no crea un archivo de base de datos temporal .

De SqlCeEngine.Compact documentación,

recupera desperdicia espacio en la base de datos de mediante la creación de un nuevo archivo de base de datos desde el archivo existente. Al crear una nueva base de datos , recupera el espacio libre entre las filas.


Para ser más claro, reducir las reclamaciones páginas que son completamente libre o no asignado ; donde as, Compact reclama el espacio desperdiciado con en la página también. Por lo tanto, Compact requiere la creación de un nuevo archivo de base de datos .

Cuestiones relacionadas