0

Innodb は、多数の挿入レコードを同時に取得するテーブルで使用する方が優れていると読みました。私のアプリケーションは、毎秒約 50 レコードを取得します。では、これらのテーブルには Innodb を使用する必要がありますよね?

一方、選択にのみ使用されるいくつかのテーブルがあり、それらはほとんど更新されないか、新しい挿入がほとんどありません。MyIsam は select の方が高速ですか? その場合、一部のテーブルを MyIsam に残し、一部を Innodb に残す方が良いですか、それともすべてのテーブルを同じエンジンで使用する必要がありますか?

私のアプリケーションは、Innodb に渡したいテーブルもよく検索します。私は何をすべきか ?

4

3 に答える 3

2

これらを確認できます:

MyISAM を使用する理由:

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

InnoDB を使用する理由:

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

ここから引用

そして最後の部分について:

覚えて!同じデータベースにテーブル タイプを混在させても問題ありません。実際、これは推奨されており、頻繁に必要とされています。ただし、2 つのタイプを結合するときにパフォーマンスの問題が発生する場合は、一方を他方に変換してみて、問題が解決するかどうかを確認することが重要です。この問題は頻繁には発生しませんが、報告されています。

ここから引用

それで十分だと思います:D

于 2013-07-31T07:05:18.887 に答える
1

はい、できますが、重大なパフォーマンスのボトルネックがない限り、InnoDB のみを使用します

SOに関する同じ質問

MySQL フォーラム

于 2013-07-31T06:51:47.107 に答える
1

要するに、はい、あなたの心のコンテンツに合わせて組み合わせることができます.

次の点に注意してください。

InnoDB は ACID 準拠です。したがって、InnoDB を使用する ACID 機能が必要です。MyISAM は、たとえば外部キー制約などの多くのことをサポートしていません。

現在、速度を正確に定量化することは困難です。実行パスによっては、非常に大きなまたは非常に小さな速度差が生じる場合があります。

ここに正しい答えも間違った答えもないことをテストして確認してください。

于 2013-07-31T06:52:27.207 に答える