MySQL 实际内存分配

修复zookeeper未授权访问漏洞 【代码】修复zookeeper未授权访问漏洞。 阅读详情

背景

MySQL 版本: MySQL 5.7.20
硬件配置: 8C + 32GB + 1000GB

MySQL实际内存分配

  MySQL 的内存是一个重要的性能参数,常常出现由于异常的SQL请求以及待优化的数据库导致内存利用率升高的情况,严重时还会出现由于OOM导致数据库宕机,在没有做HA的情况下导致整个业务线的瘫痪。

MySQL的内存大体可以分为共享内存和session私有内存两部分。

共享内存

执行如下命令,即可查询示例的共享内存参数分配情况:

show variables where variable_name in (
'innodb_buffer_pool_size',
'innodb_log_buffer_size',
'innodb_additional_mem_pool_size',
'key_buffer_size','query_cache_size'
);

输出示例:

+---------------------------------+-----------------+
| Variable_name                   | Value           |
+---------------------------------+-----------------+
| innodb_additional_mem_pool_size | 8388608         |
| innodb_buffer_pool_size         | 25769803776     |
| innodb_log_buffer_size          | 8388608         |
| key_buffer_size                 | 16777216        |
| query_cache_size                | 3145728         |
+---------------------------------+-----------------+
共返回 5 行记录,花费 342.74 ms.

参数说明
◎ innodb_buffer_pool_size
  该部分缓存是Innodb引擎最重要的缓存区域,是通过内存来弥补物理数据文件的重要手段,数据库实例上会采用实例规格配置的75%作为该部分大小。其中主要包括数据页、索引页、undo页、insert buffer、自适应哈希索引、锁信息以及数据字典等信息。在进行SQL读和写的操作时,首先并不是对物理数据文件操作,而是先对buffer_pool进行操作,然后再通过checkpoint等机制写回数据文件。该空间的优点是可以提升数据库性能、加快SQL运行速度,缺点是故障恢复速度较慢。
◎ innodb_log_buffer_size
  该部分主要存放redo log的信息,在RDS上会设置1M的大小。InnoDB会首先将redo log写在这里,然后按照一定频率将其刷新回重做日志文件中。该空间不需要太大,因为一般情况下该部分缓存会以较快刷新频率刷新至redo log(Master Thread会每秒刷新、事务提交时会刷新、其空间少于1/2时同样会刷新)。
◎ innodb_additional_mem_pool_size
  该部分主要存放InnoDB内的一些数据结构,在RDS中统一设置为2M。通常是在buffer_pool中申请内存的时候还需要在额外内存中申请空间存储该对象的结构信息。该大小主要与表数量有关,表数量越大需要的空间越大。
◎ key_buffer
  该部分是MyISAM表的重要缓存区域,所有实例统一为16M。该部分主要存放MyISAM表的键。MyISAM表不同于InnoDB表,其缓存的索引缓存是放在key_buffer中的,而数据缓存则存储于操作系统的内存中。RDS的系统是MyISAM引擎的,因此在RDS中是给予该部分一定量的空间的。
◎ query_cache
  该部分是对查询结果做缓存以减少解析SQL和执行SQL的花销,在RDS上关闭了该部分的缓存。主要适合于读多写少的应用场景,因为他是按照SQL语句的hash值进行缓存的,当表数据发生变化后即失效。

Session私有内存

  共享内存中介绍的内存空间是实例创建时即分配的内存空间,并且是所有连接共享的。而出现OOM异常的实例都是由于下面各个连接私有的内存造成的。
执行如下命令,查询示例的session私有内存分配情况:

show variables where variable_name in (
'read_buffer_size',
'read_rnd_buffer_size',
'sort_buffer_size',
'join_buffer_size',
'binlog_cache_size',
'tmp_table_size'
);

输出示例:

+-------------------------+-----------------+
| Variable_name           | Value           |
+-------------------------+-----------------+
| binlog_cache_size       | 262144          |
| join_buffer_size        | 262144          |
| read_buffer_size        | 262144          |
| read_rnd_buffer_size    | 262144          |
| sort_buffer_size        | 262144          |
| tmp_table_size          | 262144          |
+-------------------------+-----------------+
共返回 6 行记录,花费 356.54 ms.

参数说明
◎ read_buffer_size & read_rnd_buffer_size
  分别存放了对顺序和随机扫描(例如按照排序的顺序访问)的缓存,RDS给每个session设置256K的大小。当thread进行顺序或随机扫描数据是会首先扫描该buffer空间避免更多的物理读。
◎ sort_buffer_size
  需要执行order by和group by的SQL都会分配sort buffer,用于存储排序的中间结果,在RDS上设置256K。在排序过程中,若存储量大于sort_buffer_size,则会在磁盘生成临时表以完成操作。在Linux系统中,当分配空间大于2M是会使用mmap()而不是malloc()来进行内存分配,导致效率降低。
◎ join_buffer_size
  MySQL仅支持nest loop的join算法,RDS设置256K的大小。处理逻辑是驱动表的一行和非驱动表联合查找,这时就可以 将非驱动表放入join_buffer,不需要访问拥有并发保护机制的buffer_pool。
◎ binlog_cache_size
  该区域用来缓存该thread的binlog日志,RDS设置256K的大小。在一个事务还没有commit之前会将其日志存储于binlog_cache中,等到事务commit后会将binlog刷回磁盘上的binlog文件以持久化。
◎ tmp_table_size
  不同于上面各个session层次的buffer,这个参数可以在控制台上修改。该参数是指用户内存临时表的大小,如果该thread创建的临时表超过它设置的大小会把临时表转换为磁盘上的一张MyISAM临时表。如果用户在执行事务时遇到类似如下这样的错误,可以考虑增大tmp_table的值.

[Err] 1114 - The table '/home/mysql/data3081/tmp/#sql_6197_2' is full
2026全网最新华为OD机试真题目录A+B+C+D+E卷(持续收录中)-Python版 🔔本文收录于「最新最全华为OD机试真题(Python版)」专栏,手把手带你零基础教学华为OD机试。本题集提供最优题解思路,解题步骤,代码解析,复杂度分析及最优题解源码等,支持多语言题解,助你轻松拿捏OD机考,一举上岸!安利大家关注&&收藏&&订阅!题库正在疯狂收录中,up!up!up!! 🚫提醒:拒绝一切代考/替考,违法必究!本人所写题库均精心搜集于互联网。    💗订阅福利:一次订阅,可永久免费阅读,提供在线答疑解惑,后续题库更新皆可阅读使用! 阅读详情

相关推荐

开关电源EMC整改案例-辐射骚扰

2.4.1 获得原始数据。同样的分析可以应用在差模电流的情况, 唯一不同的是, 两根导线的磁场分布是相反的, 磁 场互相抵消, 由于导线中的电流大小相等, 产生的磁场 H 大小相同, 在互相靠近的情况下, 在磁 环内的两个感应磁场大小相同、方向相反, 因此合成之后的感应磁场 B 几乎为 0,对任意一根导 线而言,相当于是一段“无感导线”,对差模电流不会产生任何抑制作用。众所周知, 共模电感的匝数越多, 感量越大, 按道 理来说对共模干扰电流的抑制也会越强烈,对抗辐射 也越有利,然而事实真的如此吗?

经营范围: CTA、SRRC、CCC、移动、电信、联通入库 3496

mysql能抗住多少tps_MySQL性能测试 : 新的InnoDB Double Write Buffer

原文链接:http://dimitrik.free.fr/blog/posts/mysql-80-perf-new-dblwr.html作者:Dimitri译者:孟维克新的MySQL8.0.20版本重新设计了InnoDB Double Write(DBLWR),确实是一个大的历史烦人的事情。为什么在过去这么痛苦,让我们付出了这么多精力,我无法更好地解释,因为从2018年开始,我已经在下面...

weixin_39889214的博客 551

Cortex-M异常处理深度解析:从HardFault到调试实战

在嵌入式开发中,Cortex-M系列处理器的异常处理机制是保障系统可靠性的核心。然而,面对HardFault、MemManage、BusFault等异常时,开发者往往陷入迷茫。本文结合SEGGER AN00016和Keil AN209两篇权威文档,深入剖析异常根源、寄存器解析及调试技巧,并通过代码实例演示如何快速定位问题。

汽车电子软件领域知识分享 2533

mysql read buffer_mysql read_buffer_size 设置多少合适_MySQL

key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = 458624 Kread_buffer_size:是MySQL读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且...

weixin_42501688的博客 550

【超详细】基于YOLOv8的PCB缺陷检测

印刷电路板(PCB)瑕疵数据集:是一个公共的合成PCB数据集,由北京大学发布,其中包含1386张图像以及6种缺陷(缺失孔,鼠标咬伤,开路,短路,杂散,伪铜),用于检测,分类和配准任务。本文我们选取了其中适用与检测任务的693张图像,随机选择593张图像作为训练集,100张图像作为验证集。

weixin_45679938的博客 2万+

基于Unidbg的小红书加密协议动态分析与算法还原实战

在移动应用安全领域,加密协议与签名机制是保障数据传输安全、实现客户端身份验证的核心技术。其原理通常涉及哈希算法、对称/非对称加密以及自定义的混淆逻辑,旨在防止请求被篡改或重放。理解这些协议对于安全研究、风控策略制定及合规的数据交互分析具有重要价值。在实际的工程实践中,面对高度混淆和加固的Native代码(SO库),传统的静态分析往往难以深入。此时,沙盒模拟执行技术提供了一种动态、可控的分析方案。通过搭建一个虚拟的移动应用运行环境,研究人员可以在无需真机、规避反调试机制的情况下,完整地追踪和观察加密算法的执行

weixin_29315091的博客 325

增加mysql的sortbuffer_[深入理解MySQL系列] - sort_buffer-阿里云开发者社区

注:本系列文章主要探讨MySQL内存利用以及执行计划相关的一些知识点,从而为MySQL优化打下更好的基础。环境说明OS: AS4U6, 2.6.9-67.0.15.ELsmp, 16G Ram, MD3000阵列, xfs文件系统MySQL 5.1.26 - percona(innodb plugin, innodb stat, user stat, msl, show patch, ac...

weixin_28885791的博客 426

从0开始图形学(光栅化)

从0开始图形学

A112459的专栏 2395

mysql 数据库优化参数设置_轻松优化MySQL-之数据库参数优化

最佳实践使用InnoDB存储引擎InnoDB引擎已经在多方面超越了MyIsam引擎,没有特殊需求的情况下建议选择InnoDB引擎。让InnoDB使用全部内存innodb_buffer_pool_size参数指定了 InnoDB 可以使用的内存总量。建议设置为物理内存的 80%,因为要给操作系统留有空间。如果你的内存是 32GB,可以设置为大约 25GBinnodb_buffer_pool_size...

weixin_29227585的博客 326

语义分割(Semantic Segmentation)近年发展综述

目标:为图像中每个像素分配一个语义类别标签(如“道路”、“行人”、“天空”),不区分同类实例。关键挑战精确边界恢复(高空间分辨率)全局上下文理解(大感受野)计算效率与精度平衡小样本/弱监督泛化语义分割的十年演进,是一条从专用→通用、封闭→开放、慢速→实时、像素→语义2015:FCN/U-Net 奠基;2018:DeepLabv3+/PSPNet 实现高精度;2020:HRNet+OCR 登顶竞赛;2021:SegFormer 开启 Transformer 新纪元;2023+

浩瀚之水的专栏 977

【时空图神经网络 & 交通】相关模型3:STFGNN | 空间-时间依赖性 | 基于数据驱动的方法来生成“时间图” | 时空融合图模块,门控卷积模块 | 动态时间规整 | 顶会文章解析

STFGNN(时空融合图神经网络)在交通流量预测中的优势主要体现在以下几个方面:首先,它提出了一种数据驱动的方法生成“时间图”,弥补了传统空间图可能无法反映的某些相关性。其次,STFGNN通过并行处理不同时间段的空间图和时间图,有效地学习隐藏的时空依赖关系。此外,它将融合图模块与门控卷积模块整合到一个统一层中,通过层层堆叠处理长序列,进一步增强了模型的表达能力。实验结果表明,STFGNN在多个交通数据集上表现出色,优于其他基准方法,展示了其在实际应用中的强大潜力。

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 384

mysql内存分配参数_MySQL实际内存分配情况介绍

内存是重要的性能参数,常常出现由于异常的sql请求以及待优化的数据库导致内存利用率升高,更有甚者由于OOM导致实例发生HA切换。MySQL的内存大体可以分为两部分:共享内存和session私有内存,下面详细介绍下各部分的构成。1.共享内存以下为240M内存规格RDS实例的共享内存分配示意:mysql>show variables where variable_name in ('innod...

weixin_35327824的博客 891

2024年11月架构设计师综合知识真题回顾,附参考答案、解析及所涉知识点(一)

软考高级考试包含三个科目:信息系统综合知识、系统架构设计案例分析和系统架构设计论文。考试形式为机考。本文主要回顾2024年下半年(2024-11-10)系统架构设计师考试上午综合知识科目的选择题,同时附带参考答案、解析和所涉知识点。由于机考时题目顺序是打乱的,本文题目所标序号只为区分不代表实际顺序。综合知识。

一几文的编程学习笔记。 9278

查mysql内存分配_MySQL 实际内存分配情况介绍

RDS 的内存是重要的性能参数,常常出现由于异常的 SQL 请求以及待优化的数据库导致内存利用率升高的情况,严重时还会出现由于 OOM 导致实例发生 HA 切换的情况。MySQL 的内存大体可以分为共享内存和 session 私有内存两部分,下面将详细介绍各部分的构成。共享内存执行如下命令,即可查询示例的共享内存分配情况:show variables wherevariable_name in('...

weixin_33603656的博客 1303

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

mysql全局分配的内存_MySQL 实际内存分配情况介绍

RDS 的内存是重要的性能参数,常常出现由于异常的 SQL 请求以及待优化的数据库导致内存利用率升高的情况,严重时还会出现由于 OOM 导致实例发生 HA 切换的情况。MySQL 的内存大体可以分为共享内存和 session 私有内存两部分,下面将详细介绍各部分的构成。共享内存执行如下命令,即可查询示例的共享内存分配情况:show variableswherevariable_namein('in...

weixin_42581003的博客 164

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

mysql 内存 分配_MySQL 实际内存分配情况介绍

RDS 的内存是重要的性能参数,常常出现由于异常的 SQL 请求以及待优化的数据库导致内存利用率升高的情况,严重时还会出现由于 OOM 导致实例发生 HA 切换的情况。MySQL 的内存大体可以分为共享内存和 session 私有内存两部分,下面将详细介绍各部分的构成。共享内存执行如下命令,即可查询示例的共享内存分配情况:show variableswherevariable_namein ('i...

weixin_31961675的博客 245

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

mysql为哪些内容分配内存_MySQL 实际内存分配情况介绍

RDS 的内存是重要的性能参数,常常出现由于异常的 SQL 请求以及待优化的数据库导致内存利用率升高的情况,严重时还会出现由于 OOM 导致实例发生 HA 切换的情况。MySQL 的内存大体可以分为共享内存和 session 私有内存两部分,下面将详细介绍各部分的构成。共享内存执行如下命令,即可查询示例的共享内存分配情况:show variables wherevariable_name in('...

weixin_31212247的博客 291

RDS for MySQL实际内存分配情况介绍

RDS 的内存是重要的性能参数,常常出现由于异常的 SQL 请求以及待优化的数据库导致内存利用率升高的情况,严重时还会出现由于 OOM 导致实例发生 HA 切换的情况。 MySQL 的内存大体可以分为共享内存和 session 私有内存两部分,下面将详细介绍各部分的构成。 共享内存 执行如下命令,即可查询示例的共享内存分配情况: show variables where variabl...

AI时代光年 1395

Rds mysql 内存配置_rds内存太高?MySQL 实际内存分配情况介绍

RDS 的内存是重要的性能参数,常常出现由于异常的 SQL 请求以及待优化的数据库导致内存利用率升高的情况,严重时还会出现由于 OOM 导致实例发生 HA 切换的情况。MySQL 的内存大体可以分为共享内存和 session 私有内存两部分,下面将详细介绍各部分的构成。共享内存执行如下命令,即可查询示例的共享内存分配情况:show variableswherevariable_namein ('i...

weixin_42486913的博客 1023

【MySQL篇】内存分配管理机制:全局Buffer Pool与会话级内存分配

MySQL数据库内存分配总原则 ≈ innodb_buffer_pool_size + key_buffer_size + + max_connections × (sort_buffer_size + read_buffer_size + binlog_cache_size + 线程栈 2MB 连接开销)

奈斯DB的博客 1009

技术分享 | MySQL 内存管理初探

作者:xuty 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 一、背景 经常在项目上碰到在没有 大并发活跃 SQL 的情况下,MySQL 所占用的物理内存远大于 InnoDB_Buffer_Pool 的配置大小。我起初是怀疑被 performance_schema 吃掉了 或是 MySQL 存在内存泄露,而后发现并非如此。是自己对于 MySQL 和 Linux 的内存管理不了解所致,因此本篇就来深入讨论下,有何不对或者不严谨的地方欢迎提出~ 先简单说.

ActionTech的博客 465

c语言连接mysql_技术分享 | MySQL 内存管理初探

作者:xuty本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。一、背景经常在项目上碰到在没有大并发活跃 SQL的情况下,MySQL 所占用的物理内存远大于 InnoDB_Buffer_Pool 的配置大小。我起初是怀疑被 performance_schema 吃掉了或是 MySQL 存在内存泄露,而后发现并非如此。是自己对于 MySQL 和 Linu...

weixin_39897749的博客 87

mysql startup_MySql my.ini详解

MySQL服务器实例配置文件模版版本 1.0.1安装MySQL为系统服务:mysqld --install MySQL41 --defaults-file="C:\Program Files\MySQL\MySQL Server 4.1\my.ini"客户端部分[设置端口号]port=3306服务器端port=3306设置端口号basedir安装目录datadir数据存放目录default-cha...

weixin_34561662的博客 180

mysql超售_MySQL OOM 系列三 摆脱MySQL被Kill的厄运

前面两章,我们分析了Linux内存分配的策略以及Linux通过使用 OOM_Killer的机制解决了“超售”引起的风险,MySQL同其他的应用程序一样,在操作系统允许的范围内也是可以超售的,一般人理解,Innodb_buffer_pool必须小于实际物理内存,否则MySQL会启动失败。其实这是一个误区,这个不是MySQL层控制的,这个是操作系统(OS)层控制的,就是前面提到的/proc/sys/o...

weixin_36482579的博客 149

mysql 32位 内存_MySQL内存调优

原文链接: MySQL Memory Allocation -- by Rick James原文日期: Created 2010; Refreshed Oct, 2012, Jan, 2014翻译人员: 铁锚翻译日期: 2014年5月28日MySQL 内存分配—— 高速设置方案假设仅使用MyISAM存储引擎,设置 key_buffer_size为可用内存的20%,(再加上设置 innodb_buf...

weixin_35186171的博客 356

mysql哪些内容分配内存_mysql innodb 引擎内存分配项

MySQL做为最流行的开源数据库,innodb在5.6开始已成为默认引擎,在5.7中系统吧引擎也有myisam改为innodb,可以看出innodb引擎现在已经可以满足绝大部分的业务需求,内存分配直接影响MySQL整体运行效率,有innodb_buffer,还有各种cache_size,这些选项都需要合理分配,合理利用服务器有限的内存让MySQL跑的更嗨皮,直接影响的选项有下面几个:innodb_...

weixin_31520435的博客 263
上一篇: Redis 内存占满
下一篇: MySQL 碎片管理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值