因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 下的查询优化相关推荐

  1. 新课上线 | 每次 5 分钟,轻松玩转阿里云容器服务!

    在云原生带来的云计算未来趋势下,容器已经成为用户使用云的新界面.据 Gartner 预测,到 2023 年,70% 的组织将在生产环境中运行三个或更多容器化应用程序.容器技术和服务为企业业务发展带来敏 ...

  2. mysql servicebroker_阿里云Kubernetes服务 - Service Broker快速入门指南

    4月底阿里云容器服务上线了基于Kubernetes集群的服务目录功能.阿里云的容器的服务目录遵循Open Service Broker API标准,提供了一系列的服务代理组件,实现了对主流开源服务如M ...

  3. 阿里云mysql宽带_阿里云数据库RDS MySQL版购买使用详细过程

    阿里云数据库 RDS MySQL 版如何购买使用?通过前面学习如何选择阿里云数据库 RDS MySQL 版,魏艾斯博客已经阿里云 MySQL 有了初步认识,接下来跟着老魏一起购买使用阿里云数据库 RD ...

  4. 线上阿里云mysql慢_MySQL · 案例分析 · RDS MySQL线上实例insert慢常见原因分析-阿里云开发者社区...

    概述 insert慢是经常被问到的问题,笔者尝试在本文中对这个问题做一个分类梳理,列举的线上例子会做简化,希望对读者有所启发. 注意:因为阿里云MySQL线上实例还是以RDS 5.6为主体,本文的分析 ...

  5. 阿里云mysql容量_阿里云RDS的mysql数据库占用空间超过90%的处理

    阿里云RDS数据库最大支持2T,目前已经占用了90%,如果进行分库或者迁移比较麻烦,思路是找出占用空间过大的日志或不重要的文件进行删除操作 查询所有数据库占用磁盘空间大小的SQL语句: show bi ...

  6. 阿里云mysql 分库分表_阿里云rds mysql分库分表

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  7. 风投盯上阿里云开发者大会寻下一个阿里

    本文讲的是风投盯上阿里云开发者大会寻下一个阿里,阿里云开发者大会不仅受到程序员们的追捧,在高帅富云集的风投界也掀起了巨大波澜.大会组委会14日确认,将有十余家知名投资企业代表现身阿里云开发者大会,开展 ...

  8. 阿里云ECS主机 Ubuntu下设置Mysql 5.7.17为远程访问

    2019独角兽企业重金招聘Python工程师标准>>> 阿里云ECS主机 Ubuntu下设置Mysql 5.7.17为远程访问 进入mysql mysql -uroot -p 选择数 ...

  9. 阿里云Kubernetes服务 - Service Broker快速入门指南

    4月底阿里云容器服务上线了基于Kubernetes集群的服务目录功能.阿里云的容器的服务目录遵循Open Service Broker API标准,提供了一系列的服务代理组件,实现了对主流开源服务如M ...

最新文章

  1. Linux下日志文件过大解决方案
  2. HDFS伪分布式环境搭建
  3. 酒店管理系统房态图的效果制作
  4. 重构-改善既有代码的设计:对象之间移动特性的八种方法(五)
  5. android+布局倾斜,android – 如何在Eclipse图形布局视图中使斜...
  6. oracle的连接字符串
  7. 怎么查jupyter lab 内核_抗氧化精华推荐 CHA:LAB诗蕾泊帮你告别“零点肌”|抗氧化|精华-综合资讯...
  8. IE6 透明遮挡falsh解决方案
  9. 《精通Spring MVC 4》——1.3 start.Spring.io简介
  10. 关于laravel报错Class 'Barryvdh\Debugbar\ServiceProvider' not found
  11. Atitit。  工作流引擎的发展趋势
  12. python实验报告六_Python 基础语法
  13. Python 实现Tracert追踪TTL值
  14. ipv6有必要打开吗_路由器中的IPv6功能需不需要开启?
  15. 使用JRE8构建Java8基础镜像
  16. java 枚举Enum
  17. 《庄子·杂篇·天下第三十三》
  18. PYNQ搭建系统-Petalinux上网方式
  19. 如何修改别人的GHO作品
  20. python 数据分析 |2. Jupyter Notebook配置和使用

热门文章

  1. 关于缓存雪崩\穿透\击穿等一些问题
  2. SocketLog安装
  3. MySQL性能调优与架构设计——第5章 备份与恢复
  4. 关于GCC Cygwin MinGW MSYS
  5. zend studio
  6. (转).NET框架下使用双缓冲技术绘图
  7. Qt OpenGL裁剪测试
  8. 生成下拉框的几种方法总结——数据来源:数据库
  9. 20170908校内训练
  10. 【技术分享】CSS 实现渐变色背景