報表連 hive,資料量比較大,怎麼分頁查詢?
Hive 提供了類似 Oracle 的 rownum 機制,類似這樣(效率比較差):
select * from (select row_number() over (order by create_time desc) as rownum,u.* from user u) mm where mm.rownum between 10 and 15;
還有一種辦法,如果表裡有唯一標識欄位也可以藉助這個欄位和 limit 實現。比如:
獲取第一頁資料:
注:同時需要記錄這 10 條中最大的 id 為 preId,作為下一頁的條件。
select * from table order by id asc limit 10;
獲取第二頁資料:
注:同時儲存資料中最大的 id 替換 preId。
select * from table where id >preId order by id asc limit 10;
對於資料庫分頁, 這裡曾經分析過存在的問題
也給出了改善的思路,可以參考:
把取數和呈現做現兩個非同步執行緒,取數執行緒發出 SQL 後就不斷取出資料後快取到本地儲存中,呈現執行緒根據頁數計算出行數到本地快取中去獲取資料顯示。這樣,只要已經取過的資料就能快速呈現,不會有等待感,還沒取到的資料需要等待一下也是正常可理解的;而取數執行緒只涉及一句 SQL,在資料庫中是同一個事務,也不會有不一致的問題。這樣,兩個問題都能得到解決。不過這需要設計一種可以按行號隨機訪問記錄的儲存格式,不然要靠遍歷把記錄數出來,那反應仍然會很遲鈍。
畫個圖感受感受:
②和③分別是兩個執行緒,一個負責取數快取,一個負責讀快取做報表呈現
看起來有點複雜,可直接用做好的工具:
還能匯出 Excel,也能列印。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2700099/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 報表連 MongoDB,資料量大報表慢,怎麼做分頁?MongoDB
- 資料量很大,分頁查詢很慢,該怎麼優化?優化
- 請教大資料量查詢怎麼分頁查詢?資料量大概有7,8億條。謝謝大資料
- mysql大資料量分頁查詢方法及其優化MySql大資料優化
- 百億級資料分表後怎麼分頁查詢?
- 讀 CSV/TXT 的報表怎麼做分頁查詢?
- 大資料量的報表如何快速分頁呈現?大資料
- 怎麼檢查報表工具對大資料量報表的支援性?大資料
- 百億級資料 分庫分表 後怎麼分頁查詢?
- 大資料量報表展現慢容易卡死,怎麼辦?大資料
- MySQL 百萬級資料量分頁查詢方法及其最佳化MySql
- 報表怎麼做模糊查詢
- 資料庫三表連線查詢怎麼做資料庫
- 資料庫全表查詢之-分頁查詢優化資料庫優化
- 大資料量資料查詢最佳化大資料
- 大資料量查詢容易OOM?試試MySQL流式查詢大資料OOMMySql
- MySQL單表存多大的資料量比較合適MySql
- 分庫分表後的分頁查詢
- 大資料量下MySQL插入方法的效能比較大資料MySql
- 查詢資料量的大小
- sql 資料庫 龐大資料量 需要分表SQL資料庫大資料
- access資料庫大資料量分頁的問題資料庫大資料
- 百萬行資料查詢效能比較
- elasticsearch查詢之大資料集分頁查詢Elasticsearch大資料
- mysql 表資料量大量查詢慢如何優化MySql優化
- 流式查詢1. mybatis的遊標Cursor,分頁大資料查詢MyBatis大資料
- mysql timestamp比較查詢MySql
- 億萬級分庫分表後如何進行跨表分頁查詢
- [Hive]Hive中表連線的優化,加快查詢速度Hive優化
- Elasticsearch 分頁查詢Elasticsearch
- ssh 分頁查詢
- oracle分頁查詢Oracle
- Hive之Hive快捷查詢(避免Mapruduce查詢)Hive
- offset新探索:雙管齊下,加速大資料量查詢大資料
- 同一張表的兩個欄位比較查詢
- 【資料庫】sql連表查詢資料庫SQL
- 查詢Oracle資料庫使用者表中的多少資料量Oracle資料庫
- 匯出資料量大的報表記憶體溢位怎麼辦?記憶體溢位