中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

淮安市| 云浮市| 凤阳县| 富裕县| 潼关县| 通许县| 嘉峪关市| 合山市| 文化| 连江县| 老河口市| 改则县| 隆尧县| 中牟县| 东源县| 安顺市| 乌兰县| 河北区| 三江| 承德县| 襄垣县| 乐东| 亚东县| 潮安县| 南漳县| 泰州市| 林口县| 偏关县| 榆林市| 全南县| 拉孜县| 高安市| 临洮县| 中牟县| 沾益县| 葫芦岛市| 游戏| 淄博市| 泸水县| 互助| 苍山县|