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