亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java + Mybatis如何實現電商系統分表查詢

發布時間:2021-11-20 15:45:18 來源:億速云 閱讀:509 作者:柒染 欄目:云計算

今天就跟大家聊聊有關Java + Mybatis如何實現電商系統分表查詢,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

在開始之前,我先啰嗦一點理論知識。說實話,我們每個系統并不是一上來就開始分表,分庫。而是在數據量達到一定程度,且各種優化手段都使用過后,仍然存在系統瓶頸的時候,才使用分表。因為分表會加大業務的復雜程度,通常都是不得已而為之的操作。

一般的,MySQL 在單表達到千萬數據量同時還在持續增長的時候,就需要想辦法優化設計和實現了。通常我們的優化手段有下面 6 個步驟:

第一優化你的 SQL 和索引,這種效果立竿見影。采用這種優化方式后,若還存在性能瓶頸,可以采用第二種架構設計。

第二加緩存,memcached、redis 等。針對熱點數據做優化,緩存是現在系統必須的且可靠的一種手段。

第三以上都做了后,還是慢,就做主從復制或主主復制,讀寫分離,可以在應用層做,效率高,也可以采用第三方工具。

Java + Mybatis如何實現電商系統分表查詢  

第四如果以上都做了還是慢,不要想著去做切分,mysql 自帶分區表,先試試這個,對你的應用是透明的,無需更改代碼。但是 sql 語句是需要針對分區表做優化的,sql 條件中要帶上分區條件的列,從而使查詢定位到少量的分區上,否則就會掃描全部分區,另外分區表還有一些坑。這一條對數據庫的知識要求比較高,如果公司沒有配備 DBA,或者技術儲備不足的情況下,要慎用。

第五如果以上都做了,那就先做垂直拆分,其實就是根據你模塊的耦合度,將一個大的系統分為多個小的系統,也就是分布式系統。這是現在各大系統熱衷采用的方案,可以優先考慮。

第六才是水平切分,針對數據量大的表,這一步最麻煩,最能考驗技術水平,要選擇一個合理的 sharding key。為了有好的查詢效率,表結構也要改動,做一定的冗余,應用也要改,sql 中盡量帶 sharding key,將數據定位到限定的表上去查,而不是掃描全部的表。

針對 mysql 數據庫一般都是按照這個步驟去演化的,成本也是由低到高。好了,現在介紹完這些知識后,我就來給大家一個簡單的分表實現。

假設我們現在有 1000 萬數據,項目要求需要分 2 個表。比如,xttblog 表會被分成 xttblog_0 和 xttblog_1。注意,我這里只是舉例,實際業務中,會根據具體的數據量,和增長趨勢進行水平分表,分表數量也將遠遠的超過幾十個。

Java + Mybatis如何實現電商系統分表查詢  

根據上面的說明,我需要對 1000 萬條數據分成兩個表,那我的做法就是,將利用 xttblog 表的自動增長 ID 來實現分表。id%2 == 0 的操作表 xttblog_0,同理 Id%2 == 1 的操作表 xttblog_1。

你理解了這個之后,再來看看我們 MyBatis 對分表查詢的相關代碼吧。

Java + Mybatis如何實現電商系統分表查詢

這個 SQL 雖然很簡單,但分表會影響到其他一些業務的復雜度。

現在,假設我們要查詢 1000001 的數據,那么我們的實際執行的 SQL 就如下面所示:

Java + Mybatis如何實現電商系統分表查詢

看完上述內容,你們對Java + Mybatis如何實現電商系統分表查詢有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

增城市| 连平县| 山阴县| 拉孜县| 交口县| 淮安市| 吕梁市| 舟曲县| 敖汉旗| 西畴县| 定南县| 斗六市| 龙门县| 桐城市| 谢通门县| 凤翔县| 南岸区| 朝阳县| 方山县| 西林县| 白山市| 庄河市| 小金县| 固原市| 建平县| 新宁县| 府谷县| 温泉县| 乌兰浩特市| 延吉市| 德格县| 道孚县| 乐山市| 濮阳市| 南昌县| 哈尔滨市| 祁门县| 金坛市| 壶关县| 岳普湖县| 灌阳县|