那個(gè)網(wǎng)站可以看高速的建設(shè)情況百度網(wǎng)站是什么
文章目錄
- 場(chǎng)景
- 常規(guī)查詢(xún)
- 流式查詢(xún)
- MyBatis 流式查詢(xún)接口
- 非流式查詢(xún)和流式查詢(xún)區(qū)別
- 游標(biāo)查詢(xún)
場(chǎng)景
大數(shù)據(jù)量操作的場(chǎng)景大致如下:
1、 數(shù)據(jù)遷移;
2、 數(shù)據(jù)導(dǎo)出;
3、 批量處理數(shù)據(jù);
在實(shí)際工作中當(dāng)指定查詢(xún)數(shù)據(jù)過(guò)大時(shí),我們一般使用分頁(yè)查詢(xún)的方式一頁(yè)一頁(yè)的將數(shù)據(jù)放到內(nèi)存處理。但有些情況不需要分頁(yè)的方式查詢(xún)數(shù)據(jù)或分很大一頁(yè)查詢(xún)數(shù)據(jù)時(shí),如果一下子將數(shù)據(jù)全部加載出來(lái)到內(nèi)存中,很可能會(huì)發(fā)生OOM(內(nèi)存溢出);而且查詢(xún)會(huì)很慢,因?yàn)榭蚣芎馁M(fèi)大量的時(shí)間和內(nèi)存去把數(shù)據(jù)庫(kù)查詢(xún)的結(jié)果封裝成我們想要的對(duì)象(實(shí)體類(lèi))。
舉例:在業(yè)務(wù)系統(tǒng)需要從 MySQL 數(shù)據(jù)庫(kù)里讀取 100w 數(shù)據(jù)行進(jìn)行處理,應(yīng)該怎么做?
做法通常如下:
1、 常規(guī)查詢(xún):一次性讀取100w數(shù)據(jù)到JVM內(nèi)存中,或者分頁(yè)讀??;
2、 流式查詢(xún):建立長(zhǎng)連接,利用服務(wù)端游標(biāo),每次讀取一條加載到JVM內(nèi)存(多次獲取,一次一行);
3、 游標(biāo)查詢(xún):和流式一樣,通過(guò)fetchSize參數(shù),控制一次讀取多少條數(shù)據(jù)(多次獲取,一次多行&#x