-1

myiasm が innodb のようなトランザクションをサポートしていないことを理解しています。

正しい db エンジンを選択することで動作がどのように変化するかの例を教えてください。

4

2 に答える 2

2

MyISAMはテーブルレベルのロックを使用します。InnoDBは行レベルです。

http://dev.mysql.com/doc/refman/5.0/en/internal-locking.html

于 2012-11-21T22:12:41.577 に答える
1

多くの場合、MyISAM は多くの操作で 2 倍以上高速になりますが、準備ができていない場合、この速度のために支払う代償はかなりのものになる可能性があります。MySQL サーバー プロセスのハード クラッシュは、電源喪失の単純なケースを含むさまざまな要因によって引き起こされる可能性があり、MyISAM テーブルが回復不能なほど破損する可能性があります。InnoDB テーブルははるかに耐性があり、自動的に修復および復元されない場合、通常、典型的な最悪のシナリオでは読み取り専用モードで回復できます。

MyISAM が高速である単純な理由は、ジャーナルを保持せず、MVCCを処理する必要がないことです。ただし、これらのことはほとんどのアプリケーションにとって重要です。

いつものように、すべてのデータをタイムリーにバックアップする必要があります。

MyISAM は、パフォーマンスが極端に懸念される派生データにのみ使用することをお勧めします。このために、ソース InnoDB テーブルから MyISAM に、オンデマンドでマテリアライズド ビューとして複製するか、トリガーを使用して同期を維持します。これは、MyISAM を InnoDB データの高速キャッシュとして機能させるのに役立ちます。

パフォーマンスを向上させるために、テーブルをランダムに MyISAM に切り替えることはお勧めしません。

于 2012-11-21T22:14:29.747 に答える