recherche

Maison  >  Questions et réponses  >  le corps du texte

使用MongoDB如何改善数据空洞

数据空洞指的是,一个表经历了频繁的update和delete后,其数据文件的尺寸大于其数据实际尺寸。比如show dbs看到一个库为400G,导出再导入后就只有250G。

PHPzPHPz2798 Il y a quelques jours866

répondre à tous(1)je répondrai

  • PHP中文网

    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.

    répondre
    0
  • Annulerrépondre