Cơ sở dữ liệu MySQL của tôi chứa một số bảng sử dụng các công cụ lưu trữ khác nhau (cụ thể là myisam và innodb). Làm thế nào tôi có thể tìm ra các bảng đang sử dụng công cụ nào?
Cơ sở dữ liệu MySQL của tôi chứa một số bảng sử dụng các công cụ lưu trữ khác nhau (cụ thể là myisam và innodb). Làm thế nào tôi có thể tìm ra các bảng đang sử dụng công cụ nào?
Câu trả lời:
SHOW TABLE STATUS WHERE Name = 'xxx'
Điều này sẽ cung cấp cho bạn (trong số những thứ khác) một Engine
cột, đó là những gì bạn muốn.
show full columns from t1
?
Để hiển thị danh sách tất cả các bảng trong cơ sở dữ liệu và các công cụ của chúng, hãy sử dụng truy vấn SQL này:
SELECT TABLE_NAME,
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'dbname';
Thay thế dbname
bằng tên cơ sở dữ liệu của bạn.
SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = '<database_name>' AND TABLE_NAME = '<table_name>'
COUNT(*)
và GROUP BY
.
hoặc chỉ
show table status;
chỉ cần điều này sẽ liệt kê tất cả các bảng trên cơ sở dữ liệu của bạn.
Một chút điều chỉnh theo phản hồi của Jocker (tôi sẽ đăng dưới dạng nhận xét, nhưng tôi chưa có đủ nghiệp lực):
SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;
Điều này loại trừ lượt xem MySQL khỏi danh sách, không có công cụ.
mysqlshow -i <database_name>
sẽ hiển thị thông tin cho tất cả các bảng của một cơ sở dữ liệu cụ thể.
mysqlshow -i <database_name> <table_name>
sẽ làm như vậy chỉ cho một bảng cụ thể.
Một cách khác, có lẽ là ngắn nhất để có được trạng thái của một tập hợp các bảng hoặc khớp:
SHOW TABLE STATUS LIKE 'table';
Sau đó, bạn có thể sử dụng các toán tử THÍCH:
SHOW TABLE STATUS LIKE 'field_data_%';
Nếu bạn là người dùng linux:
Để hiển thị các công cụ cho tất cả các bảng cho tất cả các cơ sở dữ liệu trên máy chủ mysql, mà không có bàn information_schema
, mysql
, performance_schema
:
less < <({ for i in $(mysql -e "show databases;" | cat | grep -v -e Database-e information_schema -e mysql -e performance_schema); do echo "--------------------$i--------------------"; mysql -e "use $i; show table status;"; done } | column -t)
Bạn có thể thích điều này, nếu bạn đang ở trên linux, ít nhất.
Sẽ mở tất cả thông tin cho tất cả các bảng trong less
, nhấn -S
để cắt các dòng quá dài.
Ví dụ đầu ra:
--------------------information_schema--------------------
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time C
CHARACTER_SETS MEMORY 10 Fixed NULL 384 0 16434816 0 0 NULL 2015-07-13 15:48:45 NULL N
COLLATIONS MEMORY 10 Fixed NULL 231 0 16704765 0 0 NULL 2015-07-13 15:48:45 NULL N
COLLATION_CHARACTER_SET_APPLICABILITY MEMORY 10 Fixed NULL 195 0 16357770 0 0 NULL 2015-07-13 15:48:45 NULL N
COLUMNS MyISAM 10 Dynamic NULL 0 0 281474976710655 1024 0 NULL 2015-07-13 15:48:45 2015-07-13 1
COLUMN_PRIVILEGES MEMORY 10 Fixed NULL 2565 0 16757145 0 0 NULL 2015-07-13 15:48:45 NULL N
ENGINES MEMORY 10 Fixed NULL 490 0 16574250 0 0 NULL 2015-07-13 15:48:45 NULL N
EVENTS MyISAM 10 Dynamic NULL 0 0 281474976710655 1024 0 NULL 2015-07-13 15:48:45 2015-07-13 1
FILES MEMORY 10 Fixed NULL 2677 0 16758020 0 0 NULL 2015-07-13 15:48:45 NULL N
GLOBAL_STATUS MEMORY 10 Fixed NULL 3268 0 16755036 0 0 NULL 2015-07-13 15:48:45 NULL N
GLOBAL_VARIABLES MEMORY 10 Fixed NULL 3268 0 16755036 0 0 NULL 2015-07-13 15:48:45 NULL N
KEY_COLUMN_USAGE MEMORY 10 Fixed NULL 4637 0 16762755 0
.
.
.
đi đến cơ sở dữ liệu information_schema ở đó bạn sẽ tìm thấy bảng 'bảng' sau đó chọn nó;
Mysql> sử dụng information_schema; Mysql> chọn tên_bảng, công cụ từ các bảng;
Nếu bạn là một anh chàng GUI và chỉ muốn tìm thấy nó trong PhpMyAdmin , hãy chọn bảng bạn chọn và đi qua Operations
tab >> Table options
>> Storage Engine
. Bạn thậm chí có thể thay đổi nó từ đó bằng cách sử dụng danh sách tùy chọn thả xuống.
PS: Hướng dẫn này dựa trên phiên bản 4.8 của PhpMyAdmin. Không thể đảm bảo đường dẫn tương tự cho các phiên bản rất cũ.