MySQL打开和打开表

时间:2014-12-06 18:17:46

标签: mysql mysqltuner

我在innodb数据库(MySQL)中有81个表。 其中的数据在磁盘上达到2GB。 我的查询很少一次加入超过3个表。我的innodb_buffer_pool大小约为2.1 GB。

运行mysqltuner.pl我得到以下内容!!

[!!]表缓存命中率:7%(274开/ 3K开启)

从mysqlreport我看到我确实打开了274,打开了3K,打开的天花板是400。

然而,这样做

show status like '%open%'

获得此结果

...
Open_table_definitions      161
Open_tables                 274
Opened_files             150232
Opened_table_definitions      0
Opened_tables                 0

两个问题:

1)不应该打开桌子"说3K而不是上面的结果显示状态如'%open%'?

2)有关我需要做些什么的建议来解决这个问题!即低表缓存命中率?

由于

PS。如果它有帮助,第二个!!我在mysqltuner.pl中是这样的:

[!!]在磁盘上创建的临时表:29%(磁盘上35K /总计119K)

2 个答案:

答案 0 :(得分:0)

  

1)不应该打开桌子"说3K而不是上面的零   显示状态的结果,例如'%open%'?

是的,结果主要来自SHOW STATUS和SHOW VARIABLES以及一些基本的微积分操作。

  

2)有关我需要做些什么的建议来解决这个问题!即低   表缓存命中率?

表缓存命中是由于:        桌子太少了        2.所有数据库中的表总数<<<打开表缓存大小。

答案 1 :(得分:0)

  1. show status like '%open%'显示当前会话的状态,而不是整个MySQL数据库(SHOW STATUS Syntax)的状态。要获取全局状态,请改用show global status like '%open%'

  2. 我遇到的mysqltuner.pl遇到的一个问题是,无论何时运行,它都会打开数据库中的所有表,从而增加了open_tables统计信息。如果不是这种情况,则MySQL manual建议将table_open_cache设置为*。