mysql数据库innodb性能优化之缓冲池配置
mysql innodb的性能与缓冲池的大小有很大的关系。可以通过以下两个参数进行调整。
innodb_buffer_pool_size 和 innodb_buffer_pool_instances
1. 优化前的默认值
mysql> show variables like 'innodb_buffer_pool%';
+-------------------------------------+----------------+
| Variable_name | Value |
+-------------------------------------+----------------+
| innodb_buffer_pool_chunk_size | 134217728 |
| innodb_buffer_pool_dump_at_shutdown | ON |
| innodb_buffer_pool_dump_now | OFF |
| innodb_buffer_pool_dump_pct | 25 |
| innodb_buffer_pool_filename | ib_buffer_pool |
| innodb_buffer_pool_instances | 1 |
| innodb_buffer_pool_load_abort | OFF |
| innodb_buffer_pool_load_at_startup | ON |
| innodb_buffer_pool_load_now | OFF |
| innodb_buffer_pool_size | 134217728 |
+-------------------------------------+----------------+
10 rows in set (0.17 sec)
这里可以看出,innodb_buffer_pool_size的默认值为128M,和建议的3/4内存差距很大。而且只有一个实例。
2. 优化过的参考值
MySQL [(none)]> show variables like 'innodb_buffer_pool%';
+-------------------------------------+----------------+
| Variable_name | Value |
+-------------------------------------+----------------+
| innodb_buffer_pool_dump_at_shutdown | OFF |
| innodb_buffer_pool_dump_now | OFF |
| innodb_buffer_pool_filename | ib_buffer_pool |
| innodb_buffer_pool_instances | 8 |
| innodb_buffer_pool_load_abort | OFF |
| innodb_buffer_pool_load_at_startup | OFF |
| innodb_buffer_pool_load_now | OFF |
| innodb_buffer_pool_size | 3007315968 |
+-------------------------------------+----------------+
8 rows in set (0.00 sec)
这里是8个实例,每个实例128M,总共2.8G。
3. 执行优化设置
通过sql进行设置为3G:
mysql> SET GLOBAL innodb_buffer_pool_size = 3221225472;
Query OK, 0 rows affected (0.00 sec)
在my.cnf文件中增加如下配置:
# 优化配置3GB, 8 ,128M
innodb_buffer_pool_size=3221225472
innodb_buffer_pool_instances=8
innodb_buffer_pool_chunk_size=128M
查看mysql版本
mysql> select version();
+------------+
| version() |
+------------+
| 5.7.28-log |
+------------+
更新配置以后的参数:
mysql> show variables like 'innodb_buffer_pool%';
+-------------------------------------+----------------+
| Variable_name | Value |
+-------------------------------------+----------------+
| innodb_buffer_pool_chunk_size | 134217728 |
| innodb_buffer_pool_dump_at_shutdown | ON |
| innodb_buffer_pool_dump_now | OFF |
| innodb_buffer_pool_dump_pct | 25 |
| innodb_buffer_pool_filename | ib_buffer_pool |
| innodb_buffer_pool_instances | 8 |
| innodb_buffer_pool_load_abort | OFF |
| innodb_buffer_pool_load_at_startup | ON |
| innodb_buffer_pool_load_now | OFF |
| innodb_buffer_pool_size | 3221225472 |
+-------------------------------------+----------------+
10 rows in set (0.00 sec)
最大连接数:
mysql> show variables like 'max_connections%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 1000 |
+-----------------+-------+
1 row in set (0.01 sec)
配置文件中配置的参数在重启之后,可以继续有效。
如果通过sql修改的参数,在配置文件中的参数没有修改,则重启之后,会以配置文件中配置的参数为准。
查看相关参数:
mysql> show global status like '%innodb_buffer_pool_%';
+---------------------------------------+--------------------------------------------------+
| Variable_name | Value |
+---------------------------------------+--------------------------------------------------+
| Innodb_buffer_pool_dump_status | Dumping of buffer pool not started |
| Innodb_buffer_pool_load_status | Buffer pool(s) load completed at 210821 11:14:41 |
| Innodb_buffer_pool_resize_status | |
| Innodb_buffer_pool_pages_data | 188042 |
| Innodb_buffer_pool_bytes_data | 3080880128 |
| Innodb_buffer_pool_pages_dirty | 80735 |
| Innodb_buffer_pool_bytes_dirty | 1322762240 |
| Innodb_buffer_pool_pages_flushed | 2126372 |
| Innodb_buffer_pool_pages_free | 7881 |
| Innodb_buffer_pool_pages_misc | 661 |
| Innodb_buffer_pool_pages_total | 196584 |
| Innodb_buffer_pool_read_ahead_rnd | 0 |
| Innodb_buffer_pool_read_ahead | 1468 |
| Innodb_buffer_pool_read_ahead_evicted | 0 |
| Innodb_buffer_pool_read_requests | 71446600 |
| Innodb_buffer_pool_reads | 872588 |
| Innodb_buffer_pool_wait_free | 217 |
| Innodb_buffer_pool_write_requests | 19198878 |
+---------------------------------------+--------------------------------------------------+
18 rows in set (0.00 sec)
说明:
- Innodb_buffer_pool_pages_data
InnoDB缓冲池中包含数据的页数。 该数字包括脏页面和干净页面。 使用压缩表时,报告的Innodb_buffer_pool_pages_data值可能大于Innodb_buffer_pool_pages_total(Bug#59550)。
Innodb_buffer_pool_pages_dirty
显示在内存中修改但尚未写入数据文件的InnoDB缓冲池数据页的数量(脏页刷新)。Innodb_buffer_pool_pages_flushed
表示从InnoDB缓冲池中刷新脏页的请求数。Innodb_buffer_pool_pages_free
显示InnoDB缓冲池中的空闲页面Innodb_buffer_pool_pages_misc
InnoDB缓冲池中的页面数量很多,因为它们已被分配用于管理开销,例如行锁或自适应哈希索引。此值也可以计算为Innodb_buffer_pool_pages_total - Innodb_buffer_pool_pages_free - Innodb_buffer_pool_pages_data
。Innodb_buffer_pool_pages_total
InnoDB缓冲池的总大小,以page为单位。innodb_buffer_pool_reads
表示InnoDB缓冲池无法满足的请求数。需要从磁盘中读取。innodb_buffer_pool_read_requests
它表示从内存中逻辑读取的请求数。innodb_buffer_pool_wait_free
通常,对InnoDB缓冲池的写入发生在后台。 当InnoDB需要读取或创建页面并且没有可用的干净页面时,InnoDB首先刷新一些脏页并等待该操作完成。 此计数器计算这些等待的实例。 如果已正确设置innodb_buffer_pool_size,则此值应该很小。如果大于0,则表示InnoDb缓冲池太小。innodb_buffer_pool_write_request
表示对缓冲池执行的写入次数。
另外几个优化建议:
建议innodb引擎表,采用整型自增数据做索引,当然雪花算法也可以。
应避免使用UUID作为主键,UUID作为主键,影响插入数据的效率。
Hash索引无法支持范围查找。
使用联合索引,避免过多的单值索引。
注意联合索引最左前缀优化原则;
尽量使用单表查询,避免执行表连接。
查询没有添加索引的时候,默认按照主键索引进行排序(升序);
Mysql索引采用B+树作为数据结构;
mysql数据库innodb性能优化之缓冲池配置相关推荐
- MySQL数据库访问性能优化
MYSQL应该是最流行的WEB后端数据库.大量应用于PHP,Ruby,Python,Java 等Web语言开发项目中,无论NOSQL发展多么快,都不影响大部分架构师选择MYSQL作为数据存储. MYS ...
- MySQL数据库的性能优化总结
一.MySQL数据库的优化目标.基本原则: 1.优化目标: MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,无论是索引优化.还是表结构优化,参数优化,最后都可以归纳到这这两个分类中: (1)减 ...
- mysql获取查询策略语句_MySQL数据库查询性能优化策略
优化查询 使用Explain语句分析查询语句 Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句. 通过对查询语句的分析,可以了解查询语句的执行 ...
- MySQL数据库的性能的影响分析及优化
MySQL数据库的性能的影响 一. 服务器的硬件的限制 二. 服务器所使用的操作系统 三. 服务器的所配置的参数设置不同 四. 数据库存储引擎的选择 五. 数据库的参数配置的不同 六. (重点)数据库 ...
- MySQL性能优化之参数配置 - 愤怒的码农 - 博客园
MySQL性能优化之参数配置 1.目的: 通过根据服务器目前状况,修改Mysql的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能. 2.服务器参数: 32G内存.4个CPU,每个C ...
- MySQL数据库—InnoDB行存储格式
目录 一.InnoDB支持的行存储格式 二.Compact记录格式 1.变长字段长度列表 (1)对varchar类型字段长度的存储 (2)对char类型字段长度的存储 2.NULL标志位 3.记录头信 ...
- MySQL数据库与SQL优化
一.MySQL 数据库与 SQL 优化 1.结构图 二.MySQL 数据库引擎简介 1.ISAM(IndexedSequentialAccessMethod) ISAM 是一个定义明确且历经时 ...
- 高并发大流量专题---10、MySQL数据库层的优化
高并发大流量专题---10.MySQL数据库层的优化 一.总结 一句话总结: mysql先考虑做分布式缓存,过了缓存后就做mysql数据库层面的优化 1.mysql数据库层的优化的前面一层是什么? 数 ...
- MySQL数据库SQL层级优化
MySQL数据库SQL层级优化 本篇主涉及MySQL SQL Statements层面的优化. 首先,推荐一个链接为万物之始:http://dev.mysql.com/doc/refman/5.0/e ...
- Oracle 数据库的性能优化
oracle数据库的性能优化 对于ORACLE数据库的数据存取,主要有四个不同的调整级别,第一级调整是操作系统级包括硬件平台,第二级调整是ORACLE RDBMS级的调整,第三级是数据库设计级的调整, ...
最新文章
- 使用机智云APP控制战舰V3 (转)
- .classpath文件
- 科普:3D打印技术是怎么回事
- muduo之CountDownLatch.cc
- 科大星云诗社动态20210210
- 20080331 - What is a PID, How is it useful when troubleshooting a system
- 实例集群状态为Fail导致的集群混乱排查和复现
- pip 下载torch gup版本
- C/C++程序员桌面壁纸---简尚黑
- Python网络爬虫与信息提取(10)—— 代码搜索全网音乐爬取并下载
- c语言prime函数怎么用_用一个自动关机小程序小试牛刀,玩转C语言System函数,边学边玩...
- 第三方银联支付接口对接_第三方支付接口集成安装,网站支付接口对接,网站收款接口...
- 转:移动建站工具(一):分秒钟将Web网站移动化
- Gradle剔除依赖
- 修复计算机有什么用,电脑硬盘坏道修复了对以后电脑使用有什么影响吗?
- 微信小程序 java四六级英语学习助手系统app
- 6D模型:超越PDCA
- java swing边框_Java Swing边框
- Python 非递归方法的全排列
- 无论是开放外链,或是回归实体,不同的互联网平台之间的高墙正在被推倒
热门文章
- oracle vm virtualbox安装后会一直重启,并且installation destination显示磁盘不够,让重建分区
- “UnsatisfiedDependencyException“的解决方案
- 翼支付门户架构之搭建SpringMvc环境
- html全屏轮播图插件,js全屏banner图片轮播插件
- QQ开放平台地址 http://open.qq.com/
- Mac重装Homebrew
- emule服务器有响应,eMule刚连上服务器就断请教为什么
- 3dmax2014许可证错误20
- 物联网与传统的互联网相比,主要具备哪些基本特征?
- 立项 ——VC下,打印机管理和维护