由于歪枣网上的金融数据查询接口,主要是股票、基金的历史数据,数据量其实是非常大的,有兴趣的可以去逛逛网站。一只股票的 历史日/周/月K线数据将近三万条(包括前复权、不复权、后复权),将近上亿条数据。SQL查询语句设计不合理,查询K线数据其实是非常耗时。以前没弄过大数据的查询,查询一条K线数据居然耗时两分钟,吓了歪哥一跳。后面当然就是Mysql调优了。
大体做了几件事。
1、将查询的Mysql语句打印出来,由于使用的是Springboot 集成的Jpa框架配置文件中将开关打开spring.jpa.show-sql=true
2、使用explain 关键字查看mysql执行sql语句的时候,是否使用索引,使用了哪类索引等。explain关键字还挺有用,可以网上了解更多。使用索引,将大大减少查询时间。
索引其实就是空间换时间,如果你重新创建一个索引,你会发现会占用你很大的磁盘空间。索引可以通俗的理解为书的目录,可以方便快速定位。
3、合理设计mysql数据表
每个字段设计,采用合适的数据类型,比如能用一个字节的TINYINT,就不需要用4个字节的INT类型。
日期类型尽量用Date,不需要用字符类型存储,Date类型只占用四个字节。关于Mysql字段类型,可以网上查询下。
4、建立合理的索引
首先根据业务需要,长用来作为查询条件的几个字段,可以考虑作为一个索引。还有就是主键索引,在插入数据的时候,由于设计了主键,不必要再查询或者删除历史数据,直接覆盖即可,也不会带入脏数据。
最后查询效率提升了N倍,有兴趣的可以上歪枣网体验一把效率。
网站:www.waizaowang.com
歪哥将下一篇博客将列出一些整理了些资料,关于Mysql查询效率优化的,资料来源网上。
歪枣网数据库设计-千万级别海量数据查询效率优化
最新推荐文章于 2022-09-24 23:58:14 发布