Mysql数据库管理-Innodb 内存优化分析

MySql数据库内存分析优化

1 Innodb重做日志

redo log是Innodb保障事务ACID属性的重要机制。工作原理图如下:

2 增加缓冲池数量,减少内部对缓冲池结构争用。

mysql内部线程对innodb缓存池的访问在某个阶段是互斥的,这种内部竞争也会产生性能问题,尤其是在高并发和buffer pool较大的情况下,为了解决这个问题,innodb的缓存系统引入参数。

参数:

innodb_buffer_pool_instances,

对于较大的缓冲池,适当的增加此参数值,可以降低并发导致内部缓存访问冲突,改善性能,innodb_buffer_pool_size指定大小的缓存平分为innodb_buffer_pool_instances个buffer pool

3 控制innodb buffer刷新,延长数据缓存时间,减缓磁盘IO

在innodb找不到干净的可用缓存页或者检查点被触发的情况下,innodb的后台线程开始吧“脏的缓存页回写到磁盘中”这个过程叫做缓存刷新。
我们通常希望buffer pool中的数据在缓存中保留的时间尽可能长,以备重用,从而减少IO的次数。延缓缓存刷新来减少IO压力。

Innodb buffer pool的刷新快慢主要取决于2个参数

innodb_max_dirty_pages_pct

innodb_io_capacity

02:45:  [(none)]> show variables like '%innodb_max_dirty%';
+--------------------------------+-----------+
| Variable_name                  | Value     |
+--------------------------------+-----------+
| innodb_max_dirty_pages_pct     | 90.000000 |
| innodb_max_dirty_pages_pct_lwm | 10.000000 |
+--------------------------------+-----------+
2 rows in set (0.01 sec)

02:45:  [(none)]> select @@version;
+-----------+
| @@version |
+-----------+
| 8.0.34    |
+-----------+
1 row in set (0.00 sec)

02:46:  [(none)]>

如果状态变量innodb_buffer_pool_wait_free的值增长较快,则说明Innodb经常在等待空闲缓冲页,如果无法增大缓冲池,那么应该将 innodb_max_dirty_pages_pct  调整小或者增加innodb_io_capacity值。

02:47:  [(none)]> show status like '%innodb_buffer_pool_wait_free%';
+------------------------------+-------+
| Variable_name                | Value |
+------------------------------+-------+
| Innodb_buffer_pool_wait_free | 0     |
+------------------------------+-------+
1 row in set (0.00 sec)

02:49:  [(none)]> 

4 调整用户服务线程排序缓存区

       如果通过 show global status 看到 sort_merge_passes 的值很大,可以考虑通过调整参数sort_buffer_size的值来增大排序缓存区,以改善带有 order by子句或group子句SQL的性能。


       对于无法通过索引进行连接操作的查询,可以尝试通过增大,join_buffer_size的值来改善性能。不过需要注意的是,sort buffer和 join buffer都是面向客户服务线程分配的,如果设置过大可能造成内存浪费,甚至导致内存交换。尤其是 join buffer,如果是多表关联的复杂查询,还可能会分配多个 join buffer,因此最好的策略是设置较小的全局 join_buffer_size,而对需要做复杂连接操作的session单独设置较大的join_buffer_size。

set global join_buffer_size=1000

set session join_buffer_size=100000

2 优化mysql并发

1 max_connections

\s

如果状态变量connection_errors_max_connections不为0,并且一直在增长就说明不断有连接请求因为数据库连接数达到上限而失败,每个连接都有自己独立的sort_buffer_size和join_buffer_size值。

show status like '%max_connection%';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/154555.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaSE】基础笔记 - 图书管理系统(保姆教程,含源码)

目录 1、图书管理系统介绍 2、大致框架 3、代码实现步骤 3.1、Book图书类 3.2、BookList书架类 3.3、User用户类、AdminUser类、NormalUser类 3.4、IOperation操作接口 3.5、继承IOperation接口的操作类 3.6、完善User类 3.7、Mian类 4、完整代码 Java的三大特性是…

python2环境问题

pip源推荐使用 -i http://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn 安装pip工具,可以环境上已有的pip赋值到对应目录下 更新pip工具,python2的pip需要20.3版本以前的。解决pip命令从其它环境复制过来导致的一系列…

《研发效能 100 问》首发,多位专家解读「研效提升」的破局之道?

为了可以帮助更多研发管理者和研发效能负责人,了解构建研发效能体系应从何做起,以及在构建过程中需要解决哪些疑难问题,有哪些最佳实践可以借鉴。2023 年 7 月,思码逸发起,由行业知名研发效能专家张乐老师担任出品人&a…

KT142C语音芯片客户反馈电脑端的配置文件,打开都正常,但是拷贝到KT142C内部就乱码

KT142C语音芯片客户反馈电脑端的配置文件,打开都正常,但是拷贝到KT142C内部就乱码 首先解释一下原理,KT142C内置的330Kbyte空间可供用户下载,实际上拿出程序部分的空间 作为声音存储介质的,也就是说,代码空…

[每周一更]-(第72期):Docker容器瘦身方式

Docker清理缓存操作 在构建测试的过程中,由于是自家小服务器,资源紧张,发现磁盘一直爆满,删除一些大镜像还是会占满的情况,就想到是不是也是缓存问题。 经过查询确实是build过程中的缓存启发的占用问题。 因此引出以下…

【自动驾驶解决方案】C++取整与保留小数位

一、C基础 1.1double型保留小数为&#xff0c;并以字符输出 #include <iostream> #include <sstream> #include <iomanip> // 包含std::fixedint main() {//浮点数double number 3.1415926;//转换工具类streamstd::stringstream stream;stream << s…

【微信小程序】2023年11月版本 关于小程序隐私保护指引设置的公告 | 修改微信小程序隐私保护 |小程序无法获取用户昵称 头像 性别 等问题

一、登录小程序后台 《关于小程序隐私保护指引设置的公告》 https://mp.weixin.qq.com/cgi-bin/announce?actiongetannouncement&announce_id11691660367cfUvX&version&langzh_CN&token 上面是官方的文档&#xff0c;但是由于比较陈旧&#xff0c;和现在的页面…

基于单片机的空气质量实时监测系统(论文+源码)

1. 系统设计 通过文献和市场调查&#xff0c;本设计的实现方案框架是以单片机为核心控制处理器搭建外围的功能模块如温度传感器模块、湿度传感器检测模块、二氧化碳传感器检测设备模块、无线通信模块和蜂鸣器声光报警提示模块来实现&#xff0c;辅以显示模块来展示。 该系统通…

数据仓库

一. 各种名词解释 1.1 ODS是什么&#xff1f; ODS层最好理解&#xff0c;基本上就是数据从源表拉过来&#xff0c;进行etl&#xff0c;比如mysql 映射到hive&#xff0c;那么到了hive里面就是ods层。 ODS 全称是 Operational Data Store&#xff0c;操作数据存储.“面向主题的…

Java 异常处理、继承、重写/重载

一、java异常处理&#xff1a; 三种类型的异常&#xff1a;检查性异常、运行时异常、错误。 所有的异常类是从java.lang.Exception类继承的子类。Exception类是Throwable类的子类。除了Exception类外&#xff0c;Throwable还有一个子类Error。 异常类有两个主要的子类&#…

OpenAI宫斗,尘埃落定,微软成最大赢家

周末被OpenAI董事会闹剧刷屏,ChatGPT之父Sam Altman前一天被踢出董事会,免职CEO,后一天重返OpenAI,目前结局未知。 很多同学想要围观,缺少背景知识,这里老章为大家简单介绍前因后果及涉及的人物,时间线,让大家轻松围观。 备好瓜子,开始。 1、主角 先看一张图,看一…

Python学习(打基础版)

以前只是大致的了解&#xff0c;现在比较完整的整理一下笔记&#xff0c;以后工作可能会用到。 学习地址如下所示&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了_哔哩哔哩_bilibili 第一章 环境配置 1 初识Python 人…

Ubuntu Server download

前言 Ubuntu——公共云、数据中心和边缘上最受欢迎的 Linux 发行版。自成立以来&#xff0c;Ubuntu 一直在获得市场份额&#xff0c;截至今天已接近 50%。 Ubuntu Server download VersionUbuntu Server 其它主机型号版本Ubuntu AMD历史版下载百度云Ubuntu Server all Ubuntu…

阿里8年经验之谈 —— 分享一次接口性能摸底测试过程!

接口性能测试是用于验证应用程序中的接口是否可以满足系统的性能要求的一种测试方法。确定应用程序在各种负载条件下的性能指标&#xff0c;例如响应时间、吞吐量、并发性能等&#xff0c;以便提高系统的性能和可靠性。本文主要讲述接口性能测试从前期准备、方案设计到环境搭建…

SQL常见函数整理 —— LAG() 向上偏移

1. 用法 窗口函数&#xff0c;用于访问窗口中当前行之前的行的数据。该函数可以根据需要计算当前行之前的值&#xff0c;使我们能够轻松地比较不同行之间的差异和变化。 2. 基本语法 LAG(column, offset, default_value) OVER (ORDER BY column)column&#xff1a;代表在返回…

【香橙派】实战记录1——简介及烧录 Linux 镜像

文章目录 一、简介1、参数2、结构3、其他配件4、下载资料 二、基于 Windows PC 将 Linux 镜像烧写到 TF 卡的方法1、使用 balenaEtcher 烧录 Linux 镜像的方法2、效果 一、简介 Orange Pi Zero 3 香橙派是一款开源的单板卡片电脑&#xff0c; 新一代的arm64开发板&#xff0c;…

百度搜索万亿规模特征计算系统实践

作者 | Jay 导读 本文主要介绍百度搜索在全网万亿级规模内容做内容理解的工程实践&#xff0c;涉及机器学习工程化、资源调度、存储优化等多个Topic。 全文6648字&#xff0c;预计阅读时间17分钟。 01 业务背景 百度收录了互联网海量内容&#xff0c;要索引这些内容&#xff0…

如果文件已经存在与git本地库中,配置gitignore能否将其从git库中删除

想把项目的前后台代码放到同一个git仓库管理&#xff0c;由于未设置.gitignore&#xff0c;就使用vscode做stage操作&#xff08;相当于git add . 命令 其中【.】点表示全部文件&#xff09;&#xff0c;观察将要入库的文件发现&#xff0c;node_modules、target、.idea、log等…

无服务器开发实例|微服务向无服务器架构演进的探索

在当今的技术环境中&#xff0c;许多组织已经从构建单一的应用程序转变为采用微服务架构。微服务架构是将服务分解成多个较小的应用程序&#xff0c;这些应用程序可以独立开发、设计和运行。这些被拆分的小的应用程序相互协作和通信&#xff0c;为用户提供全面的服务。在设计和…