歪枣网数据库设计-千万级别海量数据查询效率优化
由于歪棗網(wǎng)上的金融數(shù)據(jù)查詢接口,主要是股票、基金的歷史數(shù)據(jù),數(shù)據(jù)量其實是非常大的,有興趣的可以去逛逛網(wǎng)站。一只股票的 歷史日/周/月K線數(shù)據(jù)將近三萬條(包括前復(fù)權(quán)、不復(fù)權(quán)、后復(fù)權(quán)),將近上億條數(shù)據(jù)。SQL查詢語句設(shè)計不合理,查詢K線數(shù)據(jù)其實是非常耗時。以前沒弄過大數(shù)據(jù)的查詢,查詢一條K線數(shù)據(jù)居然耗時兩分鐘,嚇了歪哥一跳。后面當(dāng)然就是Mysql調(diào)優(yōu)了。
大體做了幾件事。
1、將查詢的Mysql語句打印出來,由于使用的是Springboot 集成的Jpa框架配置文件中將開關(guān)打開spring.jpa.show-sql=true
2、使用explain 關(guān)鍵字查看mysql執(zhí)行sql語句的時候,是否使用索引,使用了哪類索引等。explain關(guān)鍵字還挺有用,可以網(wǎng)上了解更多。使用索引,將大大減少查詢時間。
索引其實就是空間換時間,如果你重新創(chuàng)建一個索引,你會發(fā)現(xiàn)會占用你很大的磁盤空間。索引可以通俗的理解為書的目錄,可以方便快速定位。
3、合理設(shè)計mysql數(shù)據(jù)表
每個字段設(shè)計,采用合適的數(shù)據(jù)類型,比如能用一個字節(jié)的TINYINT,就不需要用4個字節(jié)的INT類型。
日期類型盡量用Date,不需要用字符類型存儲,Date類型只占用四個字節(jié)。關(guān)于Mysql字段類型,可以網(wǎng)上查詢下。
4、建立合理的索引
首先根據(jù)業(yè)務(wù)需要,長用來作為查詢條件的幾個字段,可以考慮作為一個索引。還有就是主鍵索引,在插入數(shù)據(jù)的時候,由于設(shè)計了主鍵,不必要再查詢或者刪除歷史數(shù)據(jù),直接覆蓋即可,也不會帶入臟數(shù)據(jù)。
最后查詢效率提升了N倍,有興趣的可以上歪棗網(wǎng)體驗一把效率。
網(wǎng)站:www.waizaowang.com
歪哥將下一篇博客將列出一些整理了些資料,關(guān)于Mysql查詢效率優(yōu)化的,資料來源網(wǎng)上。
總結(jié)
以上是生活随笔為你收集整理的歪枣网数据库设计-千万级别海量数据查询效率优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: logrotate管理nginx日志文件
- 下一篇: NO.152 移动互联时代如何做企业营销