mysql 加锁 解锁 页表行锁

来源:互联网 发布:mac hosts 修改 编辑:程序博客网 时间:2024/05/17 06:53
页级的典型代表引擎为BDB。 
表级的典型代表引擎为MyISAM,MEMORY以及很久以前的ISAM。 
行级的典型代表引擎为INNODB。 
-我们实际应用中用的最多的就是行锁。 
行级锁的优点如下: 
1)、当很多连接分别进行不同的查询时减小LOCK状态。 
2)、如果出现异常,可以减少数据的丢失。因为一次可以只回滚一行或者几行少量的数据。 
行级锁的缺点如下: 
1)、比页级锁和表级锁要占用更多的内存。 
2)、进行查询时比页级锁和表级锁需要的I/O要多,所以我们经常把行级锁用在写操作而不是读操作。 

3)、容易出现死锁。 


加锁:select ...for update 


MYSQL 解锁与锁表

解锁:

1,第一种
show processlist;
找到锁进程,kill id ;
2、第二种
mysql>UNLOCK TABLES;

锁表
锁定数据表,避免在备份过程中,表被更新
mysql>LOCK TABLES tbl_name READ;
为表增加一个写锁定:
mysql>LOCK TABLES tbl_name WRITE;


SELECT ... LOCK IN SHARE MODE sets a shared mode lock on the rows read. A shared mode lock enables other sessions to read the rows but not to modify them. The rows read are the latest available, so if they belong to another transaction that has not yet committed, the read blocks until that transaction ends. 
在读取的行上设置一个共享模式的锁。这个共享锁允许其它session读取数据不允许修改它。 行读取的是最新的数据,如果他被其它事务使用中而没有提交,读取锁将被阻塞直到那个事务结束。 
      SELECT ... FOR UPDATE sets an exclusive lock on the rows read. An exclusive lock prevents other sessions from accessing the rows for reading or writing. 
在读取行上设置一个排他锁。阻止其他session读取或者写入行数据

0 0
原创粉丝点击