一个阿里云 MYSQL 服务 RDS 下的查询优化
因MYSQL 现在业务量不大,使用也不多,为了便捷及安全考虑。就不再自己架构数据库了,直接放到的阿里的RDS 服务中。
但前几天开发的测试下来,总说RDS还不如自己测试库压测快。
查看了RDS下的数据,如下:
数据分布及其不平衡,查询一个用户的数据很多,其它却很少,
MySQL [GTUAN]> select MallID,UserId,count(*) from `order` group by MID,UserId order by count(*) desc;
+--------+---------+----------+
| MID | UserId | count(*) |
+--------+---------+----------+
| 10008 | 3705695 | 49387 |
| 10008 | 5033586 | 30 |
| 10113 | 7345849 | 14 |
| 10008 | 5301964 | 10 |
| 10008 | 7868945 | 10 |
| 10068 | 7791370 | 9 |
| 10023 | 7103027 | 5 |
| 10113 | 7796603 | 4 |
| 10010 | 4068427 | 4 |
MySQL [tuan]> show profiles;
+----------+------------+--------------------------------------------------------------------------------------------------+
| Query_ID | Duration | Query |
+----------+------------+--------------------------------------------------------------------------------------------------+
| 1 | 0.00021225 | show profiles 6 |
| 2 | 0.00020000 | show profiles for query 6 |
| 3 | 0.10450975 | select *from `order` where MallID=10008 and UserId=3705695 order by CreateTimestamp desc limit 5 |
| 4 | 0.00020725 | show profiles for query 6 |
| 5 | 0.00089350 | select *from `order` where MallID=10008 and UserId=3705695 order by ID desc limit 5 |
+----------+------------+--------------------------------------------------------------------------------------------------+
5 rows in set, 1 warning (0.01 sec)
MySQL [tuan]> show profile for query 3
-> ;
+----------------------+----------+
| Status | Duration |
+----------------------+----------+
| starting | 0.000139 |
| checking permissions | 0.000031 |
| Opening tables | 0.000051 |
| init | 0.000102 |
| System lock | 0.000028 |
| optimizing | 0.000040 |
| statistics | 0.000100 |
| preparing | 0.000037 |
| Sorting result | 0.000027 |
| executing | 0.000021 |
| Sending data | 0.000038 |
| Creating sort index | 0.103652 |
| end | 0.000069 |
| query end | 0.000027 |
| closing tables | 0.000033 |
| freeing items | 0.000094 |
| cleaning up | 0.000022 |
+----------------------+----------+
17 rows in set, 1 warning (0.00 sec)
MySQL [tuan]> show profile for query 5;
+----------------------+----------+
| Status | Duration |
+----------------------+----------+
| starting | 0.000137 |
| checking permissions | 0.000039 |
| Opening tables | 0.000043 |
| init | 0.000074 |
| System lock | 0.000027 |
| optimizing | 0.000033 |
| statistics | 0.000105 |
| preparing | 0.000039 |
| Sorting result | 0.000020 |
| executing | 0.000020 |
| Sending data | 0.000177 |
| end | 0.000023 |
| query end | 0.000026 |
| closing tables | 0.000028 |
| freeing items | 0.000083 |
| cleaning up | 0.000021 |
+----------------------+----------+
16 rows in set, 1 warning (0.00 sec)
MySQL [tuan]>
同时看到使用的排序字段也有问题,使用 CreateTimestamp 排序性能与 ID 字段相比,直接差了100倍。所有的消耗都花在ORDER BY
这是因为MYSQL 的索引是BTREE,数据是按ID 大小进行排序的,如果你用ID 来排序,那就是物理顺序,而使用了 CreateTimestamp ,那就得在
内存中重新排序。
修改后,再压测试,达到他们的要求。
一个阿里云 MYSQL 服务 RDS 下的查询优化相关推荐
- 新课上线 | 每次 5 分钟,轻松玩转阿里云容器服务!
在云原生带来的云计算未来趋势下,容器已经成为用户使用云的新界面.据 Gartner 预测,到 2023 年,70% 的组织将在生产环境中运行三个或更多容器化应用程序.容器技术和服务为企业业务发展带来敏 ...
- mysql servicebroker_阿里云Kubernetes服务 - Service Broker快速入门指南
4月底阿里云容器服务上线了基于Kubernetes集群的服务目录功能.阿里云的容器的服务目录遵循Open Service Broker API标准,提供了一系列的服务代理组件,实现了对主流开源服务如M ...
- 阿里云mysql宽带_阿里云数据库RDS MySQL版购买使用详细过程
阿里云数据库 RDS MySQL 版如何购买使用?通过前面学习如何选择阿里云数据库 RDS MySQL 版,魏艾斯博客已经阿里云 MySQL 有了初步认识,接下来跟着老魏一起购买使用阿里云数据库 RD ...
- 线上阿里云mysql慢_MySQL · 案例分析 · RDS MySQL线上实例insert慢常见原因分析-阿里云开发者社区...
概述 insert慢是经常被问到的问题,笔者尝试在本文中对这个问题做一个分类梳理,列举的线上例子会做简化,希望对读者有所启发. 注意:因为阿里云MySQL线上实例还是以RDS 5.6为主体,本文的分析 ...
- 阿里云mysql容量_阿里云RDS的mysql数据库占用空间超过90%的处理
阿里云RDS数据库最大支持2T,目前已经占用了90%,如果进行分库或者迁移比较麻烦,思路是找出占用空间过大的日志或不重要的文件进行删除操作 查询所有数据库占用磁盘空间大小的SQL语句: show bi ...
- 阿里云mysql 分库分表_阿里云rds mysql分库分表
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- 风投盯上阿里云开发者大会寻下一个阿里
本文讲的是风投盯上阿里云开发者大会寻下一个阿里,阿里云开发者大会不仅受到程序员们的追捧,在高帅富云集的风投界也掀起了巨大波澜.大会组委会14日确认,将有十余家知名投资企业代表现身阿里云开发者大会,开展 ...
- 阿里云ECS主机 Ubuntu下设置Mysql 5.7.17为远程访问
2019独角兽企业重金招聘Python工程师标准>>> 阿里云ECS主机 Ubuntu下设置Mysql 5.7.17为远程访问 进入mysql mysql -uroot -p 选择数 ...
- 阿里云Kubernetes服务 - Service Broker快速入门指南
4月底阿里云容器服务上线了基于Kubernetes集群的服务目录功能.阿里云的容器的服务目录遵循Open Service Broker API标准,提供了一系列的服务代理组件,实现了对主流开源服务如M ...
最新文章
- Linux下日志文件过大解决方案
- HDFS伪分布式环境搭建
- 酒店管理系统房态图的效果制作
- 重构-改善既有代码的设计:对象之间移动特性的八种方法(五)
- android+布局倾斜,android – 如何在Eclipse图形布局视图中使斜...
- oracle的连接字符串
- 怎么查jupyter lab 内核_抗氧化精华推荐 CHA:LAB诗蕾泊帮你告别“零点肌”|抗氧化|精华-综合资讯...
- IE6 透明遮挡falsh解决方案
- 《精通Spring MVC 4》——1.3 start.Spring.io简介
- 关于laravel报错Class 'Barryvdh\Debugbar\ServiceProvider' not found
- Atitit。 工作流引擎的发展趋势
- python实验报告六_Python 基础语法
- Python 实现Tracert追踪TTL值
- ipv6有必要打开吗_路由器中的IPv6功能需不需要开启?
- 使用JRE8构建Java8基础镜像
- java 枚举Enum
- 《庄子·杂篇·天下第三十三》
- PYNQ搭建系统-Petalinux上网方式
- 如何修改别人的GHO作品
- python 数据分析 |2. Jupyter Notebook配置和使用