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性能优化之缓冲池配置相关推荐

  1. MySQL数据库访问性能优化

    MYSQL应该是最流行的WEB后端数据库.大量应用于PHP,Ruby,Python,Java 等Web语言开发项目中,无论NOSQL发展多么快,都不影响大部分架构师选择MYSQL作为数据存储. MYS ...

  2. MySQL数据库的性能优化总结

    一.MySQL数据库的优化目标.基本原则: 1.优化目标: MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,无论是索引优化.还是表结构优化,参数优化,最后都可以归纳到这这两个分类中: (1)减 ...

  3. mysql获取查询策略语句_MySQL数据库查询性能优化策略

    优化查询 使用Explain语句分析查询语句 Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句. 通过对查询语句的分析,可以了解查询语句的执行 ...

  4. MySQL数据库的性能的影响分析及优化

    MySQL数据库的性能的影响 一. 服务器的硬件的限制 二. 服务器所使用的操作系统 三. 服务器的所配置的参数设置不同 四. 数据库存储引擎的选择 五. 数据库的参数配置的不同 六. (重点)数据库 ...

  5. MySQL性能优化之参数配置 - 愤怒的码农 - 博客园

    MySQL性能优化之参数配置 1.目的: 通过根据服务器目前状况,修改Mysql的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能. 2.服务器参数: 32G内存.4个CPU,每个C ...

  6. MySQL数据库—InnoDB行存储格式

    目录 一.InnoDB支持的行存储格式 二.Compact记录格式 1.变长字段长度列表 (1)对varchar类型字段长度的存储 (2)对char类型字段长度的存储 2.NULL标志位 3.记录头信 ...

  7. MySQL数据库与SQL优化

    一.MySQL 数据库与 SQL 优化 1.结构图 二.MySQL 数据库引擎简介 1.ISAM(IndexedSequentialAccessMethod)     ISAM 是一个定义明确且历经时 ...

  8. 高并发大流量专题---10、MySQL数据库层的优化

    高并发大流量专题---10.MySQL数据库层的优化 一.总结 一句话总结: mysql先考虑做分布式缓存,过了缓存后就做mysql数据库层面的优化 1.mysql数据库层的优化的前面一层是什么? 数 ...

  9. MySQL数据库SQL层级优化

    MySQL数据库SQL层级优化 本篇主涉及MySQL SQL Statements层面的优化. 首先,推荐一个链接为万物之始:http://dev.mysql.com/doc/refman/5.0/e ...

  10. Oracle 数据库的性能优化

    oracle数据库的性能优化 对于ORACLE数据库的数据存取,主要有四个不同的调整级别,第一级调整是操作系统级包括硬件平台,第二级调整是ORACLE RDBMS级的调整,第三级是数据库设计级的调整, ...

最新文章

  1. 使用机智云APP控制战舰V3 (转)
  2. .classpath文件
  3. 科普:3D打印技术是怎么回事
  4. muduo之CountDownLatch.cc
  5. 科大星云诗社动态20210210
  6. 20080331 - What is a PID, How is it useful when troubleshooting a system
  7. 实例集群状态为Fail导致的集群混乱排查和复现
  8. pip 下载torch gup版本
  9. C/C++程序员桌面壁纸---简尚黑
  10. Python网络爬虫与信息提取(10)—— 代码搜索全网音乐爬取并下载
  11. c语言prime函数怎么用_用一个自动关机小程序小试牛刀,玩转C语言System函数,边学边玩...
  12. 第三方银联支付接口对接_第三方支付接口集成安装,网站支付接口对接,网站收款接口...
  13. 转:移动建站工具(一):分秒钟将Web网站移动化
  14. Gradle剔除依赖
  15. 修复计算机有什么用,电脑硬盘坏道修复了对以后电脑使用有什么影响吗?
  16. 微信小程序 java四六级英语学习助手系统app
  17. 6D模型:超越PDCA
  18. java swing边框_Java Swing边框
  19. Python 非递归方法的全排列
  20. 无论是开放外链,或是回归实体,不同的互联网平台之间的高墙正在被推倒

热门文章

  1. oracle vm virtualbox安装后会一直重启,并且installation destination显示磁盘不够,让重建分区
  2. “UnsatisfiedDependencyException“的解决方案
  3. 翼支付门户架构之搭建SpringMvc环境
  4. html全屏轮播图插件,js全屏banner图片轮播插件
  5. QQ开放平台地址 http://open.qq.com/
  6. Mac重装Homebrew
  7. emule服务器有响应,eMule刚连上服务器就断请教为什么
  8. 3dmax2014许可证错误20
  9. 物联网与传统的互联网相比,主要具备哪些基本特征?
  10. 立项 ——VC下,打印机管理和维护