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)
mysql> show create table information_schema.tables\G
*************************** 1. row ***************************
Table: TABLES
Create Table: CREATE TEMPORARY TABLE `TABLES` (
`TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`TABLE_TYPE` varchar(64) NOT NULL DEFAULT '',
`ENGINE` varchar(64) DEFAULT NULL,
`VERSION` bigint(21) unsigned DEFAULT NULL,
`ROW_FORMAT` varchar(10) DEFAULT NULL,
`TABLE_ROWS` bigint(21) unsigned DEFAULT NULL,
`AVG_ROW_LENGTH` bigint(21) unsigned DEFAULT NULL,
`DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
`MAX_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,
`CREATE_TIME` datetime DEFAULT NULL,
`UPDATE_TIME` datetime DEFAULT NULL,
`CHECK_TIME` datetime DEFAULT NULL,
`TABLE_COLLATION` varchar(32) DEFAULT NULL,
`CHECKSUM` bigint(21) unsigned DEFAULT NULL,
`CREATE_OPTIONS` varchar(255) DEFAULT NULL,
`TABLE_COMMENT` varchar(2048) NOT NULL DEFAULT ''
) ENGINE=MEMORY DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
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:
SELECT schema_name database FROM information_schema.schemata;
Anda bisa mengambil nama tabel dalam database dengan dua cara:
use mydb
show tables;
atau
SELECT table_name from information_schema.tables WHERE table_schema = 'mydb';
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:
SELECT * FROM information_schema.processlist WHERE time >= 600\G
Anda dapat menggunakan INFORMATION_SCHEMA untuk melakukan setiap hal rumit: seperti:
Dapatkan jumlah semua tabel menggunakan mesin penyimpanan khusus:
SELECT COUNT(1) TableCount,IFNULL(engine,'Total') StorageEngine
FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema','mysql')
AND engine IS NOT NULL
GROUP BY engine WITH ROLLUP;
Dapatkan Ukuran Penyangga Kunci MyISAM yang direkomendasikan dalam MB
SELECT CONCAT(ROUND(KBS/POWER(1024,IF(pw<0,0,IF(pw>3,0,pw)))+0.49999),
SUBSTR(' KMG',IF(pw<0,0,IF(pw>3,0,pw))+1,1)) recommended_key_buffer_size
FROM (SELECT SUM(index_length) KBS FROM information_schema.tables WHERE
engine='MyISAM' AND table_schema NOT IN ('information_schema','mysql')) A,
(SELECT 2 pw) B;
Dapatkan Ukuran Kolam Penyangga InnoDB yang disarankan dalam GB
SELECT CONCAT(ROUND(KBS/POWER(1024,IF(pw<0,0,IF(pw>3,0,pw)))+0.49999),
SUBSTR(' KMG',IF(pw<0,0,IF(pw>3,0,pw))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,(SELECT 3 pw) B;
Dapatkan Penggunaan Disk dari semua Database Dengan Mesin Penyimpanan dalam MB
SELECT Statistic,DataSize "Data Size",IndexSize "Index Size",TableSize "Table Size"
FROM (SELECT IF(ISNULL(table_schema)=1,10,0) schema_score,
IF(ISNULL(engine)=1,10,0) engine_score,
IF(ISNULL(table_schema)=1,'ZZZZZZZZZZZZZZZZ',table_schema) schemaname,
IF(ISNULL(B.table_schema)+ISNULL(B.engine)=2,"Storage for All Databases",
IF(ISNULL(B.table_schema)+ISNULL(B.engine)=1,CONCAT("Storage for ",B.table_schema),
CONCAT(B.engine," Tables for ",B.table_schema))) Statistic,
CONCAT(LPAD(REPLACE(FORMAT(B.DSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') DataSize,
CONCAT(LPAD(REPLACE(FORMAT(B.ISize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') IndexSize,
CONCAT(LPAD(REPLACE(FORMAT(B.TSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') TableSize
FROM (SELECT table_schema,engine,SUM(data_length) DSize,SUM(index_length) ISize,
SUM(data_length+index_length) TSize FROM information_schema.tables
WHERE table_schema NOT IN ('mysql','information_schema','performance_schema')
AND engine IS NOT NULL GROUP BY table_schema,engine WITH ROLLUP) B,
(SELECT 2 pw) A) AA ORDER BY schemaname,schema_score,engine_score;
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:
cd /var/lib/mysql
mkdir junkfolder
dan kemudian pergi ke jalankan mysql
mysql> SHOW DATABASES;
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.