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

简介: 前言在平时的工作中,会碰到用户想升级规格的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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
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 等
9090 0
|
SQL 关系型数据库 数据库
MySQL · 社区动态 · Online DDL 工具 gh-ost 支持阿里云 RDS
背景 Online DDL 一直都是 DBA 运维时比较头疼的事,一般都会选择在业务低峰期谨慎的操作,比较常用的几个工具比如 percona pt-online-schema-change , Facebook OSC, 本质上它们都是基于触发器的,简单来讲就是通过数据库的触发器把作用在源表的操作在一个事务内同步到修改后的表中,这在业务高峰期时会极大的加重主库的负载。
5308 0
|
存储 关系型数据库 数据库
MySQL · 引擎特性 · Infobright 列存数据库
简介 系统架构 存储引擎 优化器和执行器 数据装载和卸载 领域知识 查询优化 简单场景的示例 小结 存储结构 Data Pack Knowledge Node 数据压缩 总结 简介 Infobright 是一个面向 OLAP 场景的开源列
4299 0
|
SQL 关系型数据库 MySQL
MySQL · 性能优化 · MySQL常见SQL错误用法
前言 MySQL在2016年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来。但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况。阿里云RDS专家服务团队帮助云上客户解决过很多紧急问题。现将《ApsaraDB专家诊断报告》中出现的部分常见SQL问题总结如下,供大家参考。 常见S
16980 1
|
JSON 关系型数据库 MySQL
MySQL · 最佳实践 · 如何索引JSON字段
概述 MySQL从5.7.8起开始支持JSON字段,这极大的丰富了MySQL的数据类型。也方便了广大开发人员。但MySQL并没有提供对JSON对象中的字段进行索引的功能,至少没有直接对其字段进行索引的方法。
13580 0
|
关系型数据库 MySQL
MYSQL · 新特性 · MySQL 8.0对Parser所做的改进
背景介绍 众所周知,MySQL Parser是利用C/C++实现的开源yacc/lex组合,也就是 GNU bison/flex。Flex负责生成tokens, Bison负责语法解析。开始介绍MySQL 8.0的新特新之前,我们先简单了解一下通用的两种Parser。一种是Bottom-up parser,另外一种是Top-down parser。 Bottom-up parser Bottom
2675 0
|
关系型数据库 MySQL 索引
MySQL · 捉虫动态 · order by limit 造成优化器选择索引错误
问题描述 bug 触发条件如下: 优化器先选择了 where 条件中字段的索引,该索引过滤性较好; SQL 中必须有 order by limit 从而引导优化器尝试使用 order by 字段上的索引进行优化,最终因代价问题没有成功。 复现case 表结构 create table t
8344 0
|
Web App开发 Java 测试技术
分布式、微服务架构Spring Boot入门及实例介绍
spring boot入门 -- 介绍和第一个例子 “越来越多的企业选择使用spring boot 开发系统,spring boot牛在什么地方?难不难学?心动不如行动,让我们一起开始学习吧!” 使用Spring boot ,可以轻松的创建独立运行的程序,非常容易构建独立的服务组件,是实现分布式架构、微服务架构利器。
2007 0
|
SQL 关系型数据库 MySQL
|
SQL Web App开发 关系型数据库

相关产品

  • 云数据库 RDS MySQL 版