【问题标题】:MySQL Open and Opened TablesMySQL 打开和打开的表
【发布时间】:2014-12-06 18:17:46
【问题描述】:

我在一个 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) “打开的表”不应该在上述显示状态(如“%open%”)的结果中显示 3K 而不是零吗?

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

谢谢

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

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

【问题讨论】:

    标签: mysql mysqltuner


    【解决方案1】:
    1. show status like '%open%' 显示当前会话的状态,而不是整个 MySQL DB (SHOW STATUS Syntax) 的状态。要获取全局状态,请改用show global status like '%open%'

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

    【讨论】:

      【解决方案2】:

      1) “打开的表”不应该在上面说 3K 而不是零吗 显示状态如“%open%”的结果?

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

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

      表缓存命中是由于: 1.打开的表太少 2.所有数据库中的表总数

      【讨论】:

        猜你喜欢
        • 2020-11-06
        • 2014-04-08
        • 2012-04-02
        • 2013-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-30
        • 2018-06-08
        相关资源
        最近更新 更多