mysql数据库学习-mysql内存IO性能优化

Mysql内存性能优化

1 CPU模式优化

1.7、安装jemalloc,避免原生内存分配器带来的内存碎片问题.

cp  $basedir/lib/mysql/libjemalloc.so.1  /usr/lib64/libjemalloc.so

数据库配置文件添加如下

[mysqld_safe]

malloc-lib=/usr/lib64/libjemalloc.so

1.8、修改cpu模式

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

2 mysql数据库8以后得hint

select /*+ set_var(optimizer_switch='index_merge=off') set_var(join_buffer_size=4M) */ c_id from customer limit 1;

3 优化innodb_buffer_pool_size

      innodb_buffer_pool_size 决定 InnoDB 存储引擎表数据和索引数据的最大缓存区大小。Innod buffer pool同时为数据块和索引块提供数据缓存,这与Oracle的缓存机制很相似。在保证操作系统及其他程序有足够内存可用的情况下,innodb_buffer_pool_size的值越大,缓存命中率越高,访问InnoDB表需要的磁盘I/O就越少,性能也就越高。在一个专用的数据库服务器上,可以将 80%的物理内存分配给 InnoDB buffer pool,但一定要注意避免设置过大而导致页交换。

innodb缓存池命中率

(1 -innodb buffer pool reads /innodb buffer pool read request)*100

4 优化innodb_log_file_size

一、innodb 重做日志

当更新数据时,innodb 内部的操作流程大致是:

将数据读入 innodb buffer pool,并对相关记录加独占锁;

将 undo 信息写入 undo 表空间的回滚段中;

更改缓存页中的数据,并将更新记录写入 redo buffer中;

提交时,根据 innodb_flush_log_at_trx_commit 的设置,用不同的方式将 redo buffer 中的更新记录刷新到 innodb redo log file 中,然后释放独占锁;

最后,后台 IO 线程根据需要择机将缓存中更新过的数据刷新到磁盘文件中。

innodb_log_buffer_size决定InnoDB重做日志缓存池的大小,默认值是8MB。对于可能产生大量更新记录的大事务,增加innodb_log_buffer_size的大小,可以避免InnoDB在事务提交前就执行不必要的日志写入磁盘操作。因此,对于会在一个事务中更新、插入或删除大量记录的应用,我们可以通过增大innodb_log_buffer_size来减少日志写磁盘操作,从而提高事务处理的性能。

5 优化thread_cache_size

为加快连接数据库的速度,MySQL 会缓存一定数量的客户服务线程以备重用,通过参数thread_cache_size可控制MySQL缓存客户服务线程的数量。
可以通过计算线程cache的失效率threads_created/connections来衡量thread_cache_size的设置是否合适。该值越接近1,说明线程cache命中率越低,应考虑适当增加thread_cache_size的值。

[information_schema] 04:40:47>show variables like '%thread_cache_size%';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| thread_cache_size | 768   |
+-------------------+-------+
1 row in set (0.00 sec)

[information_schema] 04:38:56>show status like '%threads_created%';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| Threads_created | 338   |
+-----------------+-------+
1 row in set (0.00 sec)

[information_schema] 04:39:06>show variables like '%connections%';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| max_connections      | 10000 |
| max_user_connections | 0     |
+----------------------+-------+
2 rows in set (0.01 sec)

6 优化innodb_lock_wait_timeout的设置

  参数innodb_lock_wait_timeout可以控制InnoDB事务等待行锁的时间,默认值是50ms,可以根据需要动态设置。对于需要快速反馈的交互式OLTP应用,可以将行锁等待超时时间调小,以避免事务长时间挂起;对于后台运行的批处理操作,可以将行锁等待超时时间调大,以避免发生大的回滚操作。

7 优化table_open_cache

  每一个SQL执行线程至少都要打开1个表缓存,参数table_open_cache控制所有SQL执行线程可打开表缓存的数量。这个参数的值应根据最大连接数 max_connections 以及每个连接执行关联查询中所涉及表的最大个数(用N表示)来设定:

max_connections*N

[information_schema] 04:36:02>show variables like '%table_open_cache%';
+----------------------------+--------+
| Variable_name              | Value  |
+----------------------------+--------+
| table_open_cache           | 2048   |
+----------------------------+--------+
3 rows in set (0.01 sec)

[information_schema] 04:36:19>show status like '%open_tables%';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Com_show_open_tables | 0     |
| Open_tables          | 2048  |
+----------------------+-------+
2 rows in set (0.00 sec)

(greatdb@10.142.44.36)[information_schema] 04:36:24>

在未执行 flush tables命令的情况下,如果MySQL状态变量 opened_tables的值较大,就说明table_open_cache设置得太小,应适当增大

增大table_open_cache的值,会增加MySQL对文件描述符的使用量,因此,也要注意评估open-files-limit的设置是否够用。

8 合理设置log file size 控制检查点

当日志文件写满后INNODB会自动切换到另一个logfile,其他的logfile要产生检查点,产生大量IO操作,刷脏页(16KB)

show status like '%innodb_os_log_written%';

select sleep(60);

show status like '%innodb_os_log_written%';

在业务高峰运行期间如果 Innodb_log_waits 值为0或接近0, innodb_log_buffer_size 可能太大,可以减少。

set @old_value := 0;
set @new_value := 0;
select VARIABLE_VALUE into @old_value from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Innodb_log_waits';
select SLEEP(时间);
select VARIABLE_VALUE into @new_value from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Innodb_log_waits';
select @old_value;
select @new_value;

日志设置大小至少为 30* 两次值差量/1024/1024.

9 数据盘禁用atime

/etc/fstab

atime是Linux/Unix系统下的一个文件属性,每当读取文件时,OS都会将读操作发生的时间回写到磁盘上。对于读写频繁的数据库文件来说,记录文件的访问时间一般没有任何用处,反而会增加磁盘系统的负担,影响I/O的性能。因此,可以通过设置文件系统的mount属性,阻止操作系统写atime信息,以减轻磁盘I/O的负担。在Linux下的具体做法如下。

(1)修改文件系统配置文件/etc/fstab,指定noatime选项:

/dev/vg_orasoft/lv_orasoft_u01 u01  ext4 defaults,noatime 0 0

(2)重新mount文件系统:

#mount  -oremount  /u01

完成上述操作,以后读/u01下文件就不会再写磁盘了。

7 优化back_log

   back_log参数控制MySQL监听TCP端口时设置的积压请求栈大小,5.6.6版本以前的默认值是 50,5.6.6版本以后的默认值是 50+(max_connections / 5),但最大不能超过 900。
如果需要数据库在较短时间内处理大量连接请求,可以考虑适当增大back_log的值。


8 子查询调整连接优化

explain update irdb.r_tra_port a set  a.line_branch_type = 52101 where obj_id in 
 (select ORIG_POINT_ID id from irdb.r_topolink  where orig_ne_type in (504,501) union  select DEST_POINT_ID id from irdb.r_topolink where orig_ne_type in (504,501));


一条update语句优化。

explain 
update irdb.r_tra_port b JOIN 
(select ORIG_POINT_ID id from irdb.r_topolink  where orig_ne_type in (504,501) 
 union  
 select DEST_POINT_ID id from irdb.r_topolink where orig_ne_type in (504,501)
) a
on b.obj_id =a.id set b.line_branch_type = 52101

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

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

相关文章

鸢尾花分类和手写数字识别(K近邻)

鸢尾花分类 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import pandas as pd import mglearn# 加载鸢尾花数据集 iris load_iris() X_train, X_test, y_train, y_test train_test_split(iris.data,iris.target,test_siz…

免费分享一套SpringBoot+Vue校园论坛(微博)系统【论文+源码+SQL脚本】,帅呆了~~

大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue校园论坛(微博)系统,分享下哈。 项目视频演示 【免费】SpringBootVue校园论坛(微博)系统 Java毕业设计_哔哩哔哩_bilibili【免费】SpringBootVue校园论坛(微博)系统 Java毕业设计…

【JAVA技术】mybatis 数据库敏感字段加解密方案

引言:自从有公司项目前2年做了三级等保,每年一度例行公事,昨天继续配合做等保测试。这2天比较忙,这里整理之前写的一篇等保技术文章。 正文: 现在公司项目基本用mybatis实现,但由于项目跨度年份比较久&…

chls.pro/ssl证书安装失败解决办法

我的手机是一台root,但未获取sustem分区的手机,在安装charles的 ssl证书时,发现在手机浏览器输入chls.pro/ssl,但证书一直无法下载。

数据中心网络架构设计与优化

数据中心是现代企业和组织的核心基础设施,它们用于存储、处理和传输大量的数据和信息。为了满足不断增长的数据需求和提供可靠的服务,设计和优化数据中心网络架构至关重要。 首先,数据中心网络架构设计需要考虑可扩展性。随着业务的增长&…

[Bug]使用Transformers 微调 Whisper出现版本不兼容的bug

错误的现象 ImportError Traceback (most recent call last) <ipython-input-20-6958d7eed552> in () from transformers import Seq2SegTrainingArguments training_args Seq2SeqTrainingArguments( output_dir"./whisper-small-…

【全开源】防伪溯源一体化管理系统源码(FastAdmin+ThinkPHP+Uniapp)

&#x1f50d;防伪溯源一体化管理系统&#xff1a;守护品质&#xff0c;追溯无忧 一款基于FastAdminThinkPHP和Uniapp进行开发的多平台&#xff08;微信小程序、H5网页&#xff09;溯源、防伪、管理一体化独立系统&#xff0c;拥有强大的防伪码和溯源码双码生成功能&#xff0…

从零开始学JAVA

一、编写Hello world程序 public class JavaMain1 {//主程序执行入口&#xff0c;main方法public static void main(String[] args){System.out.println("Hello world!");} } 运行结果 Hello world! java编写主程序常见错误&#xff1a; 1、System ---首字母没有…

使用Aspose技术将Excel转换为PDF

简介&#xff1a;本文将介绍如何使用Aspose技术将Excel文件转换为PDF格式。我们将使用Aspose-Cells-8.5.2.jar包&#xff0c;并演示Java代码以及进行测试。 一、Aspose技术概述 Aspose是一款强大的文档处理库&#xff0c;支持多种编程语言&#xff0c;如Java、C#、Python等。…

ssh 樹梅派RaspberryPi eMMC版本

安裝rpi 2204的desktop版本&#xff0c;在boot根目錄添加一個ssh的文件&#xff0c;不知道爲什麼還是不能ssh 參考以下博客的方法後可以ssh了 https://idminer.gitbook.io/robotis/part-1-turtlebot3/24.-faq/24.1.-ru-he-zai-raspberry-pi-shu-mei-pai-qi-dong-ssh-server …

工程力学 - 课程导论

工程力学是工程学科中的核心基础课程&#xff0c;专注于研究物体在外力作用下的运动规律和受力情况。它涵盖了静力学、运动学、动力学和材料力学等关键领域&#xff0c;为工程结构的安全性、稳定性和功能性提供理论支撑。通过理论分析、实验测定和计算机模拟等方法&#xff0c;…

node.js安装包

安装地址&#xff1a;Node.js — Run JavaScript Everywhere 链接&#xff1a;https://pan.baidu.com/s/1c7gCEt46HA0yt-EZeu5iFA 提取码&#xff1a;yfbq

【GlobalMapper精品教程】084:tif(tfw)、jpg(jgw)、png(pgw)的区别与联系

文章目录 一、tif(tfw)、jpg(jgw)、png(pgw)简介二、tif(tfw)、jpg(jgw)、png(pgw)生成1. ArcGIS中生成2. Globalmapper中生成一、tif(tfw)、jpg(jgw)、png(pgw)简介 tif(tfw)、jpg(jgw)、png(pgw)文件原理相同,以tfw为例来说明。 TFW(TIFF World File)…

MyEclipse新手使用介绍

目录 1.MyEclipse诞生背景 2.作用 3.版本历史 4.优缺点 5.应用场景 6.如何使用 6.1.下载与安装 6.2.MyEclipse 菜单及其菜单项 7.创建和发布一个 Java 程序 7.1.创建 Java 程序 7.2.发布 Java 程序 8.示例 8.1. Hello World 示例 8.2. 简单Spring Boot 应用 8.3…

SpringBoot实现发送邮件功能

目录 一、开启邮件服务 二、导入pom依赖 三、配置yml文件 四、发送邮件 4.1、发送文字邮件 4.2、发送html邮件 4.3、发送附件邮件 4.4、发送图片邮件 一、开启邮件服务 这里拿QQ邮箱举例。 翻到下面进行开启,之后获取授权码。 二、导入pom依赖 <dependency><…

问题:明朝统辖西域的主要措施有( )(2.0分) (多选题) #学习方法#微信#经验分享

问题&#xff1a;明朝统辖西域的主要措施有( )(2.0分) (多选题) A.设立哈密卫 B.册封各地的首领 C.都护统领 D.布局要地 参考答案如图所示

any和unknown有何区别

在TypeScript&#xff08;TS&#xff09;中&#xff0c;any和unknown都是用来表示类型的一种方式&#xff0c;但它们在类型安全性和使用场景上有着显著的区别。以下是关于any和unknown的详细区别&#xff1a; 类型安全性&#xff1a; any类型&#xff1a;它表示任何类型&#…

为什么说国产大模型的野心,都藏在 MaaS 的生态中

2016 年 4 月&#xff0c;在一场由 IDG 主办的行业峰会上。 IDG 创始董事长熊晓鸽&#xff0c;刚刚盘点完 IDG 深耕中国企业服务多年的成果&#xff0c;台下&#xff0c;GE 中国公司 CEO 便发出了不合时宜的灵魂一问&#xff1a; 「中国有很多伟大的公司&#xff0c;也有很多…

深度评价GPT-4o:探索人工智能的新里程碑

在人工智能领域&#xff0c;OpenAI的GPT系列自推出以来就备受瞩目。GPT-4o作为该系列的最新版本&#xff0c;无疑是迄今为止最为强大的一代。它不仅在技术性能上有了质的飞跃&#xff0c;而且在应用的广泛性和深度上都展现出了惊人的潜力。本文将从版本对比、技术能力、使用体验…

用大模型实现PPT可视化几种思路

https://zhuanlan.zhihu.com/p/700685802 背景 前面一篇文章已经介绍了如何根据用户输入&#xff0c;用大模型实现内容检索、分析、脑图可视化的链路。然而往往投研团队需要针对重要新闻做组内分析解读&#xff0c;需要用ppt的方式来展现&#xff1b;那么优美可能让大模型直…