mysql 分表思路
一張一億的訂單表,可以分成五張表,這樣每張表就只有兩千萬數據,分擔了原來一張表的壓力,分表需要根據某個條件進行分,這里可以根據地區來分表,需要一個中間件來控制到底是去哪張表去找到自己想要的數據。
中間件:根據主表的自增 id 作為中間件(什么樣的字段適合做中間件?要具備唯一性)
怎么分發?主表插入之后返回一個 id,根據這個 id 和表的數量進行取模,余數是幾就往哪張表中插入數據。
注意:子表中的 id 要與主表的 id 保持一致
以后只有插入操作會用到主表,修改,刪除,讀取,均不需要用到主表
redis 消息隊列
1,什么是消息隊列?
消息傳播過程中保存消息的容器
2,消息隊列產生的歷史原因
消息隊列的特點:先進先出
把要執行的 sql 語句先保存在消息隊列中,然后依次按照順利異步插入的數據庫中
應用:新浪,把瞬間的評論先放入消息隊列,然后通過定時任務把消息隊列里面的 sql 語句依次插入到數據庫中
修改
操作子表進行修改
這樣修改有一個問題,主表和子表的數據會出現不一致,如何讓主表和字表數據一致?
redis 隊列保持主表子表數據一致
修改完成后將要修改主表的數據,存入 redis 隊列中
然后 linux 定時任務(contble)循環執行 redis 隊列中的 sql 語句,同步更新主表的內容
mysql 分布式之分表(查,刪)
查詢只需要查詢子表,不要查詢總表
刪除,先根據 id 找到要刪除的子表,然后刪除,然后往消息隊列中壓入一條刪除總表數據的 sql 語句
然后執行定時任務刪除總表數據
定時任務:
mysql 分布式之分庫
分庫思路
分庫原理圖:
mysql 分布式之分庫(增)
注意:操作完一個數據庫一定要把數據庫連接關閉,不然 mysql 會以為一直連接的同一個數據庫
還是取模確定加載哪個配置文件連接哪個數據庫
mysql 分布式之分庫(改)
原理同新增
mysql 分布式之分庫(查,刪)
原理類似
刪除
執行隊列
mysql 分布式之緩存(memcache)的應用
將數據放入緩存中,節省數據庫開銷,先去緩存中查,如果有直接取出,如果沒有,去數據庫查,然后存入緩存中
在編輯信息之后需要刪除緩存,不然一直讀取的是緩存的數據而不是修改過的數據
我的官方群點擊此處加入群聊【PHP/web/高級學習交流群】,一起學習,相互討論。
群內已經有管理將知識體系整理好(源碼,學習視頻等資料),歡迎加群免費領取。
這套精品PHP教程絕不是市場上的那些妖艷賤貨可比,作為web開發的佼佼者PHP并不遜色其他語言,加上Swoole后更加是如虎添翼!進軍通信 、物聯網行業開發百度地圖、百度訂單中心、虎牙、戰旗TV等!寒冬裁員期過后正是各大企業擴大招人的時期,現在市場初級程序員泛濫,進階中高級程序員絕對是各大企業急需的人才,這套學習教程適合那些1-5年以內的PHP開發者正處于瓶頸期,想要突破自己進階中高級、架構師!名額有限,先到先得!
騰訊T3-T4標準精品PHP架構師教程目錄大全,只要你看完保證薪資上升一個臺階(持續更新)?
部分資料截圖:
[圖片上傳失敗...(image-8dcca9-1594024531249)]
還有限時精品福利:
★騰訊高級PHP工程師筆試題目
★億級PV高并發場景訂單的處理
★laravel開發天貓商城組件服務
★戰旗TV視頻直播的架構項目實戰
掃描下面二維碼領取
對PHP后端技術,對PHP架構技術感興趣的朋友,我的官方群點擊此處,一起學習,相互討論。
群內已經有管理將知識體系整理好(源碼,學習視頻等資料),歡迎加群免費領取。
本課程深度對標騰訊T3-T4標準,貼身打造學習計劃為web開發人員進階中高級、架構師提升技術,為自己增值漲薪!加入BAT特訓營還可以獲得內推大廠名額以及GO語言學習權限!!!