数据库
首页 > 数据库> > MySql性能调优一(存储引擎InnoDB,MyISAM)

MySql性能调优一(存储引擎InnoDB,MyISAM)

作者:互联网

区别

MyISAM表级锁

   MySql表级锁有两种:表共享读锁与表独占写锁。

   

   MyISAM在执行查询前,会自动执行表的加锁、解锁操作。

   读锁不会影响查询,但会限制更新本客户端与其他客户端的更新。
  //注:图中示例表yc_tablelock的存储引擎为MyISAM

   

   可以使用表锁来保证两次查询的是同一时间点数据,当然,也可以用union并集。

lock table yuanchong_table1,yuanchong_table2 read;
select colum1 from yuanchong_table1;
select colum2 from yuanchong_table2;
UNLOCK tables;

   写锁时,运行自身进行读写操作,但会限制其他客户端的读写操作。

   

InnoDB表级锁与行级锁

   共享锁(读锁):允许其他客户端进行读操作,但不允许写操作。不允许其他客户端给这几行记录上排他锁,但允许上共享锁。
   上共享锁写法:lock in share mode

 select  *  from yuanchong_table where id>60 lock in share mode;

   排他锁(写锁):不允许其他客户端进行读操作,不允许写操作。不允许其他客户端给这几行上排他锁与共享锁。
   上排他锁写法:for update

select  *  from yuanchong_table where id>60 for update;

   死锁:A事物锁住1-5行,B事物锁住6-10行。A事物请求锁住6-10行,阻塞。B事物请求锁住1-5行,阻塞。锁是对表操作的,自如表锁不存在死锁。

   注:

 

 

 

 

 

 

标签:yuanchong,InnoDB,MyISAM,MySql,表级,select,客户端
来源: https://www.cnblogs.com/mzhaox/p/11297861.html