MySQL session相关的内存设置

MySQL内存使用率高且不释放问题排查与总结 总结一下MySQL内存使用率高且不释放的应对方法: 继续加大内存(如果参数调无可调时选择); 修改减小innodb_buffer_pool_size参数(牺牲一定innodb性能); 排查消耗内存的慢SQL,及时优化; 检查相关session参数是否设置合理,比如join_buffer_size、query_cache_size是否设置过大; 使用gdb回收内存碎片(生产环境谨慎操作):gdb --batch --pid ‘pidof mysqld’--ex 'call malloc_trim(0)'; 阅读详情
AI摘要

本文深入解析MySQL中的关键参数,如read_buffer_size、sort_buffer_size等,阐述其作用于不同存储引擎及场景下的影响,指导如何合理设置以提升数据库性能。

  • read_buffer_size = 16M
    • MyISAM 表顺序扫描的缓存大小,如果要经常顺序扫描 MyISAM 表,可以通过增大 read_buffer_size 的值来改善性能,但是这个变量是每会话独占,如果设置太大,会造成内存浪费,甚至物理内存耗尽。
      • 在以下场景中适用于所有的存储引擎
      • 此选项也在以下场景中用于所有存储引擎:

        * 控制 ORDER BY 行排序时的临时文件(不是临时表,而是排序

        的文件)中缓存索引的大小

        * 控制批量插入到分区中的数据大小

        * 控制缓存嵌套查询的结果集大小

      • memory 存储引擎中该参数的值决定 MEMORY 表的内存块大小,注意是块大小,而不是 memory 表可以使用的内存总大小,memory 引擎表的数据总大小限由max_heap_table_size 参数控制。
      • 全局,会话变量,默认为 128K,最大为 2G,整型值。注意:设置值必须为 4K 的倍数,否则会截取你设定值的最接近 4K 的倍数的值作为该参数的值。取值范围为:8200~2147479552 字节。
      • PS:为啥这个变量官方描述的是用于 MyISAM,而在某些场景也适用于所有存储引擎呢?因为在这些场景下,mysql 内部保存这些临时数据仍然使用的是 MyISAM 表,在 mysql 5.7.x 的版本中,这些内部临时表可以设置使用 InnoDB 存储引擎,如果临时表设置为 InnoDB 存储引擎,则这个参数的大小就无需多关注了(除非你使用 MyISAM 引擎和 memory 引擎)。
  • read_rnd_buffer_size = 32M
    • MyISAM 表排序缓存的缓存大小(注意,是 key-sorting 索引排序),如果需要对 MyISAM 表做排序,可以增大 read_rnd_buffer_size 改善性能,这个变量同样的每会话独占,也不能设置太大。
      • 该变量控制的 buffer 在从任何存储引擎读取数据的时候,都会用于缓存读取的数据,包括 MRR 优化特性也会使用。
      • 全局,会话变量,动态变量,默认值为 256K,最大值为 2G,整型值。取值范围 1~2147483647 字节(2G)。
  • sort_buffer_size = 32M
    • 用于存放排序数据的缓存大小,超过这个大小就会使用文件排序。如果通过 show global status 看到 Sort_merge_passes 的值很大,可以考虑通过适当调整 sort_buffer_size 的值来增大排序缓存区(另外增加max_sort_length 参数的值时可能也需要增加 sort_buffer_size 参数的值),改善带有 order by 和 group by 子句的 sql 性能。sort_buffer_size 是每线程独占分配(每个执行排序操作的会话才会分配),不要设置过大,最好是设置一个较小的全局值,如果碰到较大表做排序,就对这个 session 设置较大的值。
      • 该参数适通用于所有存储引擎,最小值必须要足够大,至少要在排序缓冲中能够存放 15 个排序元组。
      • 5.6.4 之前的版本总是在有排序操作时直接分配整个排序缓冲给会话,从 5.6.4 版本开始优化器尝试计算排序数据的大小来分配排序缓冲的大小给会话。
      • 在 linux 上,大于 256K 或者 2M 的排序缓冲大小可能显著降低内存分配的性能。
      • 全局变量,会话变量,动态变量,默认值在不同版本中频繁变化,大于 5.6.4 版本号的 64 位版本默认值为 256K,整型值。64位平台取值范围为:32768~18446744073709551615 字节。
  • tmp_table_size = 64M
    • 内存临时表超过这个大小后,就会把内存临时表转换为磁盘临时表,线程级别的参数,不要设置过大,一般全局设置不大于 100M 就可以了,否则很容易发生内存溢出,但是,如果说在临时大数据查询的时候,可以打开一个会话临时设置大一点,避免产生临时磁盘表。或者,可以使用索引查询尽量减少返回的数据量。
      • 内部用于控制内存临时表大小使用,是适用于用户创建的内存表和临时表。
      • 实际限制从 tmp_table_size 和 max_heap_table_size 两个变量的的值中取较小值。 如果内存中临时表超过这个限制,MySQL会自动将其转换为磁盘上的 MyISAM 表。 如果您执行许多高级GROUP BY 查询并且用到大量内存,请增加 tmp_table_size 的值(如果必要,也请增加 max_heap_table_size 的值)。
      • 状态变量 Created_tmp_disk_tables 持续增加时,需要增加tmp_table_size 的值。
      • Created_tmp_disk_tables/(Created_tmp_disk_tables+Created_tmp_tables)*100% > 10%的话,就需要注意适当提高tmp_table_size 的大小,但是不能设置太大,因为它是每个session 都会分配的,可能会导致 OOM(out of memory)。
      • 全局变量,会话变量,动态变量,默认值为 16M,整型值。取值范围为:1024~18446744073709551615 字节。
  • max_heap_table_size=64M
    • 默认是 16M,可以根据需要加大,在定义内存表时,可以使用max_rows 子句指定表的最大行数来约定内存表的数据量。该参数是用于控制用户创建的内存表的数据大小。
      • 设置此变量不会影响任何现有的 MEMORY 表,除非使用如CREATE TABLE 或使用 ALTER TABLE 或 TRUNCATE TABLE 语句重新创建表、修改表结构或清空表数据。 服务器重新启动也会将现有 MEMORY 表的数据最大大小限制设置为全局max_heap_table_size 值。
      • 此变量也与 tmp_table_size 结合使用以限制内部内存表的大小。如果设置与 tmp_table_size 大小不一样,则控制内部内存临时表以较小的为准。
      • 全局变量,会话变量,动态变量,64 位版本默认值为 16M,整型值。取值范围为:16384~1844674407370954752 字节。
  • join_buffer_size = 32M
    • 用于存放 join 查询中间结果的缓存大小。对于无法通过索引进行联结操作的查询,可以通过适当增大 join_buffer_size 的值来改善联结查询性能(但最好是想办法让 join 使用到索引来提高性能)。join_buffer_size 都是每线程独占分配,不要设置过大(除非能够使用BKA 特性,当使用 BKA 时,join_buffer_size 的值的大小决定了向存储引擎的每个请求中包含的键值对的多少,缓冲区越大,联结操作的右表即被驱动表的顺序 I/O 访问就越多,BKA 的作用就是把随机 I/O 访问变为顺序 I/O 访问,这可以显着提高性能),最好是设置一个较小的全局值,如果碰到较大表做联结查询,或者是比较复杂的联结表查询,就对这个 session 设置较大的值。
      • 对于简单查询的索引扫描、索引范围扫描以及因为不能使用到索引做全表扫描的 join 查询时,无论返回的数据多大,都会分配该参数的最小值 128 字节那么多 join buffer 做查询。
      • 对于简单的两个表之间的查询分配一个 join buffer,但是对于复杂的多表 join 查询且不能使用索引的时候,可能会分配多个 join buffer。
      • 全局变量,会话变量,动态变量,默认值在不同版本中频繁变化,大于 5.6.6 版本号的 64 位版本默认值为 256K,最小值为128 字节,整型值。取值范围为:128~18446744073709547520 字节。
  • thread_cache_size = 64
    • 为加快数据库连接的速度,mysql 会缓存一定数量的客户端服务线程以备重用,通过这个参数可以控制 mysql 缓存客户端服务线程的数量,可以通过计算线程 cache 的失效率:Threads_created/Connections 状态变量比值来衡量 thread_cache_size 参数的设置是否合理,该值越接近 1,说明线程 cache 的命中率越低,就应该考虑增加这个参数的值。
      • 当一个客户端访问完成断开连接时,如果线程缓存中的客户端连接线程没有达到 thread_cache_size 定义的值,则这个客户端线程会被 put 到缓存中,当另外一个客户端新建连接时,如果线程缓存不为空(即有客户端线程缓存在线程缓存中),就会从缓存中取出这个客户端连接进行重用。在大多数情况下,如果你的并发连接不高的时候,这个值对性能的影响可能就看不出来,但是当有大量并发连接时,通过增大这个值可以缓解高并发连接的压力。
      • 默认值为-1,表示自动计算(计算公式:8 + (max_connections/ 100)),全局变量,动态变量,整型值。固定值取值范围为:0~16384
      • PS:这个变量对嵌入式服务器(libmysqld)没有任何影响,而在 MySQL 5.7.2 在嵌入式服务器中移除了这个变量。
Qt之自定义带游标的QSlider 最近翻看6年前写了一篇关于QSlider的博客:Qt自定义带游标的slider,在滑块正上方显示当前值 发现存在很多问题,比如游标的坐标不准确;如果游标宽度稍大,滑到Slider最左或最右的时候会显示不全;游标不够美观。 PS:这里有个漂亮的Slider样式表https://blog.youkuaiyun.com/caoshangpa/article/details/53389517于是今天再实现了一遍,依然是子类化QSlider,效果如下,支持设置游标的尺寸:这一次的实现比之前简洁很多,只需要重新paintEvent 阅读详情

相关推荐

Qwen2.5-7B大模型实战:从零部署到高效推理全流程解析

本文详细解析了Qwen2.5-7B大模型从零部署到高效推理的全流程。内容涵盖环境准备、模型下载、使用Transformers进行核心对话推理,并深入介绍了vLLM与TGI生产级服务部署、GPTQ/AWQ量化技术以降低显存消耗,以及llama.cpp、Ollama等本地推理方案。旨在帮助开发者快速掌握部署技巧,实现大模型在消费级硬件上的高效运行。

weixin_29061425的博客 490

MySQL连接会话数占用内存

综上所述,无法给出准确的数字来确定6000个连接大致需要占用多少内存,因为每个连接的内存占用是相对较小的,而其他因素如查询缓存、排序和临时表、缓冲池等都会对内存占用产生影响。MySQL 的内存占用与连接数之间的关系是复杂的,具体取决于多个因素,包括配置设置、查询负载、数据大小和使用的存储引擎等。缓冲池的大小对内存占用有显著影响,较大的缓冲池可以容纳更多的数据页,从而提供更好的性能。通过使用连接池,可以有效地管理数据库连接资源,避免连接资源的浪费和频繁的连接创建和销毁操作,从而提高应用程序的性能和可扩展性。

喝醉酒的小白 2831

自动驾驶传感器选型实战:摄像头、激光雷达与毫米波雷达融合策略

自动驾驶感知系统的核心在于多传感器协同,而非单一技术优劣。摄像头擅长语义识别但受光照和天气制约;激光雷达提供高精度测距却面临成本、温漂与多径干扰等物理瓶颈;毫米波雷达则以全天候鲁棒性与精准测速成为安全底线的守门人。三者融合不是简单叠加,而是基于场景约束(如暴雨、强光、高速跟车)、成本边界(BOM控制)与时间窗口(量产节奏)的工程权衡。真实量产方案中,‘纯视觉’实为视觉主责+毫米波兜底,‘激光雷达上车’本质是用硬件真值加速算法迭代,而传统车企更倾向以毫米波为仲裁者协调冲突。理解这些底层原理,才能在传感器选型、

weixin_32495691的博客 277

mysql内存体系结构_mysql 内存体系结构--session

体系结构tmp_table_size & max_heap_table_size ,这个是会话级的内存结构mysql使用总内存 = global_buffers + thread_buffersAll thread buffer(会话/线程级内存分配总和) =max_threads(当前活跃连接数) * (read_buffer_size -- 顺序读缓冲,提高顺序读效率+read_rnd...

weixin_33046149的博客 357

科研作图不发愁:手把手教你用PyMOL给蛋白-DNA互作图‘美颜’(附完整配色与标注方案)

本文详细介绍了如何使用PyMOL对蛋白-DNA互作结构图进行专业美化,包括从PDB文件加载、结构展示与标注、互作位点突出显示到高质量渲染输出的完整流程。通过具体案例(PDB ID:8SSS)演示了锌指结构域区分、关键残基标注和互作距离测量等实用技巧,帮助科研人员制作可直接用于期刊投稿的高质量示意图。

weixin_42523792的博客 554

AI产品经理必备:Agent评测维度、指标与工程化落地指南

随着大模型从单轮问答走向复杂的Agent应用,如何科学地评测一个Agent是否真正“办成了事”,成为AI产品经理必须掌握的核心能力。与传统大模型评测关注回答质量不同,Agent评测需要综合评估任务规划、工具调用、多轮对话一致性以及失败自愈等行为。任务完成率与工具调用成功率是最关键的两个量化指标,同时还需关注延迟与Token成本等工程约束。在实际落地中,评测集的设计要覆盖业务主流程与边界场景,并通过批量回归测试与版本对比,为产品选型、算法迭代和上线决策提供数据支持。本文系统拆解了Agent评测的完整流程,帮助

weixin_29057163的博客 344

mysql 的内存临时表两个参数 tmp_table_size、max_heap_table_size

mysql 5.5 >show processlist; 观察 State 列时,发现经常有 Copying to tmp table、Copying to tmp table on disk baidu 了下,获取的信息是调整参数 tmp_table_size、max_heap_table_size 这两个参数是mysql对临时表的大小控制 其中 tmp_table_size ...

一名数据库爱好者的专栏 2万+

RK3568平台(USB篇)USB HUB集线器

hub,集线器,连接在host与device之间的一种用于usb接口扩展的usb设备。可以将一个usb上行接口扩展为多个下行接口,使得一个host可以同时与多个device连接。一般来说,一块hub桥接芯片可扩展4个usb接口,而市面上的一拖七hub,其实使用了两块hub桥接芯片,其中一块hub桥接芯片的上行端口连接到另一块hub桥接芯片的下行端口。hub的上行端口面向host,下行端口面向device。在下行端口上,hub提供了设备接入检测和设备移除检测的能力,并给下行端口供电。

weixin_49303682的博客 967

jetty配置mysql数据库参数_Jetty集群配置Session存储到MySQL、MongoDB

在Web开发中,Session表示HTTP服务器与客户端(例如浏览器)的“会话”,每个客户端会有其对应的Session保存在服务器端,通常用来保存和客户端关联的一些信息,例如是否登录、购物车等。Session一般情况下是保存在服务器内存中。如果服务器重启,Session就会丢失。另外,如果是集群环境,Web应用部署在多台服务器上,Session如果保存在各自的服务器上,就无法共享了。针对这个问题,...

weixin_39865204的博客 221

手把手教你学Simulink——高频隔离型双向DC-AC逆变器的建模与仿真

本文系统讲解高频隔离型双向DC-AC逆变器的Simulink建模与仿真,基于DAB+全桥逆变两级拓扑,详述DAB移相控制原理、双闭环控制策略及分步仿真搭建流程。重点涵盖电路建模、控制环设计、参数设置与常见问题调试,强调模块化分步验证与分层控制逻辑,实现安全、高效、灵活的双向能量流动仿真,适用于储能、微电网等场景的系统开发与验证。

MHD0815的博客 110

Android功耗系列专题理论之六:外设功耗问题分析方法

本文介绍了移动设备功耗问题的分析方法,重点针对传感器和GPU两大模块。传感器部分详细讲解了通过ADB命令获取日志、状态差异分析和单传感器隔离测试的排查方法,并给出优化建议。GPU部分从基础功耗测量、场景测试到功能模块拆解进行多维度分析。同时阐述了GNSS/GPS功耗的测试方法,包括前后台对比、星座双频拆解及SAP/DPO等特殊功能的电流分析,为移动设备功耗优化提供系统性的诊断思路。

375

mysql配置优化

mysql 设置参数解读 一 mysql的参数分为几类 1 session级别可以设置 2 global级别可以设置 3 session+global级别可以设置 4 read_only必须加入配置文件才可以设置 二 mysql5.6版本 #innodb innodb_additional_mem_pool_size=32M(用来存储元数据,表...

天阶的专栏 181

YOLOv8 | 损失函数改进,最新提出的Shape-IoU,有效涨点

作为检测器定位分支的重要组成,边框回归损失在目标检测任务中发挥巨大作用。现有的边框回归方法,通常考虑了GT框与预测框之间的几何关系,通过使用边框间的相对位置与相对形状等计算损失,而忽略了边框其自身的形状与尺度等固有属性对边框回归的影响。为了弥补现有研究的不足,本文提出聚焦边框自身形状与尺度的边框回归方法。首先我们对边框回归特性进行分析,得出边框自身形状因素与尺度因素会对回归结果产生影响。

kay_545 1915

手撕面试官系列(五):Tomcat+Mysql+设计模式面试专题

走过路过不要错过点击蓝字关注我们Tomcat(面试题+答案领取方式|:关注公众号回复【666】)Tomcat 的缺省端口是多少,怎么修改?tomcat 有哪几种 Connector 运行...

Java烂猪皮 386

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

苹果系统安装 php,mysql

换电脑或者环境的时候需要重新安装并配置php环境,所以写了个脚本来处理繁琐的配置等工作;这个脚本能够实现复制php和mysql陪配置文件,配置数据库;

zzttwzq的专栏 1078

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

flask项目开发到部署笔记

flsak开发方法 一,js相关 加载页面时就调用某js方法: <body οnlοad=“方法名();”> 显示某段代码: $("#.选择器").show(); 隐藏某段代码: $("#.选择器").hide(); 修改标签里内容: $("#.选择器").html(新内容); 加载某页面: window.location.href = url路径; 刷新当前页面: location.reload() 提示框: alert(‘内容’)

weixin_45651291的博客 376

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

php mssql mysql_apache_php_mssql_mysql_config

apache_php_mssql_mysql_config服务器配置:session.save_path = "D:\AppServ\www\session_tmp"------------php.iniregister_globals = Off--------------------------------------php.inierror_reporting = E_COMPILE_ERR...

weixin_34055902的博客 139

mysql sum 和 count_一文总结mysql数据库查看内存消耗情况相关命令

概述很多时候我们看到mysql数据库内存用的很高,这个时候我们应该如何知道mysqld进程究竟什么原因消耗掉内存的,都用哪里去了呢?下面介绍几个mysql数据库常用的查看内存消耗情况的命令~一、linux观察mysql线程内存消耗情况top -p mysqlpid -H然后使用pmap -d 分析一下进程的内存情况二、查看mysql实例内存具体分配情况1、共享内存共享内存中的内存空间是实例创建时即...

weixin_39649478的博客 897

MySQL内存及虚拟内存优化设置

mysql 优化调试命令   1、 mysqld --verbose --help 这个命令生成所有mysqld选项和可配置变量的列表 2、   通过连接它并执行这个命令,可以看到实际上使用的变量的值: mysql> SHOW VARIABLES; 还可以通过下面的语句看到运行服务器的统计和状态指标: mysql>SHOW STATUS;

166

php读mysql内存设置,MySQL_MySQL内存及虚拟内存优化设置参数,mysql 优化调试命令   1、my - phpStudy...

MySQL内存及虚拟内存优化设置参数mysql 优化调试命令1、mysqld --verbose --help这个命令生成所有mysqld选项和可配置变量的列表2、通过连接它并执行这个命令,可以看到实际上使用的变量的值:mysql> SHOW VARIABLES;还可以通过下面的语句看到运行服务器的统计和状态指标:mysql>SHOW STATUS;使用mysqladmin还可以获得系...

weixin_39816260的博客 286

设置mysql内存清理时间_MySQL内存及虚拟内存优化设置参数

mysql 优化调试命令1、mysqld --verbose --help这个命令生成所有mysqld选项和可配置变量的列表2、通过连接它并执行这个命令,可以看到实际上使用的变量的值:mysql> SHOW VARIABLES;还可以通过下面的语句看到运行服务器的统计和状态指标:mysql>SHOW STATUS;使用mysqladmin还可以获得系统变量和状态信息:shell>...

weixin_36310662的博客 485

刷新频率 如何查看_一文总结mysql数据库查看内存消耗情况相关命令

概述很多时候我们看到mysql数据库内存用的很高,这个时候我们应该如何知道mysqld进程究竟什么原因消耗掉内存的,都用哪里去了呢?下面介绍几个mysql数据库常用的查看内存消耗情况的命令~一、linux观察mysql线程内存消耗情况top -p mysqlpid -H然后使用pmap -d 分析一下进程的内存情况二、查看mysql实例内存具体分配情况1、共享内存共享内存中的内存空间是实例创建时即...

weixin_35027153的博客 739

mysql session数_Mysql 查看session连接数,状态

命令: show processlist;如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。show processlist;只列出前100条,如果想全列出请使用show full processlist;mysql> show processlist;命令: show status;命令:show status like '%下面变量%';A...

weixin_34268617的博客 1222
上一篇: 在线ddl变更工具​ gh-ost
下一篇: 阿里云镜像加速配置
取壳羊
博客等级 码龄15年 5粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值