MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLの単一データベースでInnoDBとMyISAMのテーブルを混在させることはできる?

はい、可能です。MySQLでは1つのデータベースの中にInnoDBとMyISAMという異なるストレージエンジンのテーブルを混在させて使用できます。用途に応じてエンジンを使い分けることは、実務上も推奨されるアプローチです。

この記事では、単一のデータベース内でInnoDBとMyISAMの両方のテーブルを作成し、実際にそれぞれのエンジンタイプを確認するまでの手順をデモ形式で解説します。

1. データベースの作成

まず、両方のエンジン用テーブルを格納するためのデータベース「BothInnoDBandMyISAM」を作成します。データベースを作成するクエリは以下のとおりです。

mysql> create database BothInnoDBandMyISAM;
Query OK, 1 row affected (0.20 sec)

mysql> use BothInnoDBandMyISAM;
Database changed

これで「BothInnoDBandMyISAM」という名前のデータベースが準備できました。

2. InnoDBエンジンでテーブルを作成する

最初に、ストレージエンジンとしてInnoDBを指定したテーブル「Student」を作成します。ENGINE=InnoDB を明示的に指定して作成するクエリは以下のとおりです。

mysql> create table Student
    -> (
    -> StudentId int,
    -> StudentName varchar(20)
    -> )ENGINE=InnoDB;
Query OK, 0 rows affected (1.20 sec)

3. MyISAMエンジンでテーブルを作成する

次に、同じデータベース内にMyISAMエンジンを使用したテーブル「Employee」を作成します。こちらは ENGINE=MyISAM を指定します。

mysql> create table Employee
    -> (
    -> EmployeeId int,
    -> EmployeeName varchar(30)
    -> )ENGINE=MyISAM;
Query OK, 0 rows affected (0.28 sec)

4. テーブルのストレージエンジンを確認する

作成したテーブルが本当に意図したエンジンになっているかは、information_schema.tables を参照することで確認できます。

まずは1つ目のテーブル「Student」のエンジンタイプを確認するクエリです。

mysql> select engine from information_schema.tables where table_name='Student' and table_schema='BothInnoDBandMyISAM';

実行結果は以下のとおりです。

+--------+
| ENGINE |
+--------+
| InnoDB |
+--------+
1 row in set (0.00 sec)

続いて、2つ目のテーブル「Employee」のエンジンタイプを確認します。

mysql> select engine from information_schema.tables where table_name='Employee' and table_schema='BothInnoDBandMyISAM';

実行結果は以下のとおりです。

+--------+
| ENGINE |
+--------+
| MyISAM |
+--------+
1 row in set (0.00 sec)

まとめ

このように、同一のデータベース内でもテーブルごとに異なるストレージエンジンを自由に指定できます。トランザクションやクラッシュリカバリが必要なテーブルにはInnoDBを、読み取り中心で高速な全文検索などが求められるテーブルにはMyISAMを選ぶといった使い分けが可能です。ただし、現在のMySQLではデフォルトエンジンがInnoDBとなっており、一般的には特別な理由がない限りInnoDBへの統一が推奨されている点にも留意しておきましょう。

  1. MySQLで単一テーブルをバックアップする方法【mysqldumpの使い方を解説】

    MySQLデータベースから特定のテーブルだけをバックアップしたい場合、標準で付属しているダンプユーティリティ「mysqldump」を使うのが最も確実で一般的な方法です。なお、古いMySQL(バージョン5.0およびそれ以前)ではBACKUP TABLEステートメントによるテーブルバックアップも可能でしたが、この構文はすでに廃止されており、現行バージョンでは利用できません。本記事では、mysqldumpを使って単一テーブルのバックアップファイル(.sql形式)を作成する具体的な手順を解説します。ステップ1:コマンドプロンプトを起動するまず、ショートカットキーでコマンドプロンプト(cmd)を開きます

  2. MySQLテーブルがMyISAMまたはInnoDBエンジンを使用しているか確認する方法

    MySQLテーブルのストレージエンジンを確認するには? MySQLでテーブルがMyISAMまたはInnoDBのどちらのストレージエンジンを使用しているかを確認したい場合、SHOW TABLE STATUSコマンドを使うのが最も手軽な方法です。このコマンドを実行すると、エンジンの種類だけでなく、行数や作成日時、照合順序など、テーブルに関する詳細情報を一度に取得できます。 基本構文 SHOW TABLE STATUS FROM データベース名 LIKE テーブル名; 上記の構文では、指定したデータベース内の特定のテーブルに関する情報が表示されます。Engine列の値を確認することで、そのテーブル