摘要:缺點每個分庫需要返回更多的數據,占用網絡帶寬需要服務層的計算這個算法隨著頁碼的增大即的增大,性能平方級下降。缺點禁止跳頁查詢。假設所有分庫總共多出條數據,則全局。
select * from T order by time offset X limit Y 的跨M個庫分頁。全局
每個庫都必須返回 X+Y 個數據,所得到的 M*(X+Y) 在服務層進行內存排序,然后再取總的偏移量X后的Y條記錄。
優點: 精準返回所需數據。
缺點: (1)每個分庫需要返回更多的數據,占用網絡帶寬;(2)需要服務層的計算;(3)這個算法隨著頁碼的增大(即X的增大),性能平方級下降。
禁止跳頁查詢(業務折衷)獲取第一頁的方式和全局策略是一樣的,但獲取第N頁(N>1)時,我們取 N-1 頁的最大time,即time_max, 對于每個分庫執行 select * from T order by time where time > time_max limit Y,這樣在服務層再總排序取前Y條記錄。
優點: 相比全局策略的性能平方級下降,該策略的性能是恒定的。
缺點: 禁止跳頁查詢。
[推薦] 二次查詢數學原理:對于一個有序序列分成 M 個長度不等的有序子序列,M個有序子序列中每個有序子序列前X個元素中的最大值集中起來,再取其中最小值,則該最小值一定小于等于原來有序序列的第 M*X 個元素值。
假設該最小值大于原序列的第 MX 個元素值,那么M個有序子序列后面第X+個元素值都大于原序列的第 MX 個元素值,即構成原序列前MX 個元素只能是M個有序子序列的前X-個元素,因為MX- < M*X,所以假設不成立。
步驟:
改寫分庫sql為: select * from T order by time offset ceil(X/M) limit Y
獲取所有分庫sql中返回的最小time中的最小time,即time_min(詳見上面原理)
改寫分庫sql為:select * from T order by time between time_min and 各自分庫的最大time(從第1步中得到)
第3步的各個分庫的返回結果比第一步多,當然time_min的那個分庫的返回結果肯定不變(所以time_min的那個分庫的sql在實現時可以不用執行)。假設所有分庫總共多出 K 條數據,則全局_offset = ceil(X/M) * M - K 。(詳見上面原理)
將第3步返回的結果集合并,即第一條數據就是time_min的那條,其_offset由第四步已經得到;我們直接在該結果集的中從第(原始sql的offset - _offset + 2)條數據開始獲取Y條數據。
優點: 該策略的性能是幾乎恒定。
缺點: 兩次查詢;內存中要將結果集合并。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/70935.html
摘要:即服務不能無響應,或出錯分區的容忍性,這里的分區不是指數據分布式存儲中的分區。假設一個分布式系統中,有兩個節點,處于分區狀態。在大多數的分布式系統設計中,人們多會選擇滿足兩點特性。為了解決最終的一致性,這就涉及到分布式事務。 showImg(https://segmentfault.com/img/bV7kd4?w=500&h=253); 一、分布式的兩大場景 數據存儲的分布式 服務的...
摘要:即服務不能無響應,或出錯分區的容忍性,這里的分區不是指數據分布式存儲中的分區。假設一個分布式系統中,有兩個節點,處于分區狀態。在大多數的分布式系統設計中,人們多會選擇滿足兩點特性。為了解決最終的一致性,這就涉及到分布式事務。 showImg(https://segmentfault.com/img/bV7kd4?w=500&h=253); 一、分布式的兩大場景 數據存儲的分布式 服務的...
摘要:而在分布式系統中,分表分庫也是常用的一種解決此類瓶頸的手段。支持數據的多片自動路由與聚合,支持等常用的聚合函數支持跨庫分頁。支持通過全局表,關系的分片策略,實現了高效的多表查詢。支持多租戶方案。 前言 對于業務量越來越大的時候,單表數據超過幾千萬,甚至上億時,一張表里面查詢真的會很費時。而在分布式系統中,分表分庫也是常用的一種解決此類瓶頸的手段。今天就選用springboot+myca...
摘要:但你是否知道分庫分表需要哪些要素拆分過程是復雜的,提前計劃,不要等真正開工,各種意外的工作接踵而至,以至失控。在實施分庫分表策略時,這些個性會造成策略過大不好維護。 更多文章關注微信公眾號《小姐姐味道》 https://mp.weixin.qq.com/s?__... 數據庫中間件之分庫分表 恭喜你,貴公司終于成長到一定規模,需要考慮高可用,甚至分庫分表了。但你是否知道分庫分表需要哪...
閱讀 1225·2023-04-25 20:56
閱讀 2271·2023-04-25 14:42
閱讀 1030·2023-04-25 14:06
閱讀 2871·2021-10-14 09:42
閱讀 2146·2021-09-22 16:03
閱讀 991·2021-09-13 10:30
閱讀 1350·2019-08-29 15:41
閱讀 1805·2019-08-29 12:55