zoukankan      html  css  js  c++  java
  • mysql-事务隔离 为什么你改了我还看不见

    mMySQL的事务隔离

    隔离级别:

    1,读未提交: 可以读取事务未提交的数据

    2,读提交:只有事务提交了,才能读到

    3,可重复度:开启事务读取数据的过程中,不受任何影响。每次读到的数据都是一样的。MVCC实现的

    4,串行化。同时只能执行一个操作,只能读或者只能写。读,写都会加锁,下一个请求必须等待上一步操作完成。

    MVCC ,多版本并行控制

    InnoDB在每行记录后面保存两个隐藏的列来,分别保存了这个行的创建时间和行的删除时间。这里存储的并不是实际的时间值,而是系统版本号,当数据被修改时,版本号加1
    在读取事务开始时,系统会给当前读事务一个版本号,事务会读取版本号<=当前版本号的数据
    此时如果其他写事务修改了这条数据,那么这条数据的版本号就会加1,从而比当前读事务的版本号高,读事务自然而然的就读不到更新后的数据了

    回滚日志:

    保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读

    回滚跟数据字典一起存放,回滚字段被清理时,文件大小不会改变

    长事务:

    1,长事务会导致保存很大的回滚日志,从而导致回滚段占用太多内存。只能重建数据库清理

    2,长事务还会长时间占用锁资源。

  • 相关阅读:
    CPT104-labs
    Java-数据结构-ArrayList
    INT104-lab13[Parzen Window Method][此方法无数据集划分]
    INT104-lab12 [KNN Algorithm][lambda表达式]
    INT104-lab11 [聚类] [iris数据集] [K-means Algorithm]
    Nginx配置https兼容http
    JS获取整个网页html代码
    nginx重启生效conf文件的修改
    WampServer
    在win10系统中,开启hyper-v要满足下列条件
  • 原文地址:https://www.cnblogs.com/luoying/p/12088221.html
Copyright © 2011-2022 走看看