MySQL高级特性全解析:存储函数、触发器与锁机制实战指南
文章目录一、存储对象-存储函数二、存储对象-触发器1. 介绍2. 语法三、锁1. 介绍2. 分类1全局锁2表级锁21表锁22元数据锁23意向锁3行级锁31行锁32间隙锁33临键锁---一.存储对象-存储函数一般都可以用存储过程替代存储函数是有返回值的存储过程存储函数的参数只能是IN类型的语法如下二.存储对象-触发器1.介绍2.语法三.锁1.介绍2.分类1全局锁对整个数据库上锁加锁之后数据库就处于只读状态后续事物的提交都将被阻塞主要应用场景做全库的逻辑备份语法加上全局锁flush tables with read lock;释放锁unlock tables备份数据mysqldump -u root -p密码 itcastitcase.sql特点(2)表级锁每一次锁住整张表锁定粒度大冲突概率最大分类21表锁表共享读锁read lock表独占写锁write lock读锁不会阻塞其他客户端的读但会阻塞写写锁不仅会阻塞其他客户端的读也会阻塞写22元数据锁加锁过程是系统自动控制的主要作用是维护表元数据的数据一致性select object_type,object_schema,object_name,lock_type,lock_duration from performance_schema.metadata_locks;23意向锁为了避免行级锁与表锁冲突InnoDB中加入了意向锁减少对于锁的检查3行级锁每一次加锁操作锁住的是数据行锁级粒度最低并发度最高分类31行锁锁定单个行记录的锁防止其他事务对此更新或删除注意32间隙锁锁定索引记录间隙不包含该记录确保索引记录间隙不变防止幻读33临键锁行锁和间隙锁组合同时锁住数据并锁住前面的间隙注意间隙锁的唯一目的就是防止其他事务插入间隙。间隙锁可以共存一个事务采用的间隙锁不会阻止另一个事务在同一个间隙上采用间隙锁j