zoukankan      html  css  js  c++  java
  • 事务 与事务的 隔离级别 简单说明

    -- 事务

    定义:事务是对数据库的一个操作序列,数据库系统通过一个事务完成一些操作。事务的正确执行会改变数据库的一些状态。

    事务还必须遵从ISO/IEC 做制定的acid原则,acid 是集中定性的缩写,分别是:原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability);

    原子性:事务不可分割,要么全部执行,要不全部不执行。(如果事务的所有子事务全部提交成功,才会执行成功,如果有子事务执行失败,那么整个事务就会被回滚到之前的状态)

    一致性:事务执行后数据库的状态正确的改变。

    隔离性:事务之间相互不影响(数据改变不影响)。

    持久性:事务的执行,永久保存在数据库中。

    事务的作用:
    每一个事务的执行,能保证数据库的数据发生正确的改变,并且不相互影响,既保证了操作的可靠性。即使后台出现了异常,也不会影响到破坏数据。

    脏读:读到了还没被提交的数据。A事务操作了数据,但还没有提交,B事务中却读到被操作的数据。

    不可重复读:一个事务读到2次不同的数据。A事务在读取数据,另一个B事务在操作数据,并发生了改变,提交,此时切换到A事务读到的数据就是B操作后的事务,对于同一个事务而言就是读了2次不同的数据。

    幻读:A事务中操作了数据,但在另一个B事务中该数据显示的被A事务修改之前的数据。

    事务的隔离级别:

    分别是:default(默认的) read_encommited(读 未提交) read_commited(读 已提交)  repeatable_read(重复读)  serdserlalizable(串行化)

    default:默认的最低级别,相对的维护最低。

    read_encommited:能读到还未提交的数据,如此它便不能保证脏读,不重复读,幻读的任何一种。

    read_commited:读到已提交的数据,可以保证不会发生脏读,但不能保证重复读和幻读。

    repeatable_read:数据读出来都会加个锁,例如: select * from table_name for update; 防止别人修改。加入for update 后只要这个事务不结束,别的事务是不能对这个数据做修改,除非这个事务结束。

    serdserlalizable:事务的最高级别,所谓的串行化就是多个事务挨个执行,一个事务执行完了,另个事务才能执行。

    事务的级别越高,代表维护的事务的正确性也越高。,也可能影响啊效率,实际应用中多用read_encommited;

    隔离级别                      脏读      不可重复读       幻读

    read_encommited       不能          不能              不能

    read_commited            能            不能              不能

    repeatable_read          能              能                不能

    serdserlalizable           能              能                   能

  • 相关阅读:
    Python服务Dokcer化并k8s部署实例
    Docker Machine
    Docker使用Portainer搭建可视化界面
    三小时攻克 Kubernetes!
    Docker使用pipework配置本地网络
    使用kubeadm安装kubernetes1.12.2版本脚本【h】
    rsync详解之exclude排除文件(转)
    linux生成指定大小的文件(转)
    chown将指定文件的拥有者改为指定的用户或组(转)
    Linux系统分析命令总结
  • 原文地址:https://www.cnblogs.com/msx-2018-begin/p/8805241.html
Copyright © 2011-2022 走看看