MySQL表锁情况和文件打开数

1. 缘起

    我们所有Mysql的db引擎是MyISAM,在高并发的情况下,表级锁存在很严重的问题。

    如下:

   Mysql参数

2. MySQL表锁情况学习

 
 
  1. mysql> show global status like 'table_locks%';  
  2. +-----------------------+-----------+  
  3. | Variable_name | Value |  
  4. +-----------------------+-----------+  
  5. | Table_locks_immediate | 490206328 |  
  6. | Table_locks_waited | 2084912 |  
  7. +-----------------------+-----------+ 

Table_locks_immediate表示立即释放MySQL表锁数,Table_locks_waited表示需要等待的MySQL表锁数,如果Table_locks_immediate / Table_locks_waited > 5000,最好采用InnoDB引擎,因为InnoDB是行锁而MyISAM是MySQL表锁,对于高并发写入的应用InnoDB效果会好些。示例中的服务器Table_locks_immediate / Table_locks_waited = 235,MyISAM就足够了。

因此,在数据库选择引擎时需要考虑DB的USE CASE。如果读写操作频繁推荐InnoDB引擎,如果只有读操作或写操作不频繁可以选择MyISAM,就查询而言MyISAM比InnoDB快。

3. 参考地址:http://database.51cto.com/art/201010/229971.htm

猜你喜欢

转载自zhb1208.iteye.com/blog/1458418