Ten artykuł jest wprowadzeniem do pracy z silnikami baz danych w MySQL .
informacje o silnikach baz danych MySQL
silniki baz danych zapewniają podstawową funkcjonalność MySQL do pracy i przetwarzania danych.
dwa najpopularniejsze i najpopularniejsze silniki baz danych MySQL to MyISAM i InnoDB. MyISAM jest domyślnym silnikiem MySQL dla wersji wcześniejszych niż 5.5.5 i działa dobrze w większości scenariuszy. Jednak w zależności od potrzeb, istnieją sytuacje, w których lepszym wyborem może być inny silnik bazy danych, taki jak InnoDB. Na przykład InnoDB obsługuje transakcje, podczas gdy MyISAM nie. InnoDB zapewnia również obsługę kluczy obcych, podczas gdy MyISAM nie.
Jeśli masz dostęp roota do serwera, masz pełną kontrolę nad tym, jak i kiedy MySQL korzysta z różnych silników baz danych. Możesz zmienić domyślny silnik bazy danych, zmienić silnik bazy danych określonej tabeli i nie tylko.
określanie domyślnego silnika bazy danych
aby określić domyślny silnik bazy danych dla instalacji, wpisz następujące polecenie w wierszu polecenia mysql>:
SHOW ENGINES;
zostanie wyświetlona lista obsługiwanych silników wraz z krótkim opisem i obsługiwanymi funkcjami dla każdego silnika. Domyślny silnik bazy danych jest oznaczony jako domyślny w kolumnie wsparcia.
Zmiana domyślnego silnika bazy danych
możesz zmienić domyślny silnik bazy danych dla instalacji MySQL. Po wykonaniu tej czynności wszystkie nowe tabele, które utworzysz, będą korzystać z nowego silnika bazy danych (chyba że wyraźnie ustawisz silnik podczas tworzenia tabeli).
aby zmienić domyślny silnik bazy danych, wykonaj następujące kroki:
- użyj preferowanego edytora tekstu, aby otworzyć my.plik cnf na serwerze. Lokalizacja my.plik cnf zależy od twojej dystrybucji Linuksa:
- na CentOS i Fedorze, my.plik cnf znajduje się w katalogu / etc.
- na Debianie i Ubuntu, my.plik cnf znajduje się w katalogu/etc / mysql.
- w moimplik cnf, znajdź sekcję.
-
Dodaj lub zmodyfikuj następujący wiersz w sekcji. Zastąp silnik nazwą silnika, którego chcesz użyć jako domyślnego:
default-storage-engine=ENGINE
Jeśli włączasz silnik bazy danych InnoDB, w zależności od twojej dystrybucji Linuksa może być konieczne wyłączenie następującej linii w my.plik cnf:
skip-innodb
aby to zrobić, wystarczy dodać znak funta ( # ) na początku wiersza, w następujący sposób:
#skip-innodb
- Zapisz zmiany do my.plik cnf, a następnie zamknij Edytor tekstu.
-
Uruchom ponownie serwer MySQL za pomocą odpowiedniego polecenia dla twojej dystrybucji Linuksa:
- dla CentOS i Fedory, wpisz:
service mysqld restart
-
dla Debiana i Ubuntu, wpisz:
service mysql restart
- dla CentOS i Fedory, wpisz:
- aby potwierdzić nowy domyślny silnik bazy danych, użyj instrukcji SQL Show engines, jak opisano w sekcji Określanie domyślnego silnika bazy danych.
określanie aktualnego silnika bazy danych tabeli
aby określić, którego silnika aktualnie używa tabela bazy danych, wpisz następujące polecenie w prompcie mysql>. Zamień bazę danych na nazwę bazy danych, którą chcesz sprawdzić:
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'database';
To polecenie wyświetla listę każdej tabeli w bazie danych wraz z silnikiem, którego używa każda tabela.
zmiana silnika bazy danych tabeli
możesz zmienić silnik bazy danych dla tabeli, która już istnieje. Na przykład poniższe polecenie SQL pokazuje, jak zmodyfikować tabelę o nazwie myTable, aby używać silnika InnoDB:
ALTER TABLE myTable ENGINE = InnoDB;
Tworzenie nowej tabeli z określonym silnikiem bazy danych
podczas tworzenia tabeli w bazie danych można jawnie ustawić jej silnik bazy danych (w przeciwnym razie MySQL używa domyślnego silnika bazy danych podczas tworzenia tabeli). Na przykład poniższe polecenie SQL pokazuje, jak utworzyć tabelę o nazwie myTable, która korzysta z silnika bazy danych MyISAM:
CREATE TABLE myTable ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), data VARCHAR(20) NOT NULL ) ENGINE MyISAM;
aby utworzyć tabelę, która korzysta z silnika bazy danych InnoDB, możesz użyć następującego polecenia SQL:
CREATE TABLE myTable ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), data VARCHAR(20) NOT NULL ) ENGINE InnoDB;