【数据库】事务隔离级别

事务(ACID)的特性:
  1. 原子性:一系列操作,要么一起成功,要么全部失败(单线程批量操作)
  2. 一致性:多线程同时修改同一数据时,最终结果和操作的动作需要保持一致(多线程操作)
  3. 隔离性:事务和事务之间的关系
  4. 持久性:事务提交之后数据库的修改是永久性的
事务的操作:
  1. 开启(start transaction):开启事务
  2. 关闭事务两种方式:
  • 回滚(rollback):事务执行失败,所执行的操作
  • 提交(commit):事务操作无任何错误,将数据持久化的最后一步操作
事务操作和存储过程(非事务性):
  1. 存储过程所产生的结果无法进行回滚
  2. 事务操作一定程度上,能够保证数据的安全性
事务的隔离级别
  1. serializable:(创建一个事务,另一个事务就不能开启,可以同时避免脏读、幻读、不可重复读)
  2. read-commited(Oracle默认的隔离级别):(读取事务提交后的结果)
  3. read-uncommited(风险最大,效率最高):(可读取事务未提交的结果)
  4. repeatable-read[default]:(同一条件查询返回的结果永远是一致的,无论事务是否提交)
事务隔离级别脏读不可重复读幻读
serializableNNN
read-uncommittedYYY
read-committedNYY
repeatable-readNNY
事务隔离性操作
  1. 修改当前命令行下的事务隔离性
MariaDB [db_job]> select @@tx_isolation;
+-----------------+
| @@tx_isolation  |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.00 sec)

MariaDB [db_job]> set tx_isolation='serializable';
Query OK, 0 rows affected (0.00 sec)

MariaDB [db_job]> select @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| SERIALIZABLE   |
+----------------+
1 row in set (0.00 sec)

  1. 修改全局事务隔离性
MariaDB [db_job]> set global transaction isolation level serializable;
Query OK, 0 rows affected (0.00 sec)

MariaDB [db_job]> select @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| SERIALIZABLE   |
+----------------+
1 row in set (0.00 sec)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值