ฉันจะตรวจสอบประเภทเอ็นจิน MySQL สำหรับตารางที่ระบุได้อย่างไร


391

ฐานข้อมูล MySQL ของฉันมีหลายตารางโดยใช้เครื่องมือจัดเก็บข้อมูลที่แตกต่างกัน (โดยเฉพาะ myisam และ innodb) ฉันจะทราบได้อย่างไรว่าตารางใดบ้างที่ใช้เอ็นจิน

คำตอบ:


507

SHOW TABLE STATUS WHERE Name = 'xxx'

สิ่งนี้จะทำให้คุณมีEngineคอลัมน์ซึ่งเป็นสิ่งที่คุณต้องการ


4
หากตารางของฉันเกิดความเสียหายแสดงเพียง Engine = NULL และมี "ความคิดเห็น" บอกให้ฉันซ่อมแซมตาราง อย่างไรก็ตามก่อนที่ฉันจะรู้วิธีการซ่อมแซมตารางฉันคาดเดาว่าฉันต้องรู้เครื่องยนต์ (ฉันยังไม่ได้บอกว่าซื่อสัตย์) ดังนั้นความเห็นของ @ Jocker ด้านล่างนี้มีประโยชน์มากกว่าสำหรับฉันมาก
harperville

@Greg เราควรใช้วิธีนี้หรือวิธีการแก้ปัญหาของ Jocker?
Pacerier

@Pacerier - ใช้ได้ทั้งคู่ ข้อแตกต่างคือโซลูชันนี้ให้ข้อมูลสำหรับหนึ่งตารางในขณะที่โซลูชันของ Jocker แสดงประเภทเอ็นจิ้นสำหรับตารางทั้งหมดในฐานข้อมูล
kramer65

@ Greg, Btw ว่าทำไมไม่ได้ข้อมูลเครื่องมือแสดงขึ้นเมื่อเราทำshow full columns from t1?
Pacerier

236

ในการแสดงรายการของตารางทั้งหมดในฐานข้อมูลและเอ็นจิ้นให้ใช้คิวรี SQL นี้:

SELECT TABLE_NAME,
       ENGINE
FROM   information_schema.TABLES
WHERE  TABLE_SCHEMA = 'dbname';

แทนที่dbnameด้วยชื่อฐานข้อมูลของคุณ


3
มันยอดเยี่ยม b / c มันกรองทุกอย่างยกเว้น tablename และ engine
เสียง

1
ในการรับเอ็นจินของตารางเฉพาะคุณสามารถใช้: SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = '<database_name>' AND TABLE_NAME = '<table_name>'
userlond

1
นี่ทำให้ฉันว่างใน MySQL 5.6.37
nnyby

1
นี่คือคำตอบที่ดีกว่าเพราะมันเป็นความจริง SQL ดังนั้นฉันสามารถทำสิ่งที่ชอบและCOUNT(*) GROUP BY
แบรนดอน


41

หรือเพียงแค่

show table status;

เพียงแค่นี้จะทำรายการตารางทั้งหมดในฐานข้อมูลของคุณ


2
@NikolaiSamteladze, คุณมีตารางใน db ที่เลือกหรือไม่?
Pacerier

15

ปรับแต่งเล็กน้อยเพื่อตอบสนองของ Jocker (ฉันจะโพสต์เป็นความคิดเห็น แต่ฉันยังไม่มีกรรมเพียงพอ):

SELECT TABLE_NAME, ENGINE
  FROM information_schema.TABLES
 WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;

สิ่งนี้ไม่รวมมุมมอง MySQL จากรายการซึ่งไม่มีเครื่องมือ


9
SHOW CREATE TABLE <tablename>\G

จะจัดรูปแบบมันดีกว่าเมื่อเทียบกับผลลัพธ์ของ

SHOW CREATE TABLE <tablename>;

\Gเคล็ดลับยังมีประโยชน์ที่จะจำสำหรับการค้นหาอื่น ๆ อีกมากมาย / คำสั่ง


1
\ G แฮ็คอยู่ภายใต้ cli mysql
gaRex

7
mysqlshow -i <database_name>

จะแสดงข้อมูลสำหรับตารางทั้งหมดของฐานข้อมูลเฉพาะ

mysqlshow -i <database_name> <table_name> 

จะทำเช่นนั้นสำหรับตารางที่เฉพาะเจาะจง


1
สิ่งนี้ไม่ได้ตอบคำถามเพราะมันแสดงเอ็นจินสำหรับตารางทั้งหมด ผู้เริ่มต้นของคำถามกำลังค้นหาข้อมูลเกี่ยวกับตารางที่ระบุ
Tass

4

แสดงสถานะตารางจาก database_name;

มันจะแสดงรายการตารางทั้งหมดจากฐานข้อมูลที่กล่าวถึง
ตัวอย่างผลลัพธ์

ตัวอย่างผลลัพธ์ของ mysql db

แสดงสถานะตารางโดยที่ name = your_desired_table_name;

มันจะแสดงเครื่องมือจัดเก็บข้อมูลที่ใช้โดยตารางที่กล่าวถึง


3

หากคุณใช้งาน MySQL Workbench คุณสามารถคลิกขวาที่ตารางและเลือก 'แก้ไขตาราง'

ในหน้าต่างนั้นคุณสามารถเห็นตารางเครื่องยนต์ของคุณและเปลี่ยนได้


2

อีกวิธีหนึ่งอาจสั้นที่สุดในการรับสถานะของชุดของตารางเดียวหรือจับคู่:

SHOW TABLE STATUS LIKE 'table';

จากนั้นคุณสามารถใช้ตัวดำเนินการ LIKE ตัวอย่างเช่น:

SHOW TABLE STATUS LIKE 'field_data_%';

2

หากคุณเป็นผู้ใช้ linux:

ในการแสดงเครื่องมือสำหรับตารางทั้งหมดสำหรับฐานข้อมูลทั้งหมดบนเซิร์ฟเวอร์ MySQL โดยไม่ต้องตาราง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)

คุณอาจรักสิ่งนี้ถ้าคุณอยู่บน linux อย่างน้อย

จะเปิดข้อมูลทั้งหมดสำหรับทุกตารางในlessกด-Sเพื่อตัดเส้นที่ยาวเกินไป

ตัวอย่างผลลัพธ์:

--------------------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 

.
.
.

0

ไปที่ data_schema ฐานข้อมูลคุณจะพบตาราง 'tables' จากนั้นเลือก

Mysql> ใช้ data_schema; Mysql> เลือก table_name, เอ็นจินจากตาราง;


0

หากคุณเป็นคนGUIและเพียงต้องการค้นหาในPhpMyAdminกว่าเลือกตารางที่คุณเลือกและตรงไปที่Operationsแท็บTable options>>Storage Engine >>คุณสามารถเปลี่ยนได้จากที่นั่นโดยใช้รายการตัวเลือกแบบหล่นลง

PS: คู่มือนี้เป็นไปตาม PhpMyAdmin เวอร์ชัน 4.8 ไม่สามารถรับประกันเส้นทางเดียวกันสำหรับเวอร์ชันที่เก่ากว่านี้มาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.