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

Proč je MySQL data_free větší než data a indexy dohromady?

Předpokládám, že používáte InnoDB, protože je to výchozí úložiště v MySQL 5.5.

Tabulkové prostory InnoDB rostou, jak vkládáte data, ale soubory se při odstraňování dat nezmenšují. Pokud tedy například vložíte 1 milion řádků a poté je smažete, soubor bude mít spoustu místa, které je fyzicky přiděleno, ale již se nepoužívá. InnoDB tento prostor znovu využije, pokud to bude možné, než znovu rozšíří soubor tabulkového prostoru.

Také, i když nesmažete, může dojít k určitému „zbytečnímu“ prostoru, protože když se zvětší velikost souborů tabulkového prostoru, rozšíří se o velký kus stránek, což je určeno konfigurační volbou innodb_autoextend_increment v megabajtech. Dokud se tyto stránky nezaplní daty, je na nich volné místo.

Data_free, které InnoDB uvádí, je množství „zbytečného“ prostoru na prázdných stránkách v centrálním souboru tabulkového prostoru. Nemá to nic společného s hodnotami NULL, má to co dělat s datovými stránkami, které nemají řádky.

Dále, v MySQL 5.5 je výchozím nastavením, že všechny tabulky sdílejí jeden centrální tabulkový prostor s názvem ibdata . Data_Free pro všechny tabulky v tomto tabulkovém prostoru bude hlásit stejnou hodnotu, což je množství místa na volných stránkách v celém tabulkovém prostoru, nejen pro jednu tabulku.

Můžete také přidělit samostatný tabulkový prostor pro každou tabulku (innodb_file_per_table=1 ) a pro tabulky v samostatných tabulkových prostorech uvidíte pro každou tabulku jinou hodnotu pro data_free.

Data_free hlásí pouze místo, které zůstalo po zcela prázdných rozsahech (rozsah je blok stránek o velikosti 1 MB). Všimnete si, že data_free je vždy násobkem 1 MB. Menší bloky volných stránek se do data_free nezapočítávají ani částečně zaplněné stránky. Takže "promarněný" prostor je pravděpodobně mnohem větší, ale my to nemáme jak poznat.




  1. Jak mohu odkazovat na nadřazenou tabulku ve spojení s více tabulkami?

  2. Vysvětlete chování při mapování sekvence automatického zvýšení složeného ID pomocí režimu spánku

  3. vztahy rodič dítě

  4. Získejte největší číslo v databázi mySQL v PHP