Maison > Questions et réponses > le corps du texte
数据空洞指的是,一个表经历了频繁的update和delete后,其数据文件的尺寸大于其数据实际尺寸。比如show dbs
看到一个库为400G,导出再导入后就只有250G。
PHP中文网2017-04-22 08:58:10
Il n'est pas nécessaire d'exporter puis d'importer, utiliser repairDatabase
ou compact
compressera les données. Mais ils ont un impact sur les performances en fonctionnement.
La commande repairDatabase compacte toutes les collections de la base de données. Elle est identique à l'exécution de la commande compact sur chaque collection individuellement.
Il convient de noter que compact
ne libérera pas l'espace disque demandé comme repairDatabase
, mais les nouvelles demandes de disque utiliseront l'espace alloué. Une autre chose à noter est que les deux commandes nécessitent de l'espace supplémentaire, voir la section sur l'utilisation de Dick. Cela signifie que si l'espace disque est plein, ces deux commandes ne seront pas utilisées. Cependant, à ce moment-là, un nœud esclave peut être resynchronisé et les données du disque peuvent être reconstruites.
Si vous utilisez repairDatabase
ou compact
dans un jeu de répliques, il est préférable d'utiliser la méthode de roulement.
La méthode de roulement consiste à supprimer d’abord un nœud secondaire et à défragmenter le disque. Répétez ensuite les étapes ci-dessus sur tous les nœuds esclaves. Enfin, désactivez le serveur principal et défragmentez le disque qui s'y trouve. Cela peut éviter l'impact de ces opérations sur les services en ligne.
Il est recommandé d'utiliser usePowerOf2Sizes
pour permettre à MongoDB d'utiliser le disque plus efficacement lors de mises à jour et de suppressions fréquentes, car chaque application et version a une puissance de 2.