MySQL:: Re: cum să micșorați o bază de date MySQL
corect. Aceasta este o limitare a fișierului tablespace comun InnoDB lui. Ar fi o operație foarte costisitoare pentru serverul MySQL să compacteze spațiul utilizat în fișierul tablespace și să micșoreze fișierul. Imaginați-vă dacă aveți un fișier tablespace de 100 GB și doriți să efectuați o reconstrucție pentru a-l compacta. De obicei, reconstruirea tabelelor MySQL necesită atât stocarea veche, cât și cea nouă să existe simultan pe disc în timpul operației.
deci, comportamentul InnoDB este de a părăsi spațiul gol, și să-l utilizați pentru inserarea ulterioară a noilor versiuni rând.
vezi:
Bug # 1287http://bugs.mysql.com/bug.php?id=1287
Bug #1341http://bugs.mysql.com/bug.php?id=1341
o soluție pentru micșorarea unui spațiu de masă InnoDB partajat este:
1. Backup * toate * tabele InnoDB cu mysqldump.
2. Aruncați toate mesele InnoDB.
3. Ștergeți fizic fișierul ibdata1 la interfața sistemului de fișiere.
4. Reporniți serverul MySQL, care recreează un fișier nou, mic tablespace.
5. Restaurați toate tabelele InnoDB, care extinde fișierul tablespace după cum este necesar.
o altă soluție este de a utiliza opțiunea de a stoca tabele InnoDB într-un fișier separat pe tabel. A se vedea http://dev.mysql.com/doc/refman/5.0/en/multiple-tablespaces.html dacă faci asta, ar trebui să fie capabil de a utiliza OPTIMIZE TABLE sau ALTER TABLE pe fiecare tabel InnoDB pe care doriți să se micșoreze. Acest lucru ar trebui să reconstruiască .fișier ibd pentru tabelul individual.
Salutări,
Bill K.