次の仮定で、このシナリオを考えます。選択(InnoDBは対MyISAMテーブル)
- データベースが非クリティカルWebアプリケーションのために使用されています。
- クエリの速度は非常に重要です。
- 読み取り/書き込みパターンは、およそ> 95%読み取りであり、< 5%書き込みです。
- データベースは毎日mysqldumpを使用してバックアップされます。
- トランザクションや高度クラッシュリカバリは不要です。データベースがクラッシュした場合、私は昨晩のmysqldumpをインポートするだけです。このシナリオではこれで十分です。
- フルテキスト検索は不要です。言った仮定の下で
長所:
- それは(一つの例外を除いて - 下記参照)は非常に高速です。
- 軽量で、ファイルシステム(.MYD/.MYI/.frm)のデータベース/テーブルと物理ファイルとのマッピングを分かりやすくしています。
- 簡単バックアップ(mysqldump)。
オールインワン私はMyISAMに大変満足しています。 MyISAMには、上記の仮定の下で1つの大きな欠点があり、それはテーブルレベルのロックです。 UPDATEが頻繁に読み込まれるテーブルに向かって実行されている場合、すべての読み取りはブロックされます。言うまでもなく、これは解決しなければならない大きなパフォーマンス上の問題を引き起こします。
私の質問は以下のとおりです。
- のMyISAMから離れて切り替えることなく、テーブルレベルのロックを取り除くためにいくつかの方法がありますか?
- InnoDBに切り替える必要がある場合、InnoDBをできるだけMyISAMと同様に動作するように(どのトランザクション、論理ファイル構造なども考えないで)InnoDBを構成するにはどうすればよいですか? InnoDBを「MyISAMと似ていますが、テーブルレベルのロックがない」ように設定するにはどうすればよいですか?
実際のデータベースを使用したことはありますか?たとえば、ポストグル。 – lumpynose
ポストグルを使用することは、少なくともInnoDBと同じくらい多くの変更を意味します。これにより、より多くのバグが発生します。 – MarkR