ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] ## MySQL 锁 **基础概念** >表锁是日常开发当中常见的问题,当多个查询同一时刻进行数据修改时,就会产生并发控制的问题。 **** **MySql的七种锁** > * 行锁:一定是作用在索引上 > * 间隙锁:一定是**开区间**,比如(3,5) > * 临键锁: > * 共享锁/排他锁: > * `共享锁` 和 `排他锁` , 就是 `读锁` 和 `写锁` > * 意向共享锁/意向排他锁 > * 插入意向锁(IIX) > * 自增锁 > MySQL官网中还提到了一种**预测锁**,这种锁主要用于存储了空间数据的**空间索引**,暂未找到更多资料 **排他锁** * 语法:for update **** **读锁** > 共享的,不堵塞,多个用户可以同时读一个资源,互不干扰 **写锁** > 排他的,一个写锁会阻塞其他的写锁和读锁,这样可以只允许一个人进行写入,防止其他用户读取正在写入的资源。 **锁粒度** > 表锁,系统性能开销最小,会锁定整张表,`MyISAM` 使用表锁 > 行锁,最大程度地支持并发处理,但是也带来了最大的锁开销,`InnoDB` 实现行级锁 ## 锁问题 ``` # 查询innodb引擎的运行时信息 show engine innodb status; # 查询所有进程 show processlist; # 删除进程 kill id; # 查看等待锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; ```