Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment calculer l'espace disque utilisé par la table MySQL à partir des types de données des colonnes et du nombre de lignes ?

  • Il y a plus de frais généraux que ce que vous avez mentionné. 20 octets/ligne pourraient être proche .
  • Ne faites pas confiance à SHOW TABLE STATUS pour donner "Rows", utilisez SELECT COUNT(*) ... Remarquez qu'il était divisé par près d'un facteur 2.
  • Calculer dans l'autre sens :135245332480 / 3017513240 =45 octets.
  • De 45 octets, j'en déduis que beaucoup de cellules sont NULL ?
  • Chaque colonne de chaque ligne a une surcharge de 1 ou 2 octets.
  • Le ROW_FORMAT importe.
  • TEXT et BLOB (etc) ont des règles radicalement différentes des types de données simples.
  • Les index prennent beaucoup plus que les 6 octets que vous avez mentionnés (voir votre autre message ).
  • La structure BTree a une certaine surcharge. Lorsqu'il est chargé dans l'ordre, 15/16 de chaque bloc est rempli (cela est mentionné quelque part dans la documentation). Après le désabonnement, la plage peut facilement être remplie à 50-100 % ; un BTree gravite à 69 % (d'où le 1,45 dans l'autre message).

Réserver une quantité égale d'espace pour la sauvegarde...

  • Je ne sais pas si c'est ce qu'ils font.
  • S'ils utilisent mysqldump (ou similaire), ce n'est pas une formule sûre -- le texte le vidage de la base de données peut être beaucoup plus grand ou plus petit.
  • S'ils utilisent LVM, ils ont de la place pour un vidage binaire complet. Mais cela n'a pas de sens à cause de COW.
  • (Donc, j'abandonne Q3.)

Le service Cloud pourrait-il effectuer une sorte de compression ?