sql >> データベース >  >> RDS >> Mysql

InnoDB行レベルのロックパフォーマンス-行数は?

    あなたが何を求めているのかは完全には明らかではありません。ロックにより、常に1人のユーザーのみが特定の行を変更しようとします。行レベルのロックとは、変更している1つの行のみがロックされることを意味します。通常の代替手段は、変更の間テーブル全体をロックするか、テーブルのサブセットをロックすることです。行レベルのロックは、行のサブセットを最小数に減らすだけで、整合性が保証されます。

    アイデアは、他のユーザーが他のものを変更するのを妨げることなく、1人のユーザーが1つのものを変更できるようにすることです。ただし、場合によっては、いわば誤検知の可能性があることに注意してください。いくつかのデータベースは行レベルのロックをサポートしていますが、行レベルのロックはテーブルの大部分をロックするよりもかなり高価になります。逆効果になる可能性があるほど高価です。

    編集:元の投稿への編集は役に立ちますが、それほど多くはありません。まず、関連する行のサイズとレベルには大きな影響があります(8バイトの行を1ダースのストライプの15K SASハードドライブに挿入する方が、1メガバイトの行を単一のコンシューマークラスのハードドライブに挿入するよりも少し速くなります) 。

    第二に、それは主に同時ユーザーの数に関するものなので、挿入のパターンは大きな違いを生みます。午前3時に挿入された1000行は、おそらくまったく気付かれません。 1000行が1日を通して均等に挿入されるということは、もう少し多くのことを意味します(ただし、おそらく少しだけです)。他の100人のユーザーがすぐにデータを必要とするときにバッチとして挿入された1000行は、誰かが解雇される可能性があります(特に、そのうちの1人が会社の所有者である場合)。



    1. データベースレコードのカウントの保存は冗長ですか?

    2. PHPとMySQLを使用してGoogleによって生成されたようなスニペットを生成するにはどうすればよいですか?

    3. MySQLデータ列に64kBのデータしか保存されないのはなぜですか?

    4. 単一のテーブル内の各カテゴリのmysqlSELECTベスト