72

調べてみると、MySQL エンジンのいくつかが innodb と MyISAM であることがわかりました。もしかしたら、あと数個かもしれません。私の質問は、これらのデータベース エンジンとは何ですか?

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

4

4 に答える 4

75
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 はサポートしていませんが、トランザクションと外部キーをサポートしています。

于 2010-11-20T16:51:23.523 に答える
40

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

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

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

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

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

于 2010-11-20T17:00:40.210 に答える
15

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

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

この画像は、MySQL で提供されるいくつかのストレージ エンジンの概要を示しています。

于 2015-02-23T08:00:10.973 に答える