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 bảng nào là sử dụng động cơ nào?Làm cách nào để kiểm tra loại công cụ MySQL cho một bảng cụ thể?
Trả lời
SHOW TABLE STATUS WHERE Name = 'xxx'
này sẽ cung cấp cho bạn (trong số những thứ khác) một cột Engine
, đó là những gì bạn muốn.
SHOW CREATE TABLE <tablename>;
Ít phân tích hơn nhưng dễ đọc hơn SHOW TABLE STATUS
.
hoặc chỉ
show table status;
chỉ rằng điều này sẽ llist tất cả các bảng trên cơ sở dữ liệu của bạn.
Vì một số lý do trả về 0 hàng trong trường hợp của tôi ... –
@NikolaiSamteladze, Bạn có bảng trong db đã chọn không? – Pacerier
Để hiển thị danh sách tất cả các bảng trong cơ sở dữ liệu và động cơ của họ, sử dụng truy vấn SQL này:
SELECT TABLE_NAME,
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'dbname';
Thay dbname
với tên cơ sở dữ liệu của bạn.
Bit của một tinh chỉnh để đáp ứng Jocker của (Tôi sẽ gửi như một bình luận, nhưng tôi không có đủ nghiệp chưa):
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;
này không bao gồm quan điểm MySQL từ danh sách, mà không có một động cơ.
SHOW CREATE TABLE <tablename>\G
sẽ định dạng nó đẹp hơn nhiều so với sản lượng của
SHOW CREATE TABLE <tablename>;
Các \G
lừa cũng rất hữu ích để nhớ cho nhiều truy vấn/lệnh khác.
\ G Hack chỉ dưới cli mysql – gaRex
chuyển đến cơ sở dữ liệu information_schema ở đó bạn sẽ tìm thấy bảng 'bảng' rồi chọn bảng đó;
Mysql> sử dụng information_schema; Mysql> chọn tên_bảng, công cụ từ bảng;
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ể.
Điều này không trả lời câu hỏi vì nó hiển thị các công cụ cho tất cả các bảng. Người khởi xướng câu hỏi đang tìm kiếm thông tin liên quan đến một bảng cụ thể. – Tass
Tuy nhiên, một cách khác, có lẽ là ngắn nhất để có được tình trạng của một bộ duy nhất hoặc phù hợp của bảng:
SHOW TABLE STATUS LIKE 'table';
Sau đó bạn có thể sử dụng LIKE khai thác ví dụ:
SHOW TABLE STATUS LIKE 'field_data_%';
Nếu bạn là một người dùng linux:
Để hiển thị công cụ cho tất cả các bảng cho tất cả cơ sở dữ liệu trên máy chủ mysql, không có bảng 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ể yêu thích điều này, nếu bạn sử dụng 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 đường quá dài.
đầu ra Ví dụ:
--------------------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
.
.
.
Nếu bạn đang sử dụng MySQL Workbench, bạn có thể kích chuột phải vào bảng và chọn 'thay đổi bảng'.
Trong cửa sổ đó, bạn có thể thấy bảng của bạn Engine và cũng có thể thay đổi nó.
Nếu bảng của tôi bị hỏng, chỉ đơn giản là hiển thị Engine = NULL và có "Nhận xét" yêu cầu tôi sửa bảng. Tuy nhiên, trước khi tôi biết làm thế nào để sửa chữa bảng, tôi đoán tôi cần phải biết động cơ (tôi đã không nhận được rằng đến nay phải trung thực.) Vì vậy, bình luận của @ Jocker dưới đây là hữu ích hơn cho tôi. – harperville
@Greg, Chúng ta có nên sử dụng giải pháp này hoặc của Jocker không? – Pacerier
@Pacerier - Cả hai đều hoạt động tốt. Sự khác biệt là giải pháp này cung cấp thông tin cho một bảng, trong khi giải pháp của Jocker cho thấy loại động cơ cho tất cả các bảng trong một cơ sở dữ liệu (trong khi cũng dễ đọc hơn một chút). – kramer65