使用nhmicro使分庫分表支援排序後的分頁查詢

2021-08-08 22:10:00 字數 1108 閱讀 9088

常見的在建立資料時根據規則分庫分表儲存,查詢時往往只支援按照id進行查詢。

nhmicro(開源位址為 )支援將分庫分表中的資料進行分頁查詢,同時支援排序,支援連續性的向前向後翻頁。

原理是根據不同的庫分別進行(可帶有排序)分頁查詢,nhmicro將各個庫返回結果合併後,記憶體中進行二次排序,再次分頁後返回給客戶端。

這樣做可以將查詢壓力分散到多個讀庫中,且每個讀庫可以起不同執行緒併發查詢,提高了查詢速度,降低了熱點。

分庫分表合併查詢介面:

/nhesbserviceservlet?cmdname=groovy&subname=micromergequerytemplate&groovysubname=getinfolist4page

引數標識

引數名稱

樣例值說明

originsql

原始查詢sql

select * from order by col1 desc

執行時被替換為分表名稱

memorderstr

記憶體排序str

col1 desc

應該與原始sql中的一致

dbnamelist

分庫標識

default

配置的microdao例項標識,多個庫用逗號分隔。

viewnamelist

分表標識

test_merge_1,test_merge_2

每個庫中可以有1個或多個分表,但要求每個庫中的分表個數一致。

test_merge_1中資料

test_merge_2中的資料

合併查詢後分頁結果:

向後翻頁

mysql分表分庫實現 MySql分表分庫思路

一.資料庫瓶頸 1.1io瓶頸 第一種 磁碟讀io瓶頸,熱點資料太多,資料庫快取放不下,每次查詢時會產生大量的io 分庫和垂直分表 第二種 網路io瓶頸,請求的資料太多,網路頻寬不夠 分庫 1.2cpu瓶頸 第一種 sql問題,如sql中包含join,group by,order by,非索引字段條...

MySQL範圍分表分庫 mysql 分表分庫策略

唯一id的生成 下面列舉幾種常見的唯一id生成方案,需要滿足兩大核心需求 1.全域性唯一 2趨勢有序 1.用資料庫的auto increment 自增id 來生成,每次通過寫入資料庫一條記錄,利用資料庫id自增的特性獲取唯一,有序的id。優點 使用資料庫原有的功能,相對簡單 能夠保證唯一 能夠保證遞...

mysql 分庫分表實戰 MySQL分庫分表實戰

為什麼要分庫分表 在大型 中,當使用者量以及使用者產生的業務資料量達到單庫單錶效能極限時,為了支撐業務可持續發展,對於重要的核心業務必然要進行分庫分表來儲存業務資料。對於非核心業務產生的大量資料,例如爬蟲爬取的資訊,論壇產生的資料等,可以考慮把資料儲存在像mongodb這樣的nosql儲存裡面,這些...