0

私は次のクエリを持っています:

UPDATE `users` SET `time-spent-online` = `time-spent-online` + 10 WHERE `id` = 1

MyISAMテーブルで実行するもの:

1 row affected. ( Query took 0.0008 sec )

そして、InnoDBテーブルの実行:

1 row affected. ( Query took 0.0174 sec )

InnoDBがこれほど遅くなるのは正常ですか?代わりにMyISAMを使用する必要がありますか?MyISAMのテーブルロックが怖いです。1000人のユーザーがいて、10秒ごとにすべてのオンラインユーザーに対してこのクエリを実行するとどうなりますか?

4

2 に答える 2

0

InnoDBはMyIsamよりもそれほど遅くないはずです。より多くの更新を行い、クエリにかかった平均時間をとるようにしてください。1つのクエリだけの時間はそれほど正確ではありません。

于 2013-03-04T23:29:20.003 に答える
0

MyISAMとInnoDBについて私が知っていることについて一言:

MyISAMは、トランザクションをサポートせず、データにいかなる種類の参照整合性も適用しないエンジンであり、トランザクションの使用も許可しません(これにより、MyISAMはデータを非常に高速に保存できますが、参照を維持するのはあなた次第です手作業で完全性をきれいにします)。InnoDBはトランザクションと参照整合性をサポートしますが、トレードオフはMyISAMよりも(少し)遅いということです。

簡単な質問:

  1. 参照整合性が必要ですか?
  2. トランザクションを使用する必要がありますか?(ロールバック)

前の質問のいずれかに対する答えが「はい」の場合は、InnoDBが最適です。

于 2013-03-04T23:35:13.727 に答える