2009-07-12 10 views
0
 
I was just looking at the MySql database created by drupal after I installed it. 
All the tables are in MyISAM. 

With a complex software like drupal, wouldn't it make more sense to 
use foreign keys and hence InnoDB tables to enforce referential integrity? 

Without foreign keys all the constraint checking will happen at the 
PHP end. 
+0

Drupalはこの参照整合性を保持したいと考えていましたが、データベースベンダーを使用する能力が重要であると考えました。詳細な情報についてはhttp://drupal.org/node/911352 P.S.を参照してください。私は古い投稿に投稿していることを知っていますが、私は検索する人を助けたいと思います。 –

答えて

3

MySQLはさまざまなデータベースエンジンを提供しています。さまざまなエンジンが異なる長所と短所を提供します。 InnoDBはトランザクションの安全性だけでなく参照整合性も提供する素晴らしいエンジンですが、それ以上の読み込みと書き込みを行うWebサイトのユースケースに対してはあまり最適化されていません。

MyISAMは、ほとんどのヒットでデータベースへの読み取りアクセスのみが必要なWebサイトで最高のパフォーマンスを提供します。このような場合、参照整合性は、データの挿入と削除を、完全性を損なう場合に成功できない方法で記述することによって、最も頻繁に維持されます。代わりに、idは= 5

あなたは

はmytableはLEFT JOINのON linkedtable mytable.id = linkedtable.ref ID = 5とlinkedtable FROM mytableはDELETE書くことができますWHERE mytableは。DELETE FROM

の書き込みの例については 、 .ref IS NULL

これは、外部参照がない場合にのみ行の削除に成功します。

関連する問題