目录
2.2.1 加锁 flush tables with read lock ;
2.3.1 全局锁备份 -> mysqldump -> cmd终端中执行
2.3.2 快照备份 不加锁 mysqldump --single
3.1.1 加锁 locktables 表名 read/write; -> 其他用户 对应阻塞
3.1.2 解锁 unlock tables; ->用户解锁 ->断开客户端连接
3.4.2 表有事务未提交(增删改查) ->不可修改表结构(字段增删改)
3.4.3 表结构说的类型表格说明 -> 锁与锁之间是否兼容
3.5 意向锁 -> 表锁前要检查是否有行锁 -> 提高检查效率
3.6.2 系统自动加 意向排他锁 -> 意向排他 不排意向
4.1 结构原理 -> B+TREE ->叶子节点是id+row
4.2 行锁 -> 防止其他客户端同时 update / delete
4.3 间隙锁 -> 防止幻读 -> 锁住 叶子节点与节点间的间隙 ->防止insert
4.3.2 示例演示 -> 客户端一 自动加间隙锁 -> 防止客户端二 insert -> 防止幻读
4.4.3 非唯一索引 -> 把可能的范围都加锁 -> 间隙锁
4.4 临键锁 -> 行锁间隙锁的组合 -> 指 被锁索引和之前索引之间
4.4.1 总之就是 行锁及行锁与前索引 间隙的锁 -> 锁范围
4.5 总结 ->间隙锁只锁 后间隙 ->临键锁 锁行 锁之前间隙
0 课程视频
1 概述
1.1 多用户 并发访问 -> 为了数据一致性(多用户)
1.2 全局锁 数据库所有表
1.3 表级锁 每次操作 锁整张表
1.4 行级锁 每次操作 锁对应行
2 全局锁 ->锁后只读 -> 全库逻辑备份
2.1 阻塞DML /DDL 可DQL读
2.2 语法
2.2.1 加锁 flush tables with read lock ;
2.2.2 解锁 unlock tables ;
2.3 示例演示
2.3.1 全局锁备份 -> mysqldump -> cmd终端中执行
2.3.2 快照备份 不加锁 mysqldump --single
mysqldump --single-transaction -uroot -p密码 库名 > 备份地址
3 表级锁 ->InnoDB的 -> 锁锁兼容性
3.1 语法
3.1.1 加锁 locktables 表名 read/write; -> 其他用户 对应阻塞
3.1.2 解锁 unlock tables; ->用户解锁 ->断开客户端连接
3.2 表共享读锁 -> 任何用户 让读 不让写
3.3 表独占写锁 -> 自己可读可写 别人读写阻塞
3.4 元数据锁 ->表结构锁
3.4.0 课程视频
3.4.1 系统自动控制
3.4.2 表有事务未提交(增删改查) ->不可修改表结构(字段增删改)
3.4.3 表结构说的类型表格说明 -> 锁与锁之间是否兼容
ps: share_write 插入 更新 删除 操作可以所有客户端可以改表结构?
3.5 意向锁 -> 表锁前要检查是否有行锁 -> 提高检查效率
3.5.1 意向共享锁 -> 不兼容写锁
3.5.2 意向排他锁 -> 兼容意向锁
3.5.3 兼容性 -> 意向共享不容写 意向排他不排意向
3.5.4 查看意向锁及行锁 加锁情况
select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;
3.6 示例演示
3.6.1 系统自动加 意向共享锁
3.6.2 系统自动加 意向排他锁 -> 意向排他 不排意向
4 行级锁 -> InnoDB引擎
4.1 结构原理 -> B+TREE ->叶子节点是id+row
4.2 行锁 -> 防止其他客户端同时 update / delete
4.2.1 共享锁 S
4.2.2 排他锁 X
4.2.3 行锁列表展示