`

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’ 

同时给data_key+create_date加入组合索引


使用innerdb查询统计时间大概2分59秒,如下图
图片:
在这里插入图片描述

 

使用myisam 查询统计时间大概1分41秒,如下图
在这里插入图片描述
如果是myisam统计全表数据,速度是非常快的,这个是myisam的优势,如下图
在这里插入图片描述

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

总结:

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


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





 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics