MySQLのマニュアルによると:
大きなテーブルの場合、多くの場合、テーブルのロックは行のロックよりも優れています。
どうしてこれなの?より大きなテーブルをロックすると、より多くのデータがロックされるため、行レベルのロックの方が優れていると思います。
MySQLのマニュアルによると:
大きなテーブルの場合、多くの場合、テーブルのロックは行のロックよりも優れています。
どうしてこれなの?より大きなテーブルをロックすると、より多くのデータがロックされるため、行レベルのロックの方が優れていると思います。
(編集前)リンクから
多くのロックを取得する必要があるため、テーブルの大部分で使用すると、ページ レベルまたはテーブル レベルのロックよりも遅くなります。
1 行または 2 行しかヒットしない場合は、行レベル ロックを使用します。コードが多くの行または不明な行にヒットする場合は、テーブル ロックを使用してください。
行のロックは、テーブルまたはページ レベルのロックよりも多くのメモリを必要とします。
行ロックでより多くのロックを取得する必要があり、より多くのリソースを消費します
http://www.devshed.com/c/a/MySQL/MySQL-Optimization-part-2/から
行レベルのロックの利点:
行レベルのロックの欠点:
次の場合、テーブル ロックはページ レベルまたは行レベルのロックよりも優れています。
UPDATE tbl_name SET column=value WHERE unique_key_col=key_value;
DELETE FROM tbl_name WHERE unique_key_col=key_value;
行テーブル レベルのロックは、主要なデータ変更が行われている大きなテーブルに適しています。これにより、システムは、無数のロック (行ごとに 1 つ) を処理する必要がなくなり、テーブルの単一のロックと競合できます。
RDBMS は、ロック レベルを内部的に自動的にエスカレートします。
テーブルのロックにより、多くのセッションがテーブルから同時に読み取ることができます
非常に高速なロック速度を実現するために、MySQL はテーブル ロックを使用します。
「行レベルのロックの方が優れていると思います」[ロックするデータが少ない]。
最初の「より良い」は、このページでは定義が不十分です。ベターは「より速い」という意味のようです。
ロックの競合のため、行レベルのロックは (一般に) 高速化できません。大規模な結果セットの各行をロックすると、別の大規模な結果セット クエリとの競合やロールバックが発生する可能性が非常に高くなります。
一般に、大量のデータをロックする必要がある場合、大きなテーブルを 1 回ロックする方が、一連の行レベルまたはページ ロックを行うよりも安価です。