recherche

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

Comment défragmenter la base de données mongodb sans temps d'arrêt ?

Après avoir supprimé une grande quantité de données redondantes dans mongo, j'ai constaté que la mémoire et les fichiers ne diminuaient pas. Ils occupaient toujours beaucoup de mémoire et de disque dur, et les performances ne changeaient pas beaucoup.

習慣沉默習慣沉默2789 Il y a quelques jours759

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

  • PHP中文网

    PHP中文网2017-05-02 09:24:51

    Quelle version de MongoDB et quel moteur ?
    Les moteurs WT supérieurs à 3.2 peuvent utiliser Compact pour libérer de l'espace. Les versions précédentes, qu'elles soient WT ou MMAPv1, ne pouvaient libérer de l'espace qu'en resynchronisant le jeu de réplicas.
    Le problème est qu'il n'est généralement pas nécessaire de le publier dans un environnement de production, car tôt ou tard il sera à nouveau occupé, et l'espace libre sera de toute façon réutilisé. Si vous ne manquez pas vraiment de cet espace, ne le faites pas. Je ne le libère pas.
    Quant à savoir s'il s'agit d'un problème de temps d'arrêt, ce n'est pas seulement ce problème. La plupart du temps, des jeux de réplicas doivent être envisagés pour le résoudre. Plusieurs nœuds fonctionnent en parallèle pour se préparer à l'absence de temps d'arrêt. différence pour en supprimer un pour la maintenance. Le problème est que lorsque vous obtenez le nœud principal, il peut ne pas être accessible en écriture pendant quelques secondes.

    En théorie, la récupération d'espace disque n'aura aucun impact bénéfique sur les performances. Cependant, un bug est survenu dans le moteur WiredTiger utilisé dans les versions 3.0.6 et 3.0.7. Lorsqu'un grand nombre de documents étaient supprimés, BTree avait un équilibre incorrect, entraînant une grave dégradation des performances. Pour plus de détails, veuillez vous référer au JIRA Ticket SERVER-21063.

    répondre
    0
  • Annulerrépondre