INFORMACJE_SCHEMA to teoretycznie zestaw widoków określonych w standardzie SQL, które pozwalają użytkownikowi na sprawdzenie metadanych systemu. Jak to jest zaimplementowane w MySQL?
Po podłączeniu do nowej instalacji widzę dwie bazy danych: mysql
i information_schema
. Po użyciu SHOW CREATE TABLE
instrukcji w information_schema
bazie danych wygląda na to, że nie jest ona zaimplementowana jako zestaw widoków, ale zamiast tego zawiera tabele podstawowe. Czy to założenie jest prawidłowe? Czy istnieją inne tabele systemowe, które są ukryte przed użytkownikiem?
mysql
information-schema
Ivotron
źródło
źródło
Odpowiedzi:
Baza danych INFORMACJE_SCHEMA składa się z tabel tymczasowych przy użyciu silnika pamięci MEMORY.
Przykład: Oto tabela INFORMACJE_SCHEMA.TABLES w MySQL 5.5.12 (wersja Windows)
Dla tych tabel nie ma fizycznego folderu, nawet plików .frm. Nie możesz tego mysqldump. Nie możesz tego upuścić. Nie można do niego dodawać tabel. Nie można z niego usuwać tabel. Gdzie są stoły ???
Wszystkie tabele w bazie danych INFORMACJE_SCHEMA są przechowywane bezpośrednio w pamięci jako tabele silnika pamięci MEMORY. Są całkowicie wewnętrzne dla MySQL, więc mechanizmy .frm są obsługiwane w mysqld. W mojej odpowiedzi najpierw pokazałem układ tabeli INFORMACJE_SCHEMA.TABLES. Jest to tymczasowy stół w pamięci. Manipuluje się nim za pomocą protokołów silnika pamięci masowej. Tak więc, gdy mysqld jest zamykany, wszystkie tabele schematu informacji są usuwane. Po uruchomieniu mysqld wszystkie tabele schematu informacyjnego są tworzone jako tabele TEMPORARY i ponownie wypełniane metadanymi dla każdej tabeli w instancji mysql.
Baza danych INFORMACJE_SCHEMA została po raz pierwszy wprowadzona w MySQL 5.0, aby dać ci dostęp do metadanych dotyczących tabel innych silników pamięci masowej. Na przykład możesz wykonać POKAŻ BAZY DANYCH, aby uzyskać listę baz danych. Możesz również zapytać o nie w ten sposób:
Nazwy tabel można pobrać z bazy danych na dwa sposoby:
lub
Od samego początku MySQL rozszerzył bazę danych INFORMACJE_SCHEMA o listę procesów (od MySQL 5.1). W rzeczywistości możesz przeszukiwać listę procesów w poszukiwaniu długo działających zapytań, które nadal działają przez co najmniej 10 minut:
Możesz użyć INFORMACJE_SCHEMA, aby wykonać wszystkie skomplikowane rzeczy: na przykład:
Uzyskaj liczby wszystkich tabel za pomocą określonych silników pamięci:
Uzyskaj zalecany rozmiar bufora kluczy MyISAM w MB
Uzyskaj zalecaną wielkość puli buforów InnoDB w GB
Uzyskaj wykorzystanie dysku wszystkich baz danych przez Storage Engine w MB
Uwierz mi, jest jeszcze więcej cudownych zastosowań dla Information_SCHEMA, że czas nie pozwala mi na dalsze omawianie.
Należy pamiętać, że INFORMACJE_SCHEMA jest tak wrażliwy, że jeśli mysql jest uruchomiony i wykonujesz następujące czynności:
a następnie przejdź do mysql run
Junkfolder zobaczysz jako jedną z baz danych.
Wiedza o tym jest bardzo ważna dla DBA i programistów. Rozdział 20 (programiści) i rozdział 31 (DBA) książki MySQL 5.0 Certification Study Guide
są przygotowani do egzaminów certyfikacyjnych dla programistów i DBA. Zdobądź książkę, dobrze przestudiuj te rozdziały, a możesz robić wspaniałe rzeczy za pomocą INFORMACJE_SCHEMA MySQL.
Baza danych INFORMACJE_SCHEMA od MySQL 5.5 zawiera teraz wtyczki, zmienne globalne (status i statyczne), zmienne sesji (status i statyczne), status silnika pamięci, instrumentację wskaźników wydajności, mapę wyzwalaczy, zdarzenia (programowalne) i wiele więcej.
Niestety może to wyglądać jak WTMI, ale jestem wielkim zwolennikiem korzystania z bazy danych INFORMACJE_SCHEMA.
źródło