ToB企服应用市场:ToB评测及商务社交产业平台

标题: 事务的四大隔离级别、数据库中的共享锁与排他锁、MySQL 的行级锁与表级锁 [打印本页]

作者: 乌市泽哥    时间: 昨天 16:10
标题: 事务的四大隔离级别、数据库中的共享锁与排他锁、MySQL 的行级锁与表级锁
关于MySQL中事务的先容

事务的四大隔离级别及其所办理的读现象如下:

在DBMS中,事务保证了一个操纵序列可以全部都实行或者全部都不实行(原子性),从一个状态变化为另一个状态(一致性)。由于事务满意持久性,所以一旦事务被提交之后,数据就能够被持久化下来,又由于事务是满意隔离性的,所以,当多个事务同时处置惩罚同一个数据的时间,多个事务直接是互不影响的,所以,在多个事务并发操纵的过程中,如果控制不好隔离级别,就有可能产生脏读、不可重复读、丢失修改、或者幻读等读现象。
在数据库事务的ACID四个属性中,隔离性是一个最常放松的一个。可以在数据库操纵中利用数据库的锁机制或者多版本并发控制机制来获取更高的隔离级别。但是,随着数据库隔离级别的进步,数据的并发能力也会有所降落。所以,如何在并发性和隔离性之间做一个和很好的衡量就成了一个至关紧张的题目。
   ANSI/ISO SQL定义的标准隔离级别有四种,从高到底依次为:可序列化(Serializable)、可重复读(Repeatable reads)、提交读(Read committed)、未提交读(Read uncommitted)。
    下面将依次先容这四种事务隔离级别的概念、用法以及办理了哪些题目(读现象)
  事务的隔离级别定义了一个事务对其他事务的可见性,MySQL支持四种隔离级别,从低到高分别为:












读现象表明:


数据库中的共享锁与排他锁

在数据库中,锁机制是确保数据一致性和并发控制的紧张手段。共享锁(Shared Lock,简称S锁)和排他锁(Exclusive Lock,简称X锁)是最基本的两种锁类型。下面详细先容这两种锁的特性、用途以及它们之间的关系。
共享锁(Shared Lock,S锁)

定义:共享锁也称为读锁,允很多个事务同时读取同一数据项,但不允许任何事务修改该数据项。
特性:
用途:

示例:
  1.  -- 事务A
  2.  START TRANSACTION;
  3.  SELECT * FROM accounts WHERE user_id = 1 FOR SHARE; -- 获取共享锁
  4.  COMMIT;
  5.  ​
  6.  -- 事务B
  7.  START TRANSACTION;
  8.  SELECT * FROM accounts WHERE user_id = 1 FOR SHARE; -- 可以获取共享锁
  9.  COMMIT;
复制代码
排他锁(Exclusive Lock,X锁)

定义:排他锁也称为写锁,允许一个事务独占性地访问某一数据项,禁止其他事务读取或修改该数据项。
特性

用途:

示例:
  1.  -- 事务A
  2.  START TRANSACTION;
  3.  SELECT * FROM accounts WHERE user_id = 1 FOR UPDATE; -- 获取排他锁
  4.  UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
  5.  COMMIT;
  6.  ​
  7.  -- 事务B
  8.  START TRANSACTION;
  9.  SELECT * FROM accounts WHERE user_id = 1 FOR SHARE; -- 需要等待事务A释放排他锁
  10.  COMMIT;
复制代码
共享锁与排他锁的关系


MySQL 的行级锁与表级锁

在 MySQL 中,锁机制是保证并发控制和数据一致性的关键。根据锁的作用范围不同,主要分为行级锁和表级锁。
表级锁


行级锁


行级锁和表级锁对比


死锁及其办理方法




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4