MySQL · 最佳实践 · 什么时候该升级内存规格

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 前言在平时的工作中,会碰到用户想升级规格的case,有一些其实是没有必要的,这些通过优化设计或者改写SQL语句,或者加加索引可以达到不升级的效果,而有一些确实是需要升级规格的,比如今天讲的case。追根溯源查看表结构和索引通过CloudDBA 的SQL统计功能,发现SQL比较简单,也有索引,所以排除是这两方面设计的问题。查看实例性能数据innodb_buffer_pool命

前言

在平时的工作中,会碰到用户想升级规格的case,有一些其实是没有必要的,这些通过优化设计或者改写SQL语句,或者加加索引可以达到不升级的效果,而有一些确实是需要升级规格的,比如今天讲的case。

追根溯源

查看表结构和索引

通过CloudDBA 的SQL统计功能,发现SQL比较简单,也有索引,所以排除是这两方面设计的问题。

查看实例性能数据

image.png

innodb_buffer_pool命中率还不到99%,命中率不高的,而iowait>=2略微高,所以推测是命中率不高,导致数据在内存里换进换出导致。

image.png

系统层面io对列里面已经有少量的堆积;

查看内存内容

通过查看内存里面的数据和索引的大小,可以看到:

+--------+--------+---------+---------+---------+------------+---------+
| engine | TABLES | rows    | DATA    | idx     | total_size | idxfrac |
+--------+--------+---------+---------+---------+------------+---------+
| InnoDB |  11274 | 899.60M | 247.21G | 187.56G | 434.77G    |    0.76 |
+--------+--------+---------+---------+---------+------------+---------+

数据和索引已经将近440G,而BP却还是1G,更加可以印证上面的推测(数据在内存里面被频繁的换进换出)。
再来验证下:

image.png

过十多分钟再看,BP里面的内容已经不一样了:

image.png

查看实例是如何用的

通过上一步我们可以发现,整个实例的空间是400G+,qps,tps都很低,逻辑读不算高,为什么BP命中率会这么低呢?
通过

mysql>show global variables like "%buffer_pool%";

看到innodb_buffer_pool才1G,所有问题都已经明朗,那么如何解这个问题呢?

解决问题

我们再进一步看这个实例下面其实是有几十个库的,解决这个问题有两种方法:
1. 直接升级整个实例规格
2. 拆库

这么大的磁盘空间,又这么低的tps,所以我推荐第2种方法,拆分后其实也相当于变相地达到了升级实例规格的目的。把大实例拆成小实例后,再来看下对比:

image.png

结言

这个case是真正申请的内存规格小了些,所以这个是需要升级内存规格的。
一些小技巧,起到大作用,欢迎使用我们的经验沉淀下来的产品,您随叫随到的数据库专家CloudDBA

相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
SQL 自然语言处理 关系型数据库
MySQL · 源码分析 · 词法分析及其性能优化
Table of Contents 1. 简介 2. 背景知识 3. 查找树的实现 3.1. 树的查找 3.2. 树的产生 4. 试试折半查找 5. 总结 简介 MySQL 支持标准的 SQL 语言,具体实现的时候必然要涉及到词法分析和语法分析。早期的程序可能会优先考虑手工实现词法分析和语法分析,现在大多数场合下都会采用工具来简化实现。MySQL、PostgreSQL 等
9232 0
|
SQL 关系型数据库 数据库
MySQL · 社区动态 · Online DDL 工具 gh-ost 支持阿里云 RDS
背景 Online DDL 一直都是 DBA 运维时比较头疼的事,一般都会选择在业务低峰期谨慎的操作,比较常用的几个工具比如 percona pt-online-schema-change , Facebook OSC, 本质上它们都是基于触发器的,简单来讲就是通过数据库的触发器把作用在源表的操作在一个事务内同步到修改后的表中,这在业务高峰期时会极大的加重主库的负载。
5612 0
|
存储 关系型数据库 OLAP
PgSQL · 应用案例 · PostgreSQL OLAP加速技术之向量计算
背景 在主流的OLTP数据库产品中,毫无疑问,PostgreSQL已经具备非常强大的竞争力(性能、功能、稳定性、成熟度、案例、跨行业应用等)。 通过这些文章我们可以了解更细致的情况。 《数据库十八摸 - 致 架构师、开发者》 《数据库界的华山论剑 tpc.org》 《PostgreSQL 前世今生》 在OLAP领域,PostgreSQL社区也是豪情万丈的,比如内核已经实现了基于CPU的多
8357 0
|
SQL 关系型数据库 MySQL
(十八)MySQL排查篇:该如何定位并解决线上突发的Bug与疑难杂症?
前面《MySQL优化篇》、《SQL优化篇》两章中,聊到了关于数据库性能优化的话题,而本文则再来聊一聊关于MySQL线上排查方面的话题。线上排查、性能优化等内容是面试过程中的“常客”,而对于线上遇到的“疑难杂症”,需要通过理性的思维去分析问题、排查问题、定位问题,最后再着手解决问题,同时,如果解决掉所遇到的问题或瓶颈后,也可以在能力范围之内尝试最优解以及适当考虑拓展性。
1458 3
|
MySQL 关系型数据库 内存技术
MySQL · 新特性分析 · CTE执行过程与实现原理
众所周知,Common table expression(CTE)是在大多数的关系型数据库里都存在的特性,包括ORACLE, SQLSERVER,POSTGRESQL等,唯独开源数据库老大MySQL缺失。CTE作为一个方便用户使用的功能,原本是可以利用普通的SQL语句替代的,但是对于复杂的CTE来说,要模拟出CTE的效果还是需要很大的功夫。如果考虑性能那就更是难上加难了。2013年Guilhem
4592 1
|
关系型数据库 MySQL 测试技术
MySQL · 最佳实践 · 一个TPC-C测试工具sqlbench使用
TPC-C是数据库系统经常使用的一个性能测试标准,目前开源社区里有几个可以使用的TPC-C测试工具,如BenchmarkSQL、DBT2、 tpcc-mysql等。今天这里要介绍的是另一个TPC-C测试工具: sqlbench。
4183 0
|
SQL MySQL 关系型数据库
MySQL · 引擎分析 · InnoDB行锁分析
前言 理解InnoDB行锁,分析一条SQL语句会加什么样的行锁,会锁住哪些数据范围对业务SQL设计和分析线上死锁问题都会有很大帮助。对于InnoDB的行锁,已经有多篇月报进行了介绍,这里笔者借鉴前面月报的内容,综合自己的理解,对源码的基础实现做一个介绍(会包含部分表锁介绍),然后结合具体SQL语句分析加锁类型和加锁范围。
2420 0
|
SQL 关系型数据库 MySQL
MySQL · 性能优化 · MySQL常见SQL错误用法
前言 MySQL在2016年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来。但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况。阿里云RDS专家服务团队帮助云上客户解决过很多紧急问题。现将《ApsaraDB专家诊断报告》中出现的部分常见SQL问题总结如下,供大家参考。 常见S
17088 1
|
JSON 关系型数据库 MySQL
MySQL · 最佳实践 · 如何索引JSON字段
概述 MySQL从5.7.8起开始支持JSON字段,这极大的丰富了MySQL的数据类型。也方便了广大开发人员。但MySQL并没有提供对JSON对象中的字段进行索引的功能,至少没有直接对其字段进行索引的方法。
13691 0

相关产品

  • 云数据库 RDS MySQL 版