• 数据库在更新时,会产生binlog、redo log、undo log
  • binlog:server层产生的逻辑日志
  • redo log:InnoDB产生的物理日志,保持持久化
  • undo log:InnoDB产生的逻辑日志,保证隔离性、原子性

    客户端之间因为锁而互相影响

  • 客户端执行SQL时,会产生各种行锁、表锁、元数据锁

  • 一个客户端产生的锁,会干扰其他客户端SQL的执行
  • 两个客户端之间可能产生死锁

    事务查询到的数据与磁盘上不一致

  • 客户端可能暂时看不到已经更新的数据

  • 事务可能产生隐式锁,造成性能问题

    总结

  • 数据库“动起来”之后,会产生一系列性能问题

  • 需要理解日志、锁、事务的底层原理,才能应对问题