Jak jste již uvedli -innodb_file_per_table
rozhodne, zda bude jedna tabulka uložena v jednom souboru nebo (pokud je rozdělena) v mnoha souborech.
Zde jsou některé výhody a nevýhody každého přístupu (není nutný úplný seznam).
Single file per table Multiple files per (partitioned) table
-------------------------------------- --------------------------------------
+ System uses less filehandles - System uses more filehandles
+ One one fsync per second per table - Possibly many more fsync calls (bottleneck)
(less fs overhead (journal etc)) (more fs overhead)
+ Single file uses less space overall - Much larger disk space usage
- Single file fragments badly + Less fragmentation
- Optimize table (et al) takes longer + You can choose to optimize just one file
- One file = one filesystem + You can put heavy traffic files on a fast fs
(e.g. on a solid state disk)
- Impossible to reclaim disk space + possible to emergency-reclaim disk space
in a hurry (truncate table takes long) fast (just delete a file)
- ALTER TABLE can use large % of disk- + rebuilding with ALTER TABLE will use less
space for temp tables while rebuilding temp disk space
Obecně bych ne doporučujeme více souborů.
Pokud však vaše pracovní zatížení vede k velké fragmentaci a optimize table
trvá příliš dlouho, použití více souborů bude mít smysl.
Zapomeňte na opětovné získání prostoru
Někteří lidé dělají spoustu povyku kvůli skutečnosti, že soubory tabulky v InnoDB vždy rostou a nikdy se nezmenšují, což vede k plýtvání místem, pokud jsou smazány řádky.
Pak přijdou se schématy, jak tento prostor získat zpět, aby aby vám nedošel volný prostor na disku. (truncate table x
).
Toto bude fungovat mnohem rychleji s více soubory, ale to všechno je nesmysl, protože databáze téměř vždy rostou a (téměř) nikdy se nezmenšují, takže všechno to znovuzískávání místa zabere spoustu času (CPU a IO) během s bude vaše tabulka plně uzamčena (není povoleno žádné čtení ani zápis).
Pouze proto, abyste zjistili, že váš z 90 % plný disk (50 % po opětovném získání) bude z 99 % plný po přidání dat v příštích měsících.
Při používání ALTER TABLE si však dejte pozor...
Zvažte následující scénář:
- Disk je zaplněn z 60 %.
- databáze zabírá 50 %, ostatní soubory zabírají 10 %.
Pokud provedete alter table
na jakékoli tabulce vám dojde místo na disku, pokud máte všechny tabulky v jednom souboru.
Pokud to máte ve více souborech, neměli byste mít problémy (kromě předávkování kofeinem z toho všeho čekání).