2011-11-11 3 views
0

私は顧客、中間、品目タイプのデータベースを持っています。MYSQLでどのDBエンジンを使用するのですか?

お客様は多くのアイテムを購入でき、これはcustomeriditemidという2つの列を持つ「中間」テーブルに格納されます。

現在、すべてのテーブルにmyisamを使用しています。

この構造の中間テーブルにInnodbを使用することをお勧めしますか?

答えて

1

をお勧めします:それは本質的に関係の制約の助けによってそれらの世話をするため、データの整合性を優先出番InnoDBが使用する必要があります

および取引。 行レベルのロックを使用し、挿入または更新されている同じ行に対する変更を保持するだけなので、書き込みが集中する(挿入、更新)表が高​​速になります。

ながら、

MyISAMテーブルはこのように、初心者のためのより良い設計と作成が簡単です。 テーブル間の外部関係について心配はありません。 シンプルな構造のため、InnoDBよりも速いため、サーバーリソースのコストが大幅に削減されます。 フルテキストインデックス作成。 特に、読取り集約型(選択)テーブルに適しています。

比較はかなり簡単です。 InnoDBは、頻繁な挿入と更新を必要とするデータ重大な状況に適しています。一方、MyISAMは、データの完全性に殆ど依存せず、主にデータを選択して表示するだけのアプリケーションでは、パフォーマンスが向上します。

これが役に立ちます。

0

INNODBは、接合表で役立つ非常にのカスケード削除を含むforeign key constraintsをサポートしています。

カスケード削除(単純に入力)は、スキーマがそれ自身の後でクリーンアップすることを可能にします。

あなたのジャンクションテーブルにはカスケード削除と外部キー制約を採用し、あなたはどちらかcustomerまたはitemレコードを削除した場合、それは孤立になっていませんので、マッチングmiddleレコードが削除されます。

私は間違いなくので、私はこのケースではInnoDBを好むINNODB

+0

カスケード削除をすばやく説明できますか? – David19801

+0

@ David19801私の更新された回答を見る – Phil

0

Innodbを使用すると、素晴らしいforegin-keysを定義できます。

そこから、あなたはいくつかの機能があるでしょう:

  • foregin-キーがあまりに件のデータを依存/更新を削除することができます。
  • foregin-keysは、存在する場合、削除/更新を拒否できます。

通常、foregin-keysは早期に決定します:foregin-keyには特別なコード制限が必要です。つまり、顧客やアイテムなしで真ん中を挿入できないことがあります。