mysql事务,旧

并发控制
  多版本并发控制(mvcc) 实现的方式:每一个用户操作数据的时候,不是直接在原数据上操作,而是给个时间版本快照,最后操作的结果把这些快照合并到原数据上去,

锁:
读锁:共享锁,允许其他同时读,但不允许写
写锁:独占锁(排它锁),既不允许读,也不允许写

      表锁:
      页锁:
     行锁:


事务:
    RDBMS: ACID(原子性,一致性,隔离性,持久性)
    MyIsam 不支持事务

事务日志
有些服务器事务日志被分为两类
    重做日志(redo log):
      每一个操作在真正写到数据库之前,先写到日志里面去了,下一次就算我们这个操作奔溃,它还可以根据重做日志走一遍
    撤销日志(undo log):
      每一次操作在操作之前要把它原有的状态保留下来,万一将来我们需要还原回原状态可以给它撤销此前所做的任何一次操作

在事务引擎为了完成事务,每一次操作(增删改查)都是首先在日志文件中完成
先写到事务日志中去,由事务日志拿过来重做日志,再走一遍
日志中记录的仅是操作,而不是操作数据本身

隔离性,
  隔离级别
    read uncommited 读未提交(一个事务只要操作,另一个事务立马能看到)
    read-commited 读提交(一个事务提交以后,另一个事务才能看到)
    REPATABLE READ 可重读(一个事务不管提交不提交,另一个事务第一次看到的是什么样一直到自己事务结束之前看到的都是什么样)
    SERIABLIZABLE 可串行(一个事务执行完后再执行另一个事务)
show global variables like 'tx_isolation' 查看隔离级别

 

 

事务:
RDBMS: ACID(原子性,一致性,隔离性,持久性)
Automicity:原子性,一个事务可能有多个执行单元(执行语句)这些语句要么同时都完成要么都不完成,要把他们当作一个整体看待
                       事务所引起的数据库操作,要么都完成,要么都不执行
Consistency:一致性,当事务执行结束之后,我们的整个数据库服务器状态是没有改变的,也就意味着事务前的总和和事务后的总和是没有变的
Isolation:隔离性,
Durability 持久性,一但事务成功完成,系统必须保证任何故障都不会引起事务表现出不一致性
 如何提供持久性
    1,事务提交之前就已经把数据写到持久性储存
    2,结合事务日完成
        事务日志:顺序IO
        数据文件:随机IO


事务日志:顺序IO
数据文件:随机IO

posted @ 2018-05-23 11:53  IT小能手  阅读(116)  评论(0编辑  收藏  举报