事务知识点总结

  1. 事务的概念:一组数据库操作,要么全部成功,要么全部失败;
  2. 事务的特性:原子性、一致性、隔离性、持久性;
  3. 同一记录多个事务同时执行,可能会出现的问题:脏读、不可重复度、幻读;(为了解决这些问题,就出现了隔离级别的概念)
  4. 隔离级别:读未提交、读提交、可重复读、串行化;(执行效率依次降低,安全性依次增高)
    • 读未提交:一个事务还未提交,他做的变更就能被另一个事务看到;
    • 读提交:一个事物提交后,他做的变更才能被另一个事务看到;
    • 可重复读:一个事务执行过程中看到的数据,总是和它启动时看到的数据保持一致。当然,该级别下,所做的变更在未提交前,其他事务也是不可见的;
    • 串行化:对于同一记录,“读”会加读锁,“写”会加写锁。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。
  5. 隔离级别的实现:数据库底层通过创建一个视图,访问的整个过程以视图逻辑结果为准;另外,每条记录在更新的时候,都会同时记录一条回滚操作;故同一条记录在系统中同时可能会存在多个版本,也就是多版本并发控制(MVCC)。
    • 读未提交:直接返回记录上的最新值,没有视图的概念;
    • 读提交:是在每条sql语句执行的时候,创建视图;
    • 可重复读:是在事务开启的时候,就创建视图;
    • 串行化:是用加锁的形式来避免并行访问的;
  6. 事务隔离级别的配置参数:transaction-isolation;
  7. 回滚日志什么时候清除?当系统中没有比这个回滚日志更早的 reda-view 的时候;
  8. 事务的启动方式:显示的启动;begin transaction ; commit ; rollback;
  9. set autocommit = 0 ;set autocommit = 1

    建议总是使用 set autocommit = 1,然后显示的启动事务

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!