Belirli bir tablo için MySQL motor tipini nasıl kontrol edebilirim?


391

MySQL veritabanım farklı depolama motorları (özellikle myisam ve innodb) kullanan birkaç tablo içeriyor. Hangi tabloların hangi motoru kullandığını nasıl öğrenebilirim?

Yanıtlar:


507

SHOW TABLE STATUS WHERE Name = 'xxx'

Bu size (diğer şeylerin yanı sıra) Engineistediğiniz bir sütun verecektir .


4
Masam hasar görürse, basitçe Engine = NULL gösterir ve tabloyu onarmamı söyleyen bir "Yorumu" vardır. Ancak, masayı nasıl tamir edeceğimi bilmeden önce, motoru bilmem gerekiyor (dürüst olmak için o kadar uzağa gitmedim.) Bu nedenle, aşağıdaki @ Jocker'ın yorumu bana çok daha yardımcı oldu.
harperville

@Greg, Bunu mu yoksa Jocker'ın çözümünü mü kullanmalıyız?
Pacerier

@Pacerier - Her ikisi de iyi çalışıyor. Aradaki fark, bu çözümün bir tablo için bilgi vermesidir, Jocker'ın çözümü ise bir veritabanındaki tüm tablolar için motor türünü gösterir (biraz daha okunabilir olsa da).
kramer65

@Greg, Btw Motor bilgisi neden yaptığımızda görünmüyor show full columns from t1?
Pacerier

236

Bir veritabanındaki tüm tabloların ve motorlarının listesini göstermek için şu SQL sorgusunu kullanın:

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

dbnameVeritabanı adınızla değiştirin .


3
Bu harika b / c tablename ve motor dışında her şeyi filtreler.
Ton

1
Belirli bir tablonun motorunu almak için aşağıdakileri kullanabilirsiniz: SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = '<database_name>' AND TABLE_NAME = '<table_name>'
userlond

1
Bu bana MySQL 5.6.37 üzerinde boş bir set veriyor.
nnyby

1
Bu daha iyi bir cevap çünkü gerçek SQL, bu yüzden COUNT(*)ve gibi şeyler yapabilirim GROUP BY.
Brandon

47
SHOW CREATE TABLE <tablename>;

Daha az ayrıştırılabilir, ancak daha okunabilir SHOW TABLE STATUS.


41

ya da sadece

show table status;

sadece veritabanınızdaki tüm tabloları listeleyecektir.


2
@NikolaiSamteladze, Seçilen db'de tablolarınız var mı?
Pacerier

15

Jocker'ın cevabına bir parça biraz (Yorum olarak gönderirim, ancak henüz yeterli karmam yok):

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

Bu, motoru olmayan MySQL görünümlerini listeden hariç tutar.


9
SHOW CREATE TABLE <tablename>\G

çıktı ile karşılaştırıldığında çok daha güzel biçimlendirecek

SHOW CREATE TABLE <tablename>;

\GHüner başka birçok sorgular / komutlar için hatırlamak yararlıdır.


1
\ G kesmek sadece
klibi

7
mysqlshow -i <database_name>

belirli bir veritabanının tüm tabloları için bilgileri gösterir.

mysqlshow -i <database_name> <table_name> 

bunu yalnızca belirli bir tablo için yapar.


1
Bu soruya cevap vermez, çünkü tüm tabloların motorlarını görüntüler. Soruyu başlatan belirli bir tablo hakkında bilgi arıyordu.
Tass

4

database_name'den tablo durumunu göster;

Söz konusu veritabanındaki tüm tabloları listeleyecektir.
Örnek çıktı

mysql db örnek çıktısı

tablo durumunu göster burada name = your_desired_table_name;

Söz konusu tabloda kullanılan depolama motorunu gösterecektir.


3

MySQL Workbench kullanıyorsanız, tabloyu sağ tıklatıp 'tabloyu değiştir'i seçebilirsiniz.

Bu pencerede Engine tablonuzu görebilir ve değiştirebilirsiniz.


2

Yine başka bir yol, belki de tek veya eşleşen bir tablo kümesinin durumunu almak için en kısa olanı:

SHOW TABLE STATUS LIKE 'table';

Daha sonra LIKE operatörlerini kullanabilirsiniz, örneğin:

SHOW TABLE STATUS LIKE 'field_data_%';

2

Linux kullanıcısıysanız:

Tablolar olmadan, mysql sunucudaki tüm veritabanları için tüm tablolar için motorlarını göstermek için 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)

En azından Linux'taysanız bunu sevebilirsiniz.

Tüm tablolar için tüm bilgileri açacak less, -Saşırı uzun satırları kesmek için düğmesine basın .

Örnek çıktı:

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

orada bilgi tablolarına gidin 'tablolar' tablo bulacaksınız sonra seçin;

Mysql> info_schema kullanın; Mysql> tablo_adı, tablolardan motor seçin;


0

Bir GUI adam iseniz ve sadece PhpMyAdmin içinde bulmak istiyorsanız , seçtiğiniz tabloyu seçin ve Operationssekme >> Table options>> gidin Storage Engine. Açılır seçenekler listesini kullanarak oradan bile değiştirebilirsiniz.

Not: Bu kılavuz PhpMyAdmin'in 4.8 sürümünü temel almaktadır. Çok eski sürümler için aynı yol garanti edilemez.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.