Objaśnienie przestrzeni tabel

Ukończone

Przestrzeń tabel to grupa plików danych. Każda przestrzeń tabel może przechowywać dane dla jednej lub wielu tabel. Istnieją trzy typy przestrzeni tabel:

  • Systemowa przestrzeń tabel
  • Przestrzeń plików na tabelę
  • Ogólna przestrzeń tabel

Aby wyświetlić pełną listę przestrzeni tabel na serwerze MySQL, uruchom zapytanie:

SELECT TABLESPACE_NAME, FILE_NAME FROM information_schema.FILES;

Zwraca listę przestrzeni tabel wraz z ich nazwami plików.

Pliki danych InnoDB mają rozszerzenie ibd.

Notatka

Baza danych MySQL przeprowadza skanowanie przestrzeni tabel podczas uruchamiania, więc bardzo duża liczba przestrzeni tabel może spowodować, że uruchomienie lub przejście w tryb failover programu MySQL może potrwać dłużej.

Systemowa przestrzeń tabel

Każda baza danych MySQL ma co najmniej jedną przestrzeń tabeli, przestrzeń tabel systemowych i można utworzyć więcej za pomocą instrukcji CREATE TABLESPACE .

Zawsze istnieje systemowa przestrzeń tabel, która jest miejscem przechowywania słownika danych InnoDB i dzienników wycofania.

W usłudze Azure Database for MySQL parametr serwera innodb_data_file_path jest parametrem statycznym ustawionym na autoextend. Spowoduje to skonfigurowanie systemowej przestrzeni tabel w celu automatycznego rozszerzenia, co oznacza, że nie zabraknie miejsca. Nie można zmodyfikować tego parametru, więc nigdy nie musisz martwić się o zmianę rozmiaru przestrzeni tabel systemowych.

Przestrzeń plików na tabelę

Domyślnie dane tabeli i indeksu są przechowywane w przestrzeni tabelowej typu 'file-per-table', inaczej zwanej 'single-table tablespace'. Przestrzeń tabel z jednym plikiem na tabelę zawiera jedną tabelę, w tym dane i indeksy. Gdy tabela zostanie usunięta, przestrzeń tabelowa dla plików osobnych dla każdej tabeli również zostanie usunięta.

Parametr serwera innodb_file_per_table określa, czy każda nowo utworzona tabela jest tworzona we własnej przestrzeni tabel. Domyślnie ten parametr jest ustawiony na WŁĄCZONY. Jeśli innodb_file_per_table ma wartość OFF, nowe tabele są tworzone w przestrzeni tabel systemowych.

Napiwek

Aby uzyskać najlepszą wydajność, nie należy zmieniać domyślnej tabeli innodb_file_per .

Ogólna przestrzeń tabel

Jeśli chcesz przechowywać tabele w utworzonej przestrzeni tabel, użyj składni:

CREATE TABLESPACE mytablespace ADD DATAFILE '/var/lib/mysql/mytablespace.ibd' engine = Innodb;

Aby utworzyć tabelę w utworzonej przestrzeni tabeli ogólnej, użyj następującej składni:

CREATE TABLE new_table (myID INT) TABLESPACE = mytablespace;

Podczas tworzenia ogólnej przestrzeni tabel lokalizacja pliku danych jest opcjonalna. Następująca składnia będzie również działać:

CREATE TABLESPACE mytablespace ADD DATAFILE 'mytablespace.ibd' engine = Innodb;

Ogólne przestrzenie tabel nie są usuwane automatycznie, nawet jeśli wszystkie tabele, które zawierają, zostały porzucone. Aby zrzucić ogólną przestrzeń tabel:

DROP TABLESPACE mytablespace;

Ogólnie rzecz biorąc, lepiej jest zachować domyślną wartość tworzenia każdej nowej tabeli we własnym obszarze tabel dla poszczególnych plików. Jeśli masz dużą liczbę małych tabel, może istnieć trochę nieużywanego miejsca lub fragmentacji, które należy zarządzać, ale ogólna wydajność będzie lepsza.

Najlepsze praktyki dotyczące przestrzeni tabeli

  • Utwórz wszystkie tabele w przestrzeni tabel innodb_file_per_table .
  • Jeśli dowolna tabela ma rozmiar większy niż 1 TB, rozważ partycjonowanie tabeli.
  • Nawet w przypadku dużych tabel rozważ użycie przestrzeni tabel dla pliku na tabelę. Zapobiega to przekroczeniu maksymalnego limitu pojemności przez systemową przestrzeń tabel.