mysql-笔记

  • mysql 中的锁
    • 行锁 select * from tableName where id=123 for share/update 给查询的记录添加 共享锁/排它锁,需要开启事务才生效
      • 行锁包括记录锁、间隙锁、临建锁(=记录锁+间隙锁)
      • InnoDB·以REPEATABLE READ事务隔离级别运行Next Key Lock(临建锁),来解决当前读发生幻读的情况
    • 表锁 lock table tableName read/write ,添加表的读/写锁,解锁的方式 为:unlock tables,--不需要开启事务就可以生效
    • 全局锁 flush tables with read lock,做全库逻辑备份
  • mvcc
    • 三个隐藏字段,trx_id(事务id),roll_prt(回滚指针),rowId(不存在唯一键的情况下)
    • undolog:记录操作数据的历版本
    • readview:读视图(repeat read 隔离级别是 第一次读取的时候放入,rc是最新读取,每次读取都从表中取最新的)
  • mysql执行过程-连分忧止血
    • 连接器:判断用户及权限
    • 分析器:执行语句执行分析,预处理与解析
    • 优化器:对sql进行优化
    • 执行器:调用存储引擎,执行sql
    • 写log:写undolog,redolog,binlog
  • sql执行顺序
    • from
    • join
    • on
    • where
    • group by
    • having
    • select
    • distinct
    • order by
    • limit
posted @ 2023-05-29 14:31  哼自己调  阅读(18)  评论(0)    收藏  举报