首页 > 其他分享 >问题总结

问题总结

时间:2023-09-21 15:15:32浏览次数:38  
标签:总结 tables cache 问题 实例 limit table open

1.参数影响RDS实例性能

分库分表实例,共5台rds 相同的配置,每个rds20个表, 在执行相同的脚本(串行执行alter table 来回收表空间),

发现其中一台数据库(rds1)实例执行的速度比其他4台足足慢了1天, 分库分表,数据量是差不多的, 表大小也差不多,为什么会有这么大的差异呢?

排查结果:发现rds1的其中一个参数和其他的rds设置的不一样,其他4台设置的是16 只有rds设置的是1

参数:table_open_cache_instances

rds2~rds5

 rds1

 原因:(目前还未验证完成修改参数后是否有效)

table_open_cache:所有线程打开的表的数量。增加这个值会增加mysqld需要的文件描述符的数量。可以通过检查Opened_tables状态变量来检查是否需要增加表缓存。

table_open_cache_instances:

打开的表缓存实例的数量。为了通过减少会话间的争用来提高可伸缩性,可以将打开的表缓存划分为几个大小为table_open_cache / table_open_cache_instances的较小缓存实例。一个会话只需要锁定一个实例就可以访问DML语句。写到这里就已经大致了解到 如下关系:

table_definition_cache > table_open_cache_instances > table_open_cache

扩展:
1.table相关的限制有哪些?

mysql是多线程,对于并发同一个文件,不同数据的情况下,会打开多个文件,会存在哪些限制呢?下面是源代码里逻辑是怎样

1)table_definition_cache

.frm文件其实最大值只能到2000,跟官网给得最大值没关系

2)open_files_limit
imit_1= 10 + max_connections + table_cache_size * 2;
limit_2= max_connections * 5;
limit_3= open_files_limit ? open_files_limit : 5000;
可以看出max_connections有关,需要借助于table open file 的信息

3)max_connections超出打开文件数量的伐值的时候,也跟table_open_cache有关

4)table_cache_size 计算方式

备注:TABLE_OPEN_CACHE_MIN=table_open_cache

5.定期查看open table 情况
通过 show global status like ‘%Open%_table%’; 确认是否调优这个参数

2.常见故障应对:
如:在运行数据库通过 show processlist 可看到大量的 Opening tables、closing tables状态,导致应用端访问操作。
需要确认 table_open_cache=最大并发数表数量(join里可能用到2张表),时候满足当前配置
如:但并发线程数达到1000,假设这些并发连接中有40%是访问2张表,其他都是单表,那么cache size就会达到(100040%2+100060%*1)=1400
建议定期监控值:
Open_tables / Opened_tables >= 0.85 表的重复使用率
Open_tables / table_open_cache <= 0.95 缓存里存在已打开的表

1)5.7版本已经支持在线动态改配置信息

set global table_definition_cache=2000;
set global table_open_cache=3000;
set global max_connection= 2000;
table_open_cache_instances参数修改需要重新启动服务

2)无法更改的时候,可通过flush操作,但存在问题

MySQL closes an unused table and removes it from the table cache under the following circumstances: When the cache is full and a thread tries to open a table that is not in the cache.When the cache contains more than table_open_cache entries and a table in the cache is no longer being used by any threads.When a table-flushing operation occurs. This happens when someone issues a FLUSH TABLES statement or executes a mysqladmin flush-tables or mysqladmin refresh command.
这里好奇FLUSH TABLE操作,有如下隐患:
关闭所有打开的表,强制关闭所有正在使用的表,并刷新查询缓存和准备好的语句缓存。FLUSH TABLES还会从查询缓存中删除所有查询结果,比如RESET查询缓存语句。

备注:
另外 table_definition_cache为每个表的表空间中可以同时打开的InnoDB文件的数量定义了一个软限制,这也是由innodb_open_files控制的。
如果设置了table_definition_cache和innodb_open_files,则使用最高设置。如果两个变量都没有设置,则使用默认值更高的table_definition_cache。

总结:
Table缓存关于的参数table_definition_cache,table_definition_cache,table_open_cache_instances 按照实际环境和需求进行设置外,还有跟max_connections也要设置合理。有些环境里发现max_connections过大,过小设置的问题,设置过大可能会存在等待的情况
这些参数控制不好,会给MySQL数据库系统带来性能上的瓶颈。如果把握不是很准,有个很保守的设置建议:把MySQL数据库放在生产环境中试运行一段时间,然后把参数的值调整得比Opened_tables的数值大一些,并且保证在比较高负载的极端条件下依然比Opened_tables略大

 

标签:总结,tables,cache,问题,实例,limit,table,open
From: https://www.cnblogs.com/chengyunblogs/p/17719980.html

相关文章

  • Window计划任务调用exe程序时日志文件没有写出问题
    转自:https://blog.csdn.net/qq273766764/article/details/50729967/在之前写的exe程序中均有写文件日志操作,直接运行时是有日志文件的,但是配置到计划任务中就没有日志文件产生,程序的读写权限都已配置,但仍是没有日志文件之后百度了一下,原因是由于没有配置操作中的起始于选项,程......
  • P1258 小车问题
    就算不要求同时到达答案也是一样的,因为完全可以让先到的人少坐一点车。两人同时到达最省时间。在某个时刻,可能是小车载着某个人在开,另一个人在走;也可能是两人都在走,小车在两人之间,去追在后面的那个人。两人走的路程和坐车的路程都分别相同。其它情况肯定不优,而上面的方案可以把......
  • 【AGC】认证服务开发问题汇总
    ​ 1.     开发者在服务端集成认证服务SDK,想通过验证用户凭据接口来验证从客户端获取的token,在调用过程中响应数据报code203818355的错误解决方案:该错误显示accessToken格式不正确。首先确认Authorization 中的accesstoken是通过管理员角色,项目为N/A的ClientID和ClientSe......
  • 【HarmonyOS】解决API6 WebView跳转外部浏览器问题、本地模拟器启动黑屏
    ​【问题描述1】HarmonyOSAPI6Java开发中使用WebView组件,如果网页中有跳转链接,点击会跳转到手机系统浏览器。 【解决方案】解决这个问题的方法就是给WebView这种自定义的WebAgent对象。具体代码如下:WebConfigwebConfig=this.webView.getWebConfig();this.webView.setWe......
  • 如何解决库链接出现符号重定义问题
    下面是一组和GPT的对话,通过逐个排查,我们知道只有一种情况会导致符号重定义。以下假设在CMake配置环境。Q:如果一个静态库a,链接了b,这个时候c链接了a和b,会导致b符号重复定义么?A:任何库(静态或动态)本身都不链接其他库。他们可能有对其他库的依赖性,但实际上并不包含其他库......
  • MySQL压缩包安装问题记录Can't connect to MySQL server on localhost (10061)解决方
    本文章向大家介绍MySQL问题记录--Can'tconnecttoMySQLserveronlocalhost(10061)解决方法,主要包括MySQL问题记录--Can'tconnecttoMySQLserveronlocalhost(10061)解决方法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下......
  • 9月16日总结
    数据库sql中判断时间冲突数据库现有数据其中两列:s-开始时间,e-结束时间.在新插入数据s',e'之前需要判断两个时间之间是否有重合因为使用mybatis-plus的缘故,结论都使用s或e在符号前面.s<e比如yyyy-MM-ddHH:mm:ss格式的数据,多用于判断预约时间和每日排班冲突......
  • 9月19日总结
    合集-计算机网络(5)1.网络协议的重要性与应用:理解进程间通信和网络分层结构(上)09-172.网络协议的重要性与应用:理解进程间通信和网络分层结构(下)09-183.深入理解HTTP的基础知识:请求-响应过程解析09-194.深入解析HTTP请求:了解请求特征与报文格式的关键秘密09-205.TCPvsUD......
  • 9月22日总结
    matplotlib的动画一直是一个强大但使用频率不高的功能,究其原因,一方面展示动画需要一定的媒介,没有图形和文字展示方便;二来大家更关心的是分析结果的最终图表,图表的动态展示则没有那么重要。不过,随着短视频的兴起,在短视频平台上展示动画变得非常容易,所以,我们发现有越来越多的数......
  • 9月21日总结
    前言:欢迎来到Node.js20Node.js20已经发布,带来了创新和激动人心的新时代。这个开创性的版本于2023年4月18日首次亮相,并将在2023年10月发布长期支持(LTS)版本,并且将持续支持至2026年4月,下面小编就为大家介绍一下Node.js20的几个新特性:1.Node.js权限访问Node.js20正式推出了......