web-dev-qa-db-ja.com

MySQLデータベースエンジンとは何ですか?

見てみると、MySQLエンジンの一部がinnodbとMyISAMであることがわかりました。おそらくもう少ししかありません。私の質問は、これらのデータベースエンジンは何ですか?

異なるMySQLエンジンの違いは何ですか?さらに重要なことは、どのどれを使用するかをどのように決定するのですか?

68
pavanred
mysql> SHOW ENGINES;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+

MySQLを使用する必要がある場合、個人的には常にInnoDBを使用します。 MyISAMはサポートしていませんが、トランザクションキーと外部キーをサポートしています。

69
Vincent Savard

MyISAMとInnoDBは、最も一般的に使用されるエンジンです。

MyISAMはInnoDBよりもわずかに高速で、検索機能の統合に非常に役立つFULLTEXTインデックスを実装しています。 MyISAMは処理されず、外部キー制約を実装しません。これは大きな欠点です。

ただし、両方の長所を使用して、異なるストレージエンジンでテーブルを作成できます。一部のソフトウェア(WordPress、私は思う)は、ページ間の関係、バージョンなど、ほとんどのデータにInnoを使用します。投稿のレコードには、MyISAMを使用する別のコンテンツテーブルのレコードにリンクするIDが含まれます。そのようにして、コンテンツは最高の検索機能を持つテーブルに保存され、他のほとんどのデータはデータの整合性を強化するテーブルに保存されます。

もし私があなただったら、Innoを選ぶでしょう。なぜならそれは最も信頼できるからです。必要な場合にのみ、特定の目的でMyISAMを使用してください。

新しいテーブルを作成するときに、デフォルトでInnoDBを使用するようにデータベースを構成できます。

38
GolezTrol

さまざまなストレージエンジンを利用できますが、MyISAMまたはInnoDBエンジンタイプを使用しない理由はほとんどありません。 MyISAMはほとんどの状況で機能しますが、検索と選択に比べて更新または挿入の数が多い場合は、InnoDBエンジンのパフォーマンスが向上します。 InnoDBから最高のパフォーマンスを引き出すには、サーバーのパラメーターを調整する必要があります。そうしないと、使用しない理由はありません。

MERGEエンジンは、複数の同一に定義されたテーブルからデータをクエリする非常に効果的な方法です。 MEMORYエンジンは、ディスクベースのエンジンで検索するには効率が悪いデータに対して多数の複雑なクエリを実行する最適な方法です。 CSVエンジンは、他のアプリケーションで使用できるデータをエクスポートする優れた方法です。 BDBは、頻繁にアクセスされる一意のキーを持つデータに最適です。

This Image provides an overview of some storage engines provided with MySQL:

12
rajangupta

ここで詳細情報を入手できます: https://en.wikipedia.org/wiki/Database_engine

データベースエンジン(またはストレージエンジン)は、データベース管理システム(DBMS)がデータベースからデータを作成、読み取り、更新、削除(CRUD)するために使用する基礎となるソフトウェアコンポーネントです。ほとんどのデータベース管理システムには、ユーザーがDBMSのユーザーインターフェイスを介さずに基盤となるエンジンと対話できるようにする独自のアプリケーションプログラミングインターフェイス(API)が含まれています。

1
Mogli