8

私は約30のテーブルを持つデータベースを持っており、そのうちの5つのテーブルは書き込みが集中します。

検討中

  1. 5つの書き込み集約型テーブルをInnoDBエンジンを使用するように変換し、残りをMyISAMエンジンに保持します

  2. InnoDBエンジンを使用するようにすべてのテーブルを変換します。

どちらのアプローチが良いのだろうか?

具体的には

MyISAMエンジンにいくつかのテーブルを保持したい理由は、それらのいくつかには約1,000,000行があるからです。InnoDBに変換した後、これらのテーブルでの「SELECT COUNT(*)」のようなクエリの速度がどれほど遅くなるかはわかりません。

私はテストをしていません。切り替えを開始する前に、誰かからアドバイスをもらうことをお勧めします。

4

2 に答える 2

12

最近、私は常にデフォルトでInnoDBを使用しています。特に、MyISAMが完全なテーブルロックに悩まされている、書き込みが集中するテーブルではそうです。これがポイントの比較です。

MyISAMを使用する理由:

  • テーブルは、選択の重い負荷に対して非常に高速です
  • テーブルレベルのロックは、書き込みが集中するマルチユーザー環境でのスケーラビリティを制限します。
  • 最小のディスクスペース消費
  • 全文索引
  • マージおよび圧縮されたテーブル。

InnoDBを使用する理由:

  • ACIDトランザクション
  • 行レベルのロック
  • 一貫性のある読み取り–優れた読み取り/書き込み同時実行性に到達できます。
  • 主キークラスタリング–場合によっては優れたパフォーマンスが得られます。
  • 外部キーのサポート。
  • インデックスページとデータページの両方をキャッシュできます。
  • 自動クラッシュリカバリ– MySQLのシャットダウンがクリーンでなかった場合でもInnoDBテーブルは–一貫した状態にリカバリします–MyISAMのようなチェック/修復は必要ありません。
  • すべての更新は、InnoDBのトランザクションエンジンを通過する必要があります。これにより、非トランザクションストレージエンジンと比較してパフォーマンスが低下することがよくあります。

上記は、現在機能していないように見えるこのサイトから取得したものです。

于 2010-01-22T02:24:47.143 に答える
2

それぞれの長所と短所。

(1)長所の場合:ディスクスペースの使用量が少なく、読み取りが多いアクセスパターンの場合はmyisamがはるかに高速になります

短所:メモリは、innodbバッファーとmyisamキーバッファーの間で共有する必要があります。innodbテーブルは、対応するmyisamテーブルの約4倍の大きさです。プログラムコードは、デッドロック処理に適合させる必要があります。

インデックス付きの列または主キーを変更する場合も、innodbがロックされることを覚えておいてください。

于 2010-01-22T02:20:40.770 に答える