3.Mysql事务隔离

46 阅读1分钟

隔离级别

  • 读未提交:一个事务没提交以前,做的变更能被其他事务看到
  • 读提交:一个事务提交后,做的变更才会被其他事务看到
  • 可重复读:一个事务运行前和运行中看到的数据是一致的,未提交的事务对其他事务来说也不可见
  • 串行化:对于同一条记录,写会加写锁,读会加读锁。当读写冲突,后访问的事务必须等待前一个事务执行完,才能继续执行。

视图概念

视图是查询生成的一个虚拟表,本身不存储数据,查询要到实际的表中查。

回滚日志

在事务下操作的数据会记录到回滚日志,最新的值通过回滚操作,可以得到前一个状态的值。

长事务

长事务对应的的事务视图长时间存在,对应的回滚日志也是一直存在,占用大量内存空间。

如果你是业务开发负责人同时也是数据库负责人,你会有什么方案来避免出现或者处理这种情况呢?

1.通过information_schema.innodb_trx表监控事务的持续时间

2.增加undo表空间

3.通过配置参数max_execution_time指定select执行的最长时间

4.利用pt工具监控长事务