ホームページ  >  記事  >  データベース  >  MySQL におけるロックの必要性と分類の概要

MySQL におけるロックの必要性と分類の概要

不言
不言転載
2018-10-17 16:57:372548ブラウズ

この記事では、MySQL におけるロックの必要性と分類について説明します。必要な方は参考にしていただければ幸いです。

ユーザーのアクセス数が増加すると、データベースがシステムのパフォーマンスのボトルネックになることがよくありますが、パフォーマンスのボトルネックだけでなく、データのセキュリティもこの時点で非常に重要になります。必要。

同時実行によって発生するデータ セキュリティの問題は、主にダーティ リーディング、ファントム リーディング、非反復読み取りの 3 つの側面に分けられます。

1 ダーティー リーディングは、トランザクション読み取り 別のトランザクションからコミットされていないデータが取得されました。

时间线  事务1                               事务2
  1    begin;                                  
  2    select * from lock where id = 1;
  3                                       begin;
  4                                       update lock set name='dirty';
  6    select * from lock where id = 1;
  7    commit;                            commit;

2. ファントム読み取り

ファントム読み取りとは、あるトランザクションが別のトランザクションによって挿入されたデータを読み取ることです

#
时间线       事务1                            事务2
   1        begin;
   2        select * from lock where id > 1;
   3                                        begin;
   4                                        insert lock select 2;
   5                                        commit;
   6        select * from lock where id > 1;
   7        commit;

3。
##反復不可能な読み取りとは、統合データを複数回読み取ることによって返される結果に一貫性がないことを意味します。ダーティ リードとは異なり、これは送信済みのデータを読み取ります。ファントム リードとは異なり、データを更新しますが、ファントム リードはデータを挿入します。

时间线   事务1                            事务2
        begin;
        select * from lock where id = 1;
                                        begin;
                                        update lock set name='non-rr';
                                        commit;
        select * from lock where id = 1;
        commit;
MySQL はトランザクションを分離することで上記 3 つの問題を解決します

4 つの分離レベルがあります

隔离级别           脏读   幻读   不可重复读
未提交读(RUC)       是     是      是
已提交读(RC)        否     是      是
可重复读(RR)        否     是      否
可串行化            否     否      否
MySQL はロック メカニズムを通じてトランザクション分離を実装します


分類ロックの数は次のとおりです

#

以上がMySQL におけるロックの必要性と分類の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。