在数据库中经常设计到并发访问,此时就涉及到不同用户同时修改同一个资源的问题。此时就涉及到一个冲突的问题。为了防止这种冲突的发生,确保数据的安全,就需要对数据加锁的机制,MyISAM使用的是表级锁,InnoDB使用的是行级锁。锁又分为读锁和写锁,读锁也叫共享锁,只可读不可写,多个读互不阻塞,写锁又称为独占锁,写锁会阻碍其他事务的读和写。锁又有隐式锁和显式锁的分别,隐式锁是由存储引擎自动施加的,显式锁式用户自己手动添加的

手动添加锁的方法

1
2
3
LOCK TABLES tbl_name lock_type;
#tbl_name:需要上锁的表名
#lock_type:锁的类型,可以为read,write也就是读锁和写锁

解锁

1
UNLOCK TABLES;

第二种加锁方法

1
2
FLUSH TABLES [tbl_name[,...]][WITH READ LOCK]
#tbl_name如果不添加则对整个数据库加锁,通常在备份前加全局读锁