日期:2014-05-16  浏览次数:20658 次

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