Ponieważ innodb_fle_per_table jest WYŁĄCZONY, nie możesz zobaczyć tabeli i zmierzyć jej postępu.
Wcześniej napisałem o tym, jak to zrobić dla MyISAM . Możesz to zrobić dla InnoDB tylko wtedy, gdy włączona jest opcja innodb_file_per_table i ponownie zarchiwizujesz infrastrukturę InnoDB . Nadal wymaga spojrzenia w systemie operacyjnym na rozmiary danych plików.
Po pełnym wdrożeniu czyszczenia programu InnoDB i włączeniu pliku innodb_file_per_table możesz zaktualizować indeks w następujący sposób:
PRZYKŁAD masz następujące
- Instancja MySQL z / var / lib / mysql jako datadir
- Wywołano tabelę InnoDB
db.lotsofdataz 20 milionami nazw:
Tabela wygląda następująco:
CREATE TABLE db.lotsofdata
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30),
PRIMARY KEY (id)
) ENGINE=InnoDB;
Załóżmy, że chcesz utworzyć indeks nazw. Możesz to zrobić:
CREATE TABLE db.lotsofdata_new LIKE db.lotsofdata;
ALTER TABLE db.lotsofdata_new ADD INDEX (name);
INSERT INTO db.lotsofdata_new SELECT * db.lotsofdata;
ALTER TABLE db.lotsofdata RENAME db.lotsofdata_old;
ALTER TABLE db.lotsofdata_new RENAME db.lotsofdata;
TRUNCATE TABLE db.lotsofdata_old;
ALTER TABLE db.lotsofdata_old ENGINE=InnoDB;
DROP TABLE db.lotsofdata_old;
Podczas działania INSERT, wchodzisz do systemu operacyjnego i uruchamiasz to:
cd /var/lib/mysql/db
watch ls -l lotsofda*.ibd
To daje listę aktualnego rozmiaru lotsofdata_new.ibd. Kiedy staje się większy niż lotsofdata.ibd, wtedy wiesz, że jesteś bliski ukończenia.
BTW MariaDB ma wewnętrznie wdrożony Status Postępu .