MySqlでのロックの定義

1203 ワード

   ,       ,           ,  ,        select。               。

, , DDL , DML

 
mysqlロックメカニズムは表レベルロックと行レベルロックに分けられ、本文はmysqlの行レベルロックの共有ロックと排他ロックについて共有交流を行うことを皆さんと共有します.
共有ロックは読み取りロックとも呼ばれ、Sロックと略称され、その名の通り、共有ロックは複数のトランザクションが同じデータに対して1つのロックを共有することができ、データにアクセスすることができるが、読むしか修正できない.
排他ロックは書き込みロックとも呼ばれ、Xロックと略称され、その名の通り、排他ロックは他のトランザクションと共存できない.例えば、1つのトランザクションがデータ行の排他ロックを取得した場合、他のトランザクションは共有ロックと排他ロックを含む他のロックを取得できないが、排他ロックを取得したトランザクションはデータ行の読み取りと修正を行うことができる.
共有ロックについてはよく理解できるかもしれませんが、複数のトランザクションはデータを読むしかデータを変更できません.排他ロックについては理解が異なるかもしれません.私は当初、1行のデータをロックした後、他のトランザクションはその行のデータを読み取り、修正できないと思っていましたが、実はそうではありません.排他ロックとは、1つのトランザクションが1行のデータに排他ロックを加えた後、他のトランザクションが他のロックを追加できないことを意味します.mysql InnoDBエンジンのデフォルトの変更データ文、update、delete、insertは自動的に関連するデータに排他ロックを追加し、select文はデフォルトでロックタイプを追加しません.排他ロックを追加するとselectを使用できます.for update文、共有ロックを追加するにはselectを使用します...lock in share mode文.したがって、排他ロックを追加したデータ行は、他のトランザクションではデータを変更することはできません.for updateとlock in share modeロックでデータをクエリーすることはできませんが、selectを直接使用することはできます.from...通常のクエリーにはロックメカニズムがないため、データをクエリーします.
共有ロックと排他ロックの例を参照してください.
転載:https://www.cnblogs.com/boblogsbo/p/5602122.html