質問: drupal mysqlデータベース設計の質問 私はそれをインストールした後私はちょうどdrupalによって作成されたmysqlデータベースを見ていました。 すべてのテーブルはmyisamにあります。 drupalのような複雑なソフトウェアでは、参照整合性を強化するために外部キー、したがってinnodbテーブルを使用するほうが理にかなっていませんか 外部キーがなければ、すべての制約チェックはphp側で行われます。
回答: mysqlはさまざまなデータベースエンジンを提供しています。理由はそれぞれ異なります。 innodbは参照の整合性とトランザクションの安全性を提供する優れたエンジンですが、webサイトの使用例には最適化されていません。 myisamは、ほとんどのヒットがデータベースへの読み取りアクセスのみを必要とするwebサイトに対して最高のパフォーマンスを提供します。 このような場合、参照の整合性は、整合性が損なわれた場合に成功しないようにデータの挿入と削除を書き込むことによって維持できることがほとんどです。 例えば、書く代わりに mytableのwhere id = 5から削除します あなたは書ける mytableからmytableを削除するleft join linkedtable on mytable.id = linkedtable.ref where id = 5かつlinkedtable.refがnullです が外部参照でない場合にのみ、行を削除することに成功します。