一.锁的介绍
锁是计算机协调多个进程或线程并发访问一资源的机制。在数据中,除传统的计算资源(CPU,RAM,I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性,有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素,所有尤其重要
二.分类
1.全局锁:
锁定数据库中的所有表。
2.表级锁:
每次操作锁住整张表
3.行级锁
每次操作锁住对应的行数据
三.全局锁
全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞。
四.如果加了全局锁会是怎么样的
五.加全局锁
sql
flush tables with read lock;
六.进行数据备份
sql
mysqldump -uroot -p1234 itcast>itcast.sql
1.-u: 指定用户
2.-P:指定密码
3.要备份那个数据库
4.备份的数据库存放在哪里
七.解锁
sql
unlock tables;
一旦加了全局锁 只能读不能写
八.特点
数据库中加全局锁,是一个比较重的操作,存在以下问题:
1.如果在主库上备份,那么在备份期间都不能执行更新,业务基本上就得停摆
2.如果从库上备份,那么备份期间从库不能执行主库同步过来的二进制日志.会导致主从延迟
在innoDB引擎中,我们可以在备份时加上参数· 参数来万完成不加锁的一致性数据备份
sql
mysqldump --single-transaction -uroot -p1234 itcast>itcast.sql