汶上网站建设多少钱,seo策划方案,免费cms建站,辽宁工程咨询招投标交易平台按照锁的粒度来分可分为#xff1a;全局锁#xff08;锁住当前数据库的所有数据表#xff09;#xff0c;表级锁#xff08;锁住对应的数据表#xff09;#xff0c;行级锁#xff08;每次锁住对应的行数据#xff09; 加全局锁#xff1a;flush tables with read lo…
按照锁的粒度来分可分为全局锁锁住当前数据库的所有数据表表级锁锁住对应的数据表行级锁每次锁住对应的行数据 加全局锁flush tables with read lock; //为当前实例加上全局锁
然后使用 mysqldump -u用户名 -p密码 备份的数据库名 要备份到的sql文件注意mysqldump在windows命令行下执行。
备份完成使用unlock tables -------------------------------------------
表级锁分为表锁元数据锁和意向锁
1.表锁read lock 和 write lock 即共享读锁和独占写锁 客户端a加了读锁后所有客户端都可以读a不可以对该表更新其他客户端的写操作会被阻塞直到该锁被释放。
客户端a加了写锁后当前a客户端对该表可读可写但其他客户端的读写操作都会被阻塞
2.元数据锁 对一张表进行crud时会加上mdl读锁对表结构进行变更时会加上mdl写锁 3.意向锁(lock in share mode)
因为表锁和行锁冲突表锁在添加时会检查每一行数据是否加了行锁而意向锁的存在使得免去了逐行检查行锁的必要只要检查意向锁是否和要加的表锁兼容即可
意向锁分为意向共享锁IS和意向排他锁IX ------------------------------------
行级锁每次锁住对应的行数据锁定的粒度最小并发度最高发生锁冲突的概率最低在innoDB中应用。行级锁分为行锁间隙锁临键锁
1.行锁是通过索引上的索引项加锁来实现的而不是对记录加的锁锁定了单个行记录在RC,RR隔离级别下都支持 默认情况下innoDB在RR隔离级别下运行使用临键锁进行搜索和索引扫描来防止幻读
针对唯一索引例如主键索引进行检索时对已存在记录进行等值匹配会自动优化为行锁
如果不通过索引检索数据那么就会恶化为表锁 2.间隙锁锁的是不含该记录的间隙防止其他事务在这个间隙进行insert产生幻读在RR隔离级别下支持。 (1)给不存在的记录加锁时会给相邻的记录之间加上间隙锁注意不包含间隙两边的记录。
(2)当使用普通索引时
例如为3加锁这时会锁住3到7之间的间隙即3之后第一个不满足查询需求的值同时会把3和3之前加间隙锁因为不知道是否会在3之前再插入一个3。 (3)当使用范围查询时例如查询id 19 会对该19记录加上行锁还会对满足查询的下一个记录25之间加上临键锁即锁住19-25的间隙然后再加一个临键锁锁住25和25之后到正无穷的间隙 3.是行锁和间隙锁的结合锁住数据的同时锁住了间隙。