Przewidywanie przestrzeni dyskowej dla bazy danych MySQL
Napisał: Patryk Krawaczyński
22/08/2012 w Administracja 1 komentarz. (artykuł nr 364, ilość słów: 273)
M
ożliwość obserwacji tendencji wzrostu danych jest bardzo ważnym elementem dalszego planowania pojemności przestrzeni dyskowej. Na przykład dla baz MySQL 5.0+ informacje o wielkości tabel wybranych baz danych są utrzymywane są w INFORMATION_SCHEMA. W celu ich analizy wystarczy stworzyć bazę danych stats
, w której będziemy okresowo umieszczać interesujące nas informacje:
create database stats; use stats; CREATE TABLE `tables` ( `DAY` date not null, `TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '', `TABLE_NAME` varchar(64) NOT NULL DEFAULT '', `ENGINE` varchar(64) DEFAULT NULL, `TABLE_ROWS` bigint(21) unsigned DEFAULT NULL, `DATA_LENGTH` bigint(21) unsigned DEFAULT NULL, `INDEX_LENGTH` bigint(21) unsigned DEFAULT NULL, `DATA_FREE` bigint(21) unsigned DEFAULT NULL, `AUTO_INCREMENT` bigint(21) unsigned DEFAULT NULL, PRIMARY KEY(DAY,TABLE_SCHEMA,TABLE_NAME), KEY(TABLE_SCHEMA,TABLE_NAME) ) ENGINE=INNODB DEFAULT CHARSET=utf8;
Kolejnym korkiem jest umieszczenie informacji o wybranej bazie danych:
INSERT INTO stats.TABLES SELECT DATE(NOW()), TABLE_SCHEMA, TABLE_NAME, ENGINE, TABLE_ROWS, DATA_LENGTH, INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'BAZA_DANYCH';
Powyższe zapytanie możemy wyzwalać za pomocą dowolnego skryptu lub jeśli dysponujemy bazą w wersji co najmniej 5.1 skorzystać z wewnętrznego mechanizmu zdarzeń w interesujących nasz odstępach czasowych np. raz na dzień, tydzień lub miesiąc. Dzięki w/w czynnością możemy z bazy stats
otrzymywać dane dotyczące szybkości przyrostu wybranych tabel naszej bazy (DATA_LENGTH
), a z nich rysować wykresy przewidujące dalszą modernizację przestrzeni.
Więcej informacji: Polecenie: SHOW CREATE TABLE INFORMATION_SCHEMA.TABLES \G;
, Getting History of Table Sizes in MySQL
Należy mieć na uwadze, że zgodnie z dokumentacją wartość table_rows dla silnika InnoDB jest orientacyjna. Podziękowania dla użytkownika o nicku krogon za przesłanie informacji.