最近由于工作需要,需要对数据库的性能进行测试,在这里同步下mysql的性能测试结果。
一、业务场景
表中存放的数据为订单信息数据,目前有3百万数据,最初建表时只对查询的字段建索引,当表数据量达到200w时,明显查询速度变慢,select一次需要2s,很明显达不到性能要求。
二、mysql数据库性能测试
数据库机器型号,ucloud标准机型,内存1.5g
单位:微秒
订单数据 订单商品数据 两表left join
1w数据: <10 <10 <10
10w数据 <200 <210 <200
50w数据 <4000 <5000 <6000
100w数据 <8000 <11000 <9000
200w数据 <18000 <23000 <18000
二、如何实施
1、考虑使用分区+分数据库的方式,目前预测单表最多容纳1000w数据;
2、分区个数的选择,测试分100个区跟500个区的效果;分区方式的选择:hash分区
结果如下:通过结果可以发现在1000w数据的情况下,分500个区的查询效果比分100个好
3、对订单数据表跟订单商品数据表分别分500个区,目前只有300w数据
对索引字段查询,以及hash字段,10微秒一下有返回结果;
分区之后,两个表left join 效果不好,于是采取单个表查询,获得结果后再查另一个表,可以做到秒回效果。