sql >> Databáze >  >> RDS >> Mysql

Jak vypočítat místo na disku používané tabulkou MySQL z datových typů sloupců a počtu řádků?

  • Režie je více, než jste zmínil. 20 bajtů na řádek možná být blízko .
  • Nedůvěřujte SHOW TABLE STATUS pro zadání "Řádků" použijte SELECT COUNT(*) ... Všimněte si, jak to bylo téměř dvojnásobné.
  • Počítejte jiným způsobem:135245332480 / 3017513240 =45 bajtů.
  • Ze 45 bajtů jsem usuzoval, že mnoho buněk je NULL?
  • Každý sloupec v každém řádku má 1 nebo 2 bajty.
  • ROW_FORMAT záleží.
  • TEXT a BLOB (atd.) mají radikálně odlišná pravidla než jednoduché datové typy.
  • Indexy zabírají mnohem více než 6 bajtů, které jste zmínili (viz váš jiný příspěvek ).
  • BStromová struktura má určitou režii. Při načítání v pořadí se zaplní 15/16 každého bloku (to je někde v dokumentech zmíněno). Po vyhození může být rozsah snadno naplněn z 50-100%; strom BTree se zaplní na 69 % (proto 1,45 v druhém příspěvku).

Vyhrazení stejného množství místa pro zálohování...

  • Nevím, jestli to dělají.
  • Pokud používají mysqldump (nebo podobný), není to bezpečný vzorec -- text výpis databáze může být výrazně větší nebo menší.
  • Pokud používají LVM, mají prostor pro úplný binární výpis. To ale nedává smysl kvůli KRÁVĚ.
  • (Takže se třetího čtvrtletí vzdávám.)

Mohla by cloudová služba provádět nějakou kompresi?




  1. Skript CREATE exportovaný aplikací MySQL Workbench má na jiném počítači chybu syntaxe

  2. Nelze převést hodnotu data/času MySQL na System.DateTime.Could't uložit hodnotu 0/0/0000 0:00:00?

  3. MySQL a vnořená sada:pomalé JOIN (bez použití indexu)

  4. Převeďte desetinný čas na hodiny a minuty