sql >> Database >  >> RDS >> Mysql

Hoe de schijfruimte te berekenen die door de MySQL-tabel wordt gebruikt op basis van kolomgegevenstypes en het aantal rijen?

  • Er is meer overhead dan u noemde. 20 bytes/rij misschien wees dicht .
  • Vertrouw SHOW TABLE STATUS voor het geven van "Rijen", gebruik SELECT COUNT(*) ... Merk op hoe het er bijna een factor 2 naast stond.
  • Bereken de andere kant op:135245332480 / 3017513240 =45 bytes.
  • Uit 45 bytes leid ik af dat veel cellen NULL zijn?
  • Elke kolom in elke rij heeft 1- of 2-byte overhead.
  • De ROW_FORMAT zaken.
  • TEXT en BLOB (etc) hebben radicaal andere regels dan eenvoudige datatypes.
  • De indexen nemen veel meer in beslag dan de 6 bytes die je noemde (zie je andere posting ).
  • Bboomstructuur heeft enige overhead. Wanneer ze in volgorde worden geladen, is 15/16 van elk blok gevuld (dat staat ergens in de documenten). Na churn kan het bereik gemakkelijk 50-100% gevuld zijn; een Btree wordt aangetrokken tot 69% vol (vandaar de 1,45 in de andere posting).

Een gelijke hoeveelheid ruimte reserveren voor back-up...

  • Ik weet niet of ze dat doen.
  • Als ze mysqldump (of iets dergelijks) gebruiken, is het geen veilige formule -- de tekst dump van de database kan aanzienlijk groter of kleiner zijn.
  • Als ze LVM gebruiken, hebben ze ruimte voor een volledige binaire dump. Maar dat is niet logisch vanwege COW.
  • (Dus ik geef het op in Q3.)

Doet de Cloud-service misschien een soort compressie?




  1. Slechts één waarde toevoegen aan de tabel in sql

  2. Eén Django-model, meerdere tafels?

  3. Hoe een externe MySQL-server die op Ubuntu linux draait opnieuw te starten?

  4. Lucene.Net configureren met SQL Server