• 慢查询日志
打开慢查询日志 slow_query_log=1 慢查询日志存储路径 slow_query_log_file=/var/log/mysql/log-slow-queries.log SQL执行时间大于3秒,则记录日志 long_query_time=3
  • SQL语句执行流程
      1. 用户输入SQL语句 → 编译器 → 抽象语法树
      1. 抽象语法树 → 绑定器 → 绑定语义的语法树
      1. 绑定语义的语法树 → 优化器 → 物理执行计划
      1. 物理执行计划 → 执行器 → 运行执行计划,得到结果集,返回给用户
  • 事务隔离级别
      1. 读未提交(read uncommited):在一个事务中,允许读取其他事务未提交的修改
      1. 读提交(read commited):在一个事务中,只能读取到其他事务已经提交的修改
      1. 可重复读(repeatable read):在一个事务中,只能读取已经提交的数据,并且,在重复查询之间,不允许其他事务对这些数据进行写操作
      1. 串行化(serializable):所有事务必须按照一定顺序执行
      后三种隔离级别分别为了解决前一种隔离级别遇到的问题:
      1. 脏读:一个事务读取了另一个事务还未提交的修改
      1. 不可重复读:在一个事务过程中,可能出现多次读取同一数据但得到不同值的现象
      1. 幻读:在一个事务中,当查询了一组数据后,再次发起相同的查询,却发现满足条件的数据被另一个提交的事务改变了(插入,删除)
       
badge