我在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)
答案 0 :(得分:0)
1)不应该打开桌子"说3K而不是上面的零 显示状态的结果,例如'%open%'?
是的,结果主要来自SHOW STATUS和SHOW VARIABLES以及一些基本的微积分操作。
2)有关我需要做些什么的建议来解决这个问题!即低 表缓存命中率?
表缓存命中是由于: 桌子太少了 2.所有数据库中的表总数<<<打开表缓存大小。
答案 1 :(得分:0)
show status like '%open%'
显示当前会话的状态,而不是整个MySQL数据库(SHOW STATUS Syntax)的状态。要获取全局状态,请改用show global status like '%open%'
。
我遇到的mysqltuner.pl遇到的一个问题是,无论何时运行,它都会打开数据库中的所有表,从而增加了open_tables统计信息。如果不是这种情况,则MySQL manual建议将table_open_cache
设置为*。