有人知道这是什么意思吗?(来自MySQL文档)
您可以通过检查mysqld状态变量Opened_tables来确定表缓存是否太小,该变量指示自服务器启动以来打开表的操作数: mysql>显示全局状态,如“Opened_tables”;如果值很大或增长迅速,则为++\ Variable_name _Variable_name值\+--Opened_tables\ 2741,即使没有发出很多
FLUSH TABLES语句,也要增加表缓存大小。
“非常大”是什么意思?“太快”是什么意思?
在我的例子中,open_table_cache设置为10,240,table_open_cache_instances设置为16,无论何时我查询opened_tables,它都比上一次要高。刚才是122,261。
我的数据库有2600个表和大约300个定期连接。对我如何知道open_table_cache应该是什么有什么想法吗?
发布于 2014-11-20 11:18:06
您没有提到,但看起来您使用的是MySQL 5.6版本。Opened_tables是一个计数器变量,它存储自MySQL服务启动以来由查询打开的所有表的值。
What does 'very large' mean? 这个价值可以增长到几百万。
What does 'too rapidly' mean?若要检查此值是否正在快速增长,只需在每秒钟的间隔内运行SHOW GLOBAL STATUS LIKE 'Opened_tables';查询即可。您将能够看到每秒打开多少个表?
没有一个单一的变量或因素负责open_table_cache或table_open_cache。(1) open_files_limit: MySQL在其文档中明确提到了它-- Increasing this value increases the number of file descriptors that mysqld requires.作为存储引擎,MySQL为每个表维护文件描述符。因此,您必须检查系统变量open_files_limit。此链接为您提供了有关此变量的重要性。幸运的是,这个变量可以在Windows服务器上的MysQL5.6中增加或减少。在服务开始时,MySQL会自动调整此值<=指定的open_files_limit值。
(2)查询执行计划:您的查询是什么,使用了多少个表?查询执行过程中如何有效地使用索引。
(3)表的大小:表中的记录数。它有多大或多小?
(4) RAM: RAM是物理内存,缓存大小取决于RAM大小。在执行和应用程序中,以及在加快查询执行过程中,它起着至关重要的作用。
这不是确切的答案,而是一个有益的建议。
发布于 2014-11-20 17:37:14
https://dba.stackexchange.com/questions/83076
复制相似问题