2009-04-01 9 views
9

J'ai une méthode qui est exécutée périodiquement pour optimiser la base de données SQL Server Compact Edition (3.5) de mon application. Le code existant utilise la méthode Shrink():Quelle est la différence entre Shrink et Compact dans SQL Server CE?

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

Aujourd'hui, j'ai remarqué qu'il existe également une méthode Compact(). Quel est préférable pour l'entretien périodique?

Répondre

9

De l'SQL Server Compact Team Blog:

La différence entre ces deux est très semblable à interne et externe Fragmentation mémoire.


De SqlCeEngine.Shrink documentation,

reconquiert son espace gaspillée dans la base de données en déplaçant les pages vides et non alloués à la fin du fichier, puis tronquer le fichier. Vous pouvez configurer une base de données pour réduire automatiquement en définissant l'option de seuil autoshrink dans la chaîne de connexion. Shrink ne crée pas de fichier de base de données temporaire .

De SqlCeEngine.Compact documentation,

reconquiert son espace gaspillée dans la base de données en créant un nouveau fichier de base de données à partir le fichier existant. En créant un nouveau moyen de base de données , il récupère l'espace libre entre les lignes.


Pour être plus clair, les revendications Shrink les pages qui sont entièrement libres ou non alloué; où comme, Compact prétend l'espace gaspillé avec dans la page aussi. D'où Compact nécessite la création d'un nouveau fichier de base de données .

Questions connexes