0


mysql 亿级数据表查询

mysql 亿级数据表查询

场景

平台需要运营数据报表支持运营,因为是平台初建,搭建大数据平台成本较大,故使用零时使用mysql做olap。需求大概单表每日千万,从一张mysql近3亿数据的表里面查询统计一个月的数据。制定营收、留存等每日环比数据报表。

配置

硬盘SSD 6核12g

数据量

每月单表大概生产3亿数据

测试sql

SELECT COUNT(1) FROM
t_app_events_ad_data WHERE
data_key = ‘R’ AND create_date > ‘20221105’ AND ‘2022-11-28 08:00:00’
同时给data_key+create_date加入组合索引

使用innerdb查询统计时间大概2分59秒,如下图

链接: link.

图片:
在这里插入图片描述

使用myisam 查询统计时间大概1分41秒,如下图

在这里插入图片描述


如果是myisam统计全表数据,速度是非常快的,这个是myisam的优势,如下图

在这里插入图片描述

myisam统计20天环比报表,耗时大概14分钟多一点(中间连了另一张亿级数据的表),如下图。

在这里插入图片描述

总结:

很明显,亿级数据存储,myisam查询性能比innerdb快将近一倍,这应该是得益于myisam的存储结构,b+tree叶子存储的是指针。但是一个月生产3亿的数据用mysql查询是有些吃力的,需要做架构上的优化,不可能实时查询这个表,比如说按照大数据的尿性定期出一个报表,把结果保存在数据库表。或者用storm这样的框架实时统计。

我始终觉得初期olap是必要的,这是运营的保障,但olap初期没必要上啥大数据,过了一年半载数据量大了再说(主要是成本大)。大叔据技术比如说使用hive,其实架构可能也一样,定期出一份报表,保存查询结果展示。hive估计性能会更差点,时间估计会更久点,大爷我统计一个月3亿的数据用mysql可能也才15分钟,已经完全可以接受了。也可以用第三方平台,不过这个数据保存在第三方,不安全,而且也没有定制方便。这是一个架构演进升级的过程。


本文转载自: https://blog.csdn.net/lyongq04/article/details/128191649
版权归原作者 lyongq04 所有, 如有侵权,请联系我们删除。

“mysql 亿级数据表查询”的评论:

还没有评论