1

単一のデータベースを使用してマルチテナント アプリケーションに取り組んでいます。いくつかのこと (カテゴリ) は入れ子にすることができます。ネストされたセットの方法論を調べる前に、親子を念頭に置いて始めました。

ネストされたセットに関する私の主な関心事は、ツリーに項目を追加または削除するときにテーブルをロックする (明らかに) 必要があることです。マルチテナント シナリオでは、1 人のユーザーがカテゴリを変更すると、システム上の他のすべてのユーザーのパフォーマンスに重大な影響が生じます。

影響を受ける行がアクセスされないようにする代替手段はありますか? すべての行は、共通の tenant_id によって識別されます。

あなたが提供できるアドバイスを事前に感謝します。

4

1 に答える 1

0

行を変更している場合、その行はロックされます - それを回避する方法はありません。しかし、いくつかの行を変更するときにテーブル全体をロックするのを防ぐことを意味していたと思います。これを防ぐには、MyIsam の代わりに InnoDB エンジンを使用します。MyIsam は、任意の行に変更を加えるとテーブル全体をロックしますが、InnoDB はロックしません。

「非常に高速なロック速度を実現するために、MySQL は InnoDB、BDB、および NDBCLUSTER を除くすべてのストレージ エンジンに対して (ページ、行、または列のロックではなく) テーブル ロックを使用します。」http://dev.mysql.com/doc/refman/5.0/en/table-locking.html

于 2013-02-20T00:28:14.457 に答える