mysql分庫 分頁查詢


Mysql海量數據分表分庫如何列表分頁?

1.現在使用ElasticSearch了。基於Lucene的解決方案

2.必須將mysql里的數據寫入到類似hbase這樣的分布式數據庫,查詢快。但分頁、查詢的話,可以在hbase前加一層solr,用於建立數據索引

 

 

如何對分庫后的數據進行分頁查詢?

yeyingsheng 發布於 2015/04/21 10:18
 
閱讀 7K+
 
收藏  1
 
 si項目,現在連接6台mysql數據庫,路由分庫算法是根據id的hash值%6,根據值不同分別存入6台數據庫。現在不知道如何做分頁查詢列表,請問有誰知道嗎 
 
 
收藏 (1)
 
0
 
 
三階魔方
三階魔方 

1、直接使用跨庫的多表聯合查詢。不建議。

2、向6台數據庫server均發送一個查詢請求,然后對所有查詢結果進行匯總,再處理分頁邏輯。

3、建立一個總數據庫,只負責維護主鍵和必要的索引,以供分頁查詢。

4、使用redis維護一個主鍵序列,分頁操作就是截取該序列的一部分,其結果就是主鍵id集合。拿到id后便可以映射到多台mysql服務器上查詢數據了。但畢竟數據被分布式存儲了,取到完整結果集必須要多次、多台的數據庫訪問,這個肯定是避免不了。

注:“多台”數據庫訪問的問題無解,但同台“多次”數據庫訪問的問題可以通過程序優化。

 
yeyingsheng
yeyingsheng 
感覺使用redis維護一個主鍵序列比較靠譜一點,但是沒有用過
 
0
 
 
hylent
hylent 
另建一個主庫,有所有分庫的數據
yeyingsheng
yeyingsheng 
回復  @hylent : 你說的也挺有道理,不知道大家采取最多的方式是什么?
hylent
hylent 
回復  @1157624952 : 嗯,單點,可以主備。最佳答案中的,在redis里維護索引的方法,也不錯,不過,就要和業務掛鈎了,多種排序方式需要維護多個序列。不過我還是覺得,數據放在內存中不太穩妥。。
yeyingsheng
yeyingsheng 
這樣的話就會出現主機單點問題了
 
0
 
 
Jack_Q
Jack_Q 
有沒有使用cobar或mycat
yeyingsheng
yeyingsheng 
沒有使用
 
0
 
 
Brin想寫程序
Brin想寫程序 

復雜查詢情況下,只去前20頁的內容。。也就是默認取200條,然后200*10做好排序,然后去前200條,分20頁給用戶顯示出來。

對於基於日期,序號的有序數組的分頁,可以記錄當前分頁最后一個的被分頁的值,作為stub,然后往后組裝。

Brin想寫程序
Brin想寫程序 
回復  @1157624952 : 直接查各個數據庫啊。。跟路由算法沒關系。。
yeyingsheng
yeyingsheng 
@Brin想寫程序 額,我是根據路由算法插入相應的數據庫的,沒法每個查啊
Brin想寫程序
Brin想寫程序 
回復  @1157624952 : limit 200,每個表都執行一遍。。
yeyingsheng
yeyingsheng 
但是我如何去取前二十頁呢
 
0
 
 
hylent
hylent 

單純就索引來說的話,可以試試一些專門做全文索引的服務軟件。

不過這個只是我的想法,功能上應該可以,沒實際中這樣跑過,不知道穩定性怎么樣

yeyingsheng
yeyingsheng 
這個沒有試過
 
0
 
 
郭幻程
郭幻程 

向每個庫發送同樣的數據,匯總,排序,分頁

為毛不用mycat

 
 
0
 
 
匿名t3a
匿名t3a 

你需要一個中間件

試試 Amoeba for MySQL 看看行不行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM