Secara teori, INFORMATION_SCHEMA adalah serangkaian pandangan yang ditentukan dalam standar SQL yang memungkinkan pengguna untuk memeriksa metadata sistem. Bagaimana ini diterapkan di MySQL?
Ketika saya terhubung ke instalasi baru saya melihat dua database: mysql
dan information_schema
. Setelah menggunakan SHOW CREATE TABLE
pernyataan pada information_schema
database, sepertinya itu tidak diimplementasikan sebagai seperangkat pandangan tetapi dengan tabel dasar sebagai gantinya. Apakah asumsi ini benar? Atau ada tabel sistem lain yang disembunyikan dari pengguna?
mysql
information-schema
ivotron
sumber
sumber
Jawaban:
Basis data INFORMATION_SCHEMA terdiri dari tabel sementara menggunakan mesin penyimpanan MEMORY.
Contoh: Ini adalah tabel INFORMATION_SCHEMA.TABLES di MySQL 5.5.12 (Versi Windows)
Tidak ada folder fisik untuk tabel itu, bahkan file .frm. Anda tidak dapat melakukan mysqldump. Anda tidak bisa menjatuhkannya. Anda tidak dapat menambahkan tabel ke dalamnya. Anda tidak dapat menjatuhkan tabel dari itu. Jadi, di mana tabelnya ???
Semua tabel dalam database INFORMATION_SCHEMA disimpan langsung di memori sebagai tabel mesin penyimpanan MEMORY. Mereka sepenuhnya internal untuk MySQL, sehingga mekanisme .frm ditangani di mysqld. Dalam jawaban saya, saya pertama kali menunjukkan tata letak tabel INFORMATION_SCHEMA.TABLES. Ini adalah tabel sementara di memori. Itu dimanipulasi menggunakan protokol mesin penyimpanan. Jadi, ketika mysqld dimatikan, semua tabel information_schema dihapus. Ketika mysqld dimulai, semua tabel information_schema dibuat sebagai tabel TEMPORARY dan diisi ulang dengan metadata untuk setiap tabel dalam instance mysql.
The INFORMATION_SCHEMA database yang pertama kali diperkenalkan pada MySQL 5.0 untuk memberikan akses ke metadata tentang tabel mesin penyimpanan lainnya. Misalnya, Anda bisa melakukan SHOW DATABASES untuk mendapatkan daftar basis data. Anda juga dapat meminta mereka seperti ini:
Anda bisa mengambil nama tabel dalam database dengan dua cara:
atau
Sejak awal, MySQL telah memperluas database INFORMATION_SCHEMA untuk memiliki daftar proses (pada MySQL 5.1). Anda benar-benar dapat meminta daftar proses mencari kueri berjalan lama yang masih berjalan setidaknya 10 menit:
Anda dapat menggunakan INFORMATION_SCHEMA untuk melakukan setiap hal rumit: seperti:
Dapatkan jumlah semua tabel menggunakan mesin penyimpanan khusus:
Dapatkan Ukuran Penyangga Kunci MyISAM yang direkomendasikan dalam MB
Dapatkan Ukuran Kolam Penyangga InnoDB yang disarankan dalam GB
Dapatkan Penggunaan Disk dari semua Database Dengan Mesin Penyimpanan dalam MB
Percayalah, masih ada kegunaan yang lebih baik untuk INFORMATION_SCHEMA bahwa waktu tidak mengizinkan saya untuk membahas lebih lanjut.
Harap diingat bahwa INFORMATION_SCHEMA sangat sensitif sehingga jika mysql berjalan dan Anda melakukan hal berikut:
dan kemudian pergi ke jalankan mysql
Anda akan melihat folder sampah sebagai salah satu basis data.
Mengetahui hal itu sangat vital bagi DBA dan Pengembang. Bab 20 (pengembang) dan Bab 31 (DBA) dari buku Panduan Studi Sertifikasi MySQL 5.0
hadir untuk mempersiapkan Ujian Sertifikasi Pengembang dan DBA. Dapatkan bukunya, pelajari bab-bab itu dengan baik, dan Anda bisa melakukan hal-hal hebat dengan INFORMATION_SCHEMA MySQL.
Database INFORMATION_SCHEMA pada MySQL 5.5, sekarang menampilkan plugin, variabel global (status dan statis), variabel sesi (status dan statis), status mesin penyimpanan, instrumentasi metrik kinerja, peta pemicu, peristiwa (dapat diprogram) dan banyak lagi.
Maaf ini mungkin tampak seperti WTMI tapi saya pendukung besar menggunakan database INFORMATION_SCHEMA.
sumber