1. 程式人生 > >提高spark sql翻頁查詢效能的想法

提高spark sql翻頁查詢效能的想法

一般每一頁的資料量比較小,1000條以內。大概的想法就是把要查詢的資料先一次性查出來快取在記憶體中,之後翻頁查詢的時候直接取結果就行了,這樣只是第一次查的比較慢,後面從記憶體中直接取資料就非常快了。但是這又帶來一個問題,如果結果集太大,比如有100w行資料,而且有很多列,這樣就會佔用大量記憶體,使執行記憶體變小,反而會降低查詢效能,因此需要分段快取結果集。具體的做法就是:每次快取的資料量為:每頁行數*100,如果查詢的資料不在快取範圍內,再次執行查詢,並快取如下範圍的資料:

offset~offset+limit*100

這樣每次新的查詢保證快取之後100頁的資料。

這樣做的缺點是需要在業務程式碼中加入對offset, 當前快取資料等一些狀態的管理邏輯。僅供參考!