- table_open_cache = 4096
- 控制全局打开表数(注意是表的数据文件,且使用了文件描述符),通常是有多少个表,把表数量乘以两三倍就可以了(每一个 sql 执行线程至少需要打开一个缓存表,这个参数就是控制所有 SQL 执行线程可打开缓存表的数量,应该与最大连接数max_connections 以及每个连接执行关联查询中所涉及表的最大个数(用 N 来表示)来设定:即,max_connections*N 作为该参数的值)。table_definition_cache 变量和 table_open_cache 设置一样大(如果在 show processlist 里经常发现 opening table 那么可能就是这两个变量设置小了(要注意,调整这两个变量的时候,也要注意系统 open-files-limit 的设置和innodb_open_files、open_files_limit 变量),另外,状态变量Table_open_cache_hits 和 Table_open_cache_misses 也可以观察到 ,这两个状态变量是 5.6.x 开始才有)。另外还有 4 个变量(5.6.x之前的版本可以使用下面 4 个变量查看):o 默认值为 2000,整型值。全局变量,动态变量,取值范围为1~524288。
show status like 'Open%_table%';
Open_table_definitions | 512|
Open_tables | 512 |
Opened_table_definitions | 51 |
Opened_tables | 51 |
- # Open_tables => opening #当前在 table_open_cache 中缓存着的表数量,当这个值接近table_open_cache 时,就表示缓存数量已经被用完了,再有表打开时 opend_tables 变量就会增加# Opened_tables => opened_total #实例启动以来,每次 SQL 查询都需要重新打开表,执行完后再把这个表关掉,而无法使用到 table_open_cache 的表数量# 缓存机制当 MySQL 访问一个表时,如果该表在缓存中已经被打开,则可以直接访问缓存;如果还没有被缓存,但是在 MySQL 表缓冲区中还有空间,那么这个表就被打开并放入表缓冲区;如果表缓存满了,则会按照一定的规则将当前未用的表释放,或者临时扩大表缓存来存放,使用表缓存的好处是可以更快速地访问表中的内容。
# 参数调优
一般来说,可以通过查看数据库运行峰值时间的状态值 Open_tables 和 Opened_tables ,判断是否需要增加 table_cache 的值(其中 open_tables 是当前打开的表的数量,Opened_tables 则是已经打开的表的数量)。即如果 open_tables 接近 table_cache 的时候,并且 Opened_tables 这个值在逐步增加,那就要考虑增加这个值的大小了。还有就是Table_locks_waited 比较高的时候,也需要增加 table_cache。
# 比较适合的值:
Open_tables / Opened_tables >= 0.85
Open_tables / table_cache <= 0.95
# 在 mysql 默认安装情况下,table_cache 的值在 2G 内存以下的机器中的值默认时 256 到512,如果机器有 4G 内存,则默认这个值是 2048,但这决意味着机器内存越大,这个值应该越大,因为 table_cache 加大后,使得 mysql 对 SQL 响应的速度更快了,不可避免的会产生更多的死锁(dead lock),这样反而使得数据库整个一套操作慢了下来,严重影响性能。所以平时维护中还是要根据库的实际情况去作出判断,找到最适合你维护的库的 table_cache 值。
# 清空缓存
mysql >flush tables;
- 控制全局打开表数(注意是表的数据文件,且使用了文件描述符),通常是有多少个表,把表数量乘以两三倍就可以了(每一个 sql 执行线程至少需要打开一个缓存表,这个参数就是控制所有 SQL 执行线程可打开缓存表的数量,应该与最大连接数max_connections 以及每个连接执行关联查询中所涉及表的最大个数(用 N 来表示)来设定:即,max_connections*N 作为该参数的值)。table_definition_cache 变量和 table_open_cache 设置一样大(如果在 show processlist 里经常发现 opening table 那么可能就是这两个变量设置小了(要注意,调整这两个变量的时候,也要注意系统 open-files-limit 的设置和innodb_open_files、open_files_limit 变量),另外,状态变量Table_open_cache_hits 和 Table_open_cache_misses 也可以观察到 ,这两个状态变量是 5.6.x 开始才有)。另外还有 4 个变量(5.6.x之前的版本可以使用下面 4 个变量查看):o 默认值为 2000,整型值。全局变量,动态变量,取值范围为1~524288。
- table_definition_cache = 4096
- 与 table_open_cache 作用类似,但是是缓存表定义文件.frm 的数量。5.6.8 之前的默认值是 400,之后版本默认是自动计算的,计算公式(400 + (table_open_cache / 2)),表定义缓存比table_open_cache 使用更少的空间,且不使用文件描述符。o 对于 InnoDB 来说,table_definition_cache 可以对 InnoDB 数据字典缓存中打开的表实例数量进行软限制。即,如果打开的表实例的数量超过 table_definition_cache 设置,则 LRU 机制标记表实例并最终从数据字典缓存中删除。该限制有助于缓解大量内存被极少使用的表实例占用的情况,注意:具有缓存元数据的表实例数可能高于 table_definition_cache 定义的限制,因为带有外键关系的 InnoDB 系统表实例和具有父子关系的表实例不会放在 LRU 列表上,无法通过从内存中逐出这些表实例来减少table_definition_cache 的数量。o 此外,table_definition_cache 对单个 InnoDB 文件一次可以打开表的数量也具有软限制,且 innodb_open_files 也同时控制这个数量。如果同时设置了 table_definition_cache 和innodb_open_files,则使用两者最高值设置。如果两者都没有显式设置,则使用具有较高缺省值的 table_definition_cache。如果打开的表空间文件句柄数超过 table_definition_cache 或innodb_open_files 定义的限制,则 LRU 机制在表空间文件 LRU列表中搜索已完全刷新并且当前长时间未使用的文件。每次打开新的表空间时都会执行此过程。如果存在“非活动”表空间就会执行关闭表空间文件。o 默认值为-1,表示自动计算,整型值。全局变量,动态变量,固定值取值范围为:400~524288。
- table_open_cache_instances = 32
- table_open_cache 实例的数量,5.6.6 版本新增,默认情况下,table_open_cache_instances 的值为 1,表示只有一个table_open_cache 实例,此时,DML、DDL 语句访问表时,需要把整个 table_open_cache 实例锁住,可以通过table_open_cache_instances 设置大于 1 的值来将 table_open_cache划分为多个实例。这样 DML 访问就不需要把所有的 table_open_cache实例锁住,在一些场景下可以提高性能。但 DDL 语句仍然会把所有的table_open_cache 实例锁住。o 默认值为 1(在 MySQL 5.7.8 及其之后的版本中默认值为16),整型值,全局变量,只读变量,取值范围为 1~64
相关推荐
保姆级教程:在NXPS32144环境下安装EB TRESOS 29.0.0并配置MCAL开发环境
本文提供了一份详细的保姆级教程,指导如何在NXP S32K144环境下安装EB TRESOS 29.0.0并配置MCAL开发环境。内容涵盖从前期资源准备、软件安装步骤、核心的MCAL关联配置,到首次创建AUTOSAR工程并进行模块配置的全流程,旨在帮助汽车电子开发者搭建稳定、可用的底层软件开发地基。
【案例】MySQL table_open_cache配置过小导致thread running过高告警
mysql突然接到thread running过高的告警。分析监控指标并未发现明显异常。进入mysql执行发现大量SQL处于opening tables和closing tables状态。初步怀疑是table_open_cache 参数设置过小。紧接着调大table_open_cahe参数后,告警恢复正常。最终通过调整与参数,恢复异常告警。核心原因为参数配置过小,无法满足高并发场景下的查询访问。
Python自动化神器:5分钟搞定PSCAD仿真波形图导出到Word(附WPS兼容方案)
本文介绍如何利用Python自动化库快速将PSCAD仿真波形图导出到Word或WPS,大幅提升电力系统仿真工程师的工作效率。通过精准坐标定位、智能排版和批量处理功能,实现仿真报告的自动化生成,同时提供WPS兼容方案,适用于不同办公环境。
table_open_cache
table_cache是一个非常重要的MySQL性能参数,它在5.1.3之后的版本中叫做table_open_cache。table_cache主要用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与<a title="max_connections – MySQL性能调优" target="_blank" href="http://www.kuqin.com/
【深度排查】VScode 远程 SSH 连接失败:从网络握手到服务部署的全链路诊断指南
本文详细解析了VScode远程SSH连接失败的常见原因及解决方案,从基础网络排查到SSH服务配置,再到VScode特有的问题处理。特别针对Ubuntu和TrueNAS系统提供了具体配置建议,帮助开发者快速解决'Could not establish connection'等连接问题,提升远程开发效率。
2025使用VM虚拟机安装配置Macos苹果系统下Flutter开发环境保姆级教程--下篇
我们可以看到,目前配置基本完成了,现在有两个错,一个是Chrome没安装,这个自己安装就可以了,如果不需要WEB测试也不影响开发,另一个是Simulator还没安装,这个主要是安装的时间太长了,也就是上面的这一步。这里要注意,这个下载安装会比较慢,有的载会特别卡造成安装失败,最好的办法是挂一个VPN,保证安装完成,不过这个可以在以后单独进行安装。至此,基本的安装完毕,好多人会以为Xcode就OK了,其实还没有,我们还缺少命令行工具包,这个在安装完Flutter以后进行设置。
table_definition_cache和table_open_cache以及table_open_cache_instances
这三者,经常有很多人搞混淆,我们先看官方文档:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_table_definition_cache,他们三个是连在一起的,所以有些相似的地方,但是也有不同。 1、table_definition_cache 全局参数,默认值为-1,最小是为400,描述的是.frm文件在定义换成里面存储的总量,如果你创建一个比较大的值,会加快你打开表的速度。这个...
小白的MatSWMM使用心路(二)——用matlab修改INP文件参数/使用matlab查找txt内容并修改多行内容
说是修改inp,但是里面的内容大部分还是讲怎么修改txt的……(?)。包含如何找到需要的参数(关键字)位置,以及修改那个位置的txt这样的内容。希望能帮助大家吧……Matlab你要多出好用的功能啊!
Mysql 之table_open_cache
table_cache是一个非常重要的MySQL性能参数,它在5.1.3之后的版本中叫做table_open_cache。table_cache主要用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与max_connections有关。缓存机制当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速...
嵌入式工程师成长之路(5)——板子调试
USB2514集线器调试总结说说USB连接线USB数据线上的“疙瘩”:原来有这么大用处!
肖特基二极管的反向恢复过程
本博客简述肖特基二极管反向恢复过程。
mysql性能设置打开表数目最大缓存值_MySQL 表缓存性能设置
# Open_tables => opening #当前在 table_open_cache 中缓存着的表数量,当这个值接近table_open_cache 时,就表示缓存数量已经被用完了,再有表打开时 opend_tables 变量就会增加# Opened_tables => opened_total #实例启动以来,每次 SQL 查询都需要重新打开表,执行完后再把这个表关掉,而无法...
STM32入门教程:自动门控制
通过这个简单的示例,我们展示了如何使用STM32微控制器来实现一个简单的自动门控制系统。如果有物体靠近门口,我们会改变doorState的值,并使用controlServoMotor函数来控制舵机电机的转动。具体的引脚连接可以根据您的具体硬件来定,例如将红外传感器的输出引脚连接到GPIOA_PIN0引脚。同样,具体的引脚连接可以根据您的具体硬件来定,例如将舵机的控制引脚连接到GPIOA_PIN1引脚。首先,我们需要包含必要的库文件和引用。然后,我们需要定义一些函数来处理红外传感器的输入和舵机电机的输出。
mysql 缓存设置_mysql缓冲和缓存设置详解
MySQL 可调节设置可以应用于整个 mysqld进程,也可以应用于单个客户机会话。服务器端的设置每个表都可以表示为磁盘上的一个文件,必须先打开,后读取。为了加快从文件中读取数据的过程,mysqld对这些打开文件进行了缓存,其最大数目由 /etc/mysqld.conf 中的table_cache 指定。清单 4给出了显示与打开表有关的活动的方式。清单 4. 显示打开表的活动mysql> S...
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
Outlook Express 6 (OE6) for Win7/Win8/Win10
英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。
mysql设置缓存权限不够_mysql缓冲和缓存设置
MySQL 可调节设置可以应用于整个 mysqld进程,也可以应用于单个客户机会话。服务器端的设置每个表都可以表示为磁盘上的一个文件,必须先打开,后读取。为了加快从文件中读取数据的过程,mysqld对这些打开文件进行了缓存,其最大数目由 /etc/mysqld.conf 中的table_cache 指定。清单 4给出了显示与打开表有关的活动的方式。mysql> SHOW STATUS LIK...
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
mysql 缓存区_MYSQL缓冲区和缓存设置
MYSQL缓冲区和缓存设置时间:2019-01-18 17:17作者:网友投稿MySQL 支持超过 100 个的可调节设置;但是幸运的是,掌握少数几个就可以满足大部分需要。查找这些设置的正确值可以通过 SHOW STATUS 命令查看状态变量,从中可以确定 mysqld 的运作情况是否符合我们的预期。给缓冲区和缓存分配的内存不能超过系统中的现有内存,因此调优通常都需要进行一些妥协。MySQL 可调...
SIMATIC S7-1200, S7-1500 PID 控制[手册]
SIMATIC S7-1200, S7-1500 PID 控制[手册]
mysql 的缓冲 与缓存_mysql缓冲和缓存设置详解
MySQL 可调节设置可以应用于整个 mysqld进程,也可以应用于单个客户机会话。服务器端的设置每个表都可以表示为磁盘上的一个文件,必须先打开,后读取。为了加快从文件中读取数据的过程,mysqld对这些打开文件进行了缓存,其最大数目由 /etc/mysqld.conf 中的table_cache 指定。清单 4给出了显示与打开表有关的活动的方式。清单 4. 显示打开表的活动m...
mysql缓存配置_补充五:mysql缓冲和缓存设置
MySQL 可调节设置可以应用于整个mysqld进程,也可以应用于单个客户机会话。表的缓存:table_cache每个表都可以表示为磁盘上的一个文件,必须先打开,后读取。为了加快从文件中读取数据的过程,mysqld对这些打开文件进行了缓存,其最大数目由 /etc/mysqld.conf 中的table_cache指定。清单 4给出了显示与打开表有关的活动的方式。清单 4. 显示打开表的活动my...
浅谈MySQL 数据库性能优化
MySQL数据库是 IO 密集型的程序,和其他数据库一样,主要功能就是数据的持久化以及数据的管理工作。本文侧重通过优化MySQL 数据库缓存参数如查询缓存,表缓存,日志缓存,索引缓存,innodb缓存,插入缓存,以及连接参数等方式来对MySQL数据库进行优化。
mysql知识点系列-重要组件详解(线程缓存、表缓存、数据字典、日志缓冲、表空间)
本文主要基于《高性能MySQL》 文章目录1、线程缓存2、表缓存3、InnoDB数据字典4、InnoDB缓冲池5、日志缓冲6、InnoDB表空间(1)innodb_data_home_dir(2)系统表空间(3)独立表空间(4)表空间碎片(5)回滚日志清理线程(6)双写缓冲(7)插入缓冲 1、线程缓存 线程缓存用于缓存连接线程,保存那些当前没有使用但是准备为后面新的连接服务的线程。当有创建一个新连接时,如果缓存中有可用线程,那么从缓存中取出该线程使用,当连接关闭时,如果缓存中有空间,那么就将该线程放入缓.
mysql 为什么性能不稳定_浅谈MySQL 数据库性能优化
MySQL数据库是 IO 密集型的程序,和其他数据库一样,主要功能就是数据的持久化以及数据的管理工作。本文侧重通过优化MySQL 数据库缓存参数如查询缓存,表缓存,日志缓存,索引缓存,innodb缓存,插入缓存,以及连接参数等方式来对MySQL数据库进行优化。缓存参数这里先引用一句话,从内存中读取一个数据的时间消耗是微秒级别,而从普通硬盘上读取一个数据是在毫秒级别,二者相差3个数量级。可见,想对M...
Mysql的几个设置值
Mysql的几个设置值 mysql数据库的优化——老声长谈的话题,总是有那么多的话题好谈。闲来无事,谈谈几个关键优化参数的设置问题。注意的是,本文主要针对于MyISAM引擎,其他的,日后再吧。 在此之前,如果对mysql的命令和配置不很熟的情况下,phpmysql是必要的。 首先,到状态选项栏,拉一个系统状态表下来,或者执行mysqladmin variables ex...
mysql缓冲和缓存设置详解
本文主要给大家讲解的是mysql优化过程中比较重要的2个参数缓冲和缓存的设置,希望大家能够喜欢MySQL 可调节设置可以应用于整个 mysqld进程,也可以应用于单个客户机会话。服务器端的设置每个表都可以表示为磁盘上的一个文件,必须先打开,后读取。为了加快从文件中读取数据的过程,mysqld对这些打开文件进行了缓存,其最大数目由 /etc/mysqld.conf 中的table_cache 指定。...
mysql 表高速缓存
表高速缓存 show global status like 'open%tables%';查看打开的表的数量: open_tables:是当前在缓存中打开表的数量。 opened_tables:是mysql自启动起,打开表的数量。 当Opened_tables数值非常大,说明cache太小,导致要频繁地open table,可以查看下当前的
MySQL数据库缓存服务打不开_MySQL 数据库服务缓存已经打开的表的参数介绍 | IT工程师的生活足迹...
MySQL 服务器会缓存下来数据库实例已经打开过的表文件和表定义文件。其中优化设置主要是:1、所有线程缓存打开的表的数量2、数据库实例打开的表的缓存区分为多个小缓存区,提高使用效率3、表定义缓存区中缓存多少表定义的信息数一、缓存打开的表的数量:table_open_cacheMySQL 数据库缓存所有连接线程打开表的数量。增加此值会增加mysqld所需的文件描述符的数量。您可以通过检查Opened...
mysql参数配置学习----临时表内存表的设置
参照自:https://blog.youkuaiyun.com/caomiao2006/article/details/52205391 MySQL内存表的特性与使用介绍:https://www.cnblogs.com/AloneSword/p/3206486.html 1,mysql临时表和内存表的区别 1.1 内存表 内存表,就是放在内存中的表,数据放在内存中,表结构定义放在磁盘中,所使用内存的大小通...
961



被折叠的 条评论
为什么被折叠?



