データベースの使用されているストレージエンジンを知る方法は?


12

以前は、作成されたすべてのデータベースで、以下を使用しています。

mysql -u root -p
CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL ON dbname.* TO 'dbuser'@'localhost';

MyISAMやInnoDBを意識せずにデータベースを使用する

データベースの使用されているストレージエンジンを知る方法は?

回答:


13

次のようにテーブルごとに確認できます。

USE <database>;
SHOW TABLE STATUS\G

次の行に沿って出力が得られます。

root@localhost/database> show table status\G
*************************** 1. row ***************************
           Name: tablename
         Engine: MyISAM
        Version: 10
     Row_format: Fixed
           Rows: 101
 Avg_row_length: 70
    Data_length: 7070
Max_data_length: 19703248369745919
   Index_length: 2048
      Data_free: 0
 Auto_increment: 1004
    Create_time: 2009-12-07 20:15:53
    Update_time: 2010-11-10 21:55:01
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options: 
        Comment: 

DB内のすべてのテーブルを実行するために知っている方法(SHOW TABLEDB内のテーブルごとにスクリプトを作成する以外に)?
voretaq7 2011年

2
@ voretaq7「SHOW TABLE STATUS」はデフォルトですべてのテーブルを表示します。
Coops、2011年

かっこいい-私はpostgresの男なので、このMySQLと複数のストレージエンジンのすべては私には奇妙です:-)
voretaq7

5

「show engine」コマンドを使用して、アクティブなデフォルトエンジンを表示します

デフォルトエンジンをアクティブにするには、my.cnfファイルの[mysqld]セクションにdefault-storage-engine = InnoDBを追加します。

「show create table table_name」コマンドを使用して、テーブルのデフォルトエンジンを表示します。


SHOW ENGINEERROR 1064(42000)が表示されます。
mstrap 2017

1
show engines;
w00t

4

このクエリは、MySQLのすべてのInnoDBテーブルとそのデータベースをリストします。

SELECT table_name, table_schema 
FROM information_schema.tables 
WHERE engine = 'InnoDB';

すべてのテーブルとそのストレージエンジンを一覧表示することもできます。

SELECT table_name, table_schema, engine
FROM information_schema.tables;

2番目のクエリを試しました-エラーが表示されます:ERROR 1146 (42S02): Table 'information_scheme.tables' doesn't exist (MySQL 5.6.37)
nnyby

1

特定のテーブルのエンジン名を取得するには

use <database_name>
show table status like '<table_name>';

エンジンを変更するには

alter table <table_name> engine <engine_name>;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.