InnodbとMyisamのテーブルを同じサーバーに混ぜることは一般的な慣行ですか?

dba.stackexchange https://dba.stackexchange.com/questions/385

質問

8GB RAMを搭載したサーバーで実行されている約4.5GBのデータベースがあります。テーブルの大部分はmyisam(約4.3GB)ですが、すぐに 変換するつもりです それらのいくつかはInnodbに。 (最初は最も書き込み集約型のテーブルに焦点を当てて、ゆっくりとしたプロセスになります)。

両方のタイプのストレージエンジンが存在する専用サーバーを実行することに何か問題はありますか?

役に立ちましたか?

解決

何もありません 間違い それぞれの長所と短所を理解している限り、同じ物理マシンで複数のストレージエンジンを使用すること。すべてのプラグインストレージタイプには、パフォーマンスの考慮事項、機能の制限、ユースケースがあります。

たとえば、90%の書面の小さなテーブルがある場合は、Myisamを選択できます。データを簡単に再生でき、キューイングの場合は小さなテーブルである場合は、メモリを選択できます。 90%の読み取りテーブルがある場合、それを探すときにデータがそこにある必要がある場合、おそらくInnoDBなどのトランザクションと構成可能な原子性をサポートするストレージエンジンを選択するでしょう。ダメージデータを使用してファイルシステムを介してアクセシビリティが必要な場合は、CSVを選択できます。

それにもかかわらず、同じスキーマと物理ホスト内で複数のストレージエンジンを安全に使用できます。

ただし、バッファーがこの混乱全体で役割を果たすことに注意してください。 myisamとinnodbの両方を使用する場合、key_bufferとinnodb_buffer_poolが争わないことに注意する必要があります。これにはあなたの側の慎重な計画が必要ですが、それは私たちがしていることです。

他のヒント

これが一般的な慣行であるかどうかはわかりません。私は自分の経験について言うことができます。

私は常に仕事に最適なツールを使用しているので、常にエンジンを混ぜています。私のプロジェクトのほとんどは、Myisamをデフォルトのエンジンとして使用しています。

Innodbで利用できる特別な機能が必要なときは、私はそれに行きます。

テーブルがほとんど読み取り専用である場合、点滅する前にアーカイブエンジンを選択します。

マシンサーバーに十分なメモリがあることを知っているため、すべての温度データはヒープテーブルに保存されています。

過去にMyisamとInnodbを混ぜ合わせた減速を見ましたが、これは特定のMySQLの問題ではありません。 1つのエンジンだけを使用しても、これは設計上の問題ではありません。実際に間違ったエンジンを使用すると、それがMyisamだけであるかどうか、Innodb、または両方のミックスであるかどうかは関係ありません。スローダウンがいつ発生するかを知るための式を定義するのは困難です。実際のテストだけで言うことができます。

もちろん、ユニークなクエリでInnodbとMyisamを混合する完全性と一貫性を保持することはできませんでした。

私は同じデータベースでMyisamとInnoDBのテーブルを混合しないようにしていますが、これは実際的な理由ではなく正気のためです。ただし、FullText検索用のMyISAMテーブル付きのデータベースを使用して、サイトで実行できると便利です。各エントリの外部キーを備えた別のデータベースに保管すると、DBで作業している他の開発者が何が起こっているのかを簡単に確認できます。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top