亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

長文多圖:一文講清楚應(yīng)對單數(shù)據(jù)表海量數(shù)據(jù)的六種策略


長文多圖:一文講清楚應(yīng)對單數(shù)據(jù)表海量數(shù)據(jù)的六種策略

文章插圖
歡迎大家關(guān)注今日頭條號「JAVA前線」查看更多精彩分享文章 , 主要包括源碼分析、實(shí)際應(yīng)用、架構(gòu)思維、職場分享、產(chǎn)品思考
1 文章概述在業(yè)務(wù)發(fā)展初期單表完全可以滿足業(yè)務(wù)需求 , 在阿里巴巴開發(fā)手冊也建議:單表行數(shù)超過500萬行或者單表容量超過2GB才推薦進(jìn)行分庫分表 , 如果預(yù)計(jì)三年后數(shù)據(jù)量根本達(dá)不到這個級別 , 請不要在創(chuàng)建表時就分庫分表 。
但是隨著業(yè)務(wù)的發(fā)展和深入 , 單表數(shù)據(jù)量不斷增加 , 逐漸成為業(yè)務(wù)系統(tǒng)的瓶頸 。這是為什么呢?
從宏觀層面分析任何物體都必然有其物理極限 。1965年英特爾創(chuàng)始人摩爾預(yù)測:集成電路上可容納的元器件的數(shù)目 , 約每隔24個月增加一倍 , 性能提升一倍 , 即計(jì)算機(jī)性能每兩年翻一番 。
但是摩爾定律會有終點(diǎn)嗎?有些科學(xué)家認(rèn)為摩爾定律是有終點(diǎn)的:半導(dǎo)體芯片單位面積可集成的元件數(shù)量是有極限的 , 因?yàn)榘雽?dǎo)體芯片制程工藝的物理極限為2到3納米 。當(dāng)然也有科學(xué)家不支持這種說法 , 但是我們可以從中看出物理極限是很難突破的 , 當(dāng)單表數(shù)據(jù)量達(dá)到一定規(guī)模時必然也達(dá)到極限 。
從細(xì)節(jié)層面分析我們將數(shù)據(jù)保存在數(shù)據(jù)庫 , 實(shí)際上是保存在磁盤中 , 一次磁盤IO操作需要經(jīng)歷尋道、旋轉(zhuǎn)延時、數(shù)據(jù)傳輸三個步驟 , 那么一次磁盤IO耗時公式如下:
單次IO時間 = 尋道時間 + 旋轉(zhuǎn)延遲 + 傳送時間
總體來說上述操作都較為耗時 , 速度和內(nèi)存相比有著數(shù)量級的差距 , 當(dāng)數(shù)據(jù)量過大磁盤這一瓶頸更加明顯 。那么應(yīng)該怎么辦?處理單表數(shù)據(jù)量過大有以下六字口訣:刪、換、分、拆、異、熱 。




刪是指刪除歷史數(shù)據(jù)并進(jìn)行歸檔 。換是指不要只使用數(shù)據(jù)庫資源 , 有些數(shù)據(jù)可以存儲至其它替代資源 。分是指讀寫分離 , 增加多個讀實(shí)例應(yīng)對讀多寫少的互聯(lián)網(wǎng)場景 。拆是指分庫分表 , 將數(shù)據(jù)分散至不同的庫表中減輕壓力 。異指數(shù)據(jù)異構(gòu) , 將一份數(shù)據(jù)根據(jù)不同業(yè)務(wù)需求保存多份 。熱是指熱點(diǎn)數(shù)據(jù) , 這是一個非常值得注意的問題 。


2 刪我們分析這樣一個場景:消費(fèi)者會經(jīng)常查詢一年之前的訂單記錄嗎?答案是一般不會 , 或者說這種查詢需求量很小 。
根據(jù)上述分析那么一年前的數(shù)據(jù)我們就沒有必要放在單表這張業(yè)務(wù)主表 , 可以將一年前的數(shù)據(jù)遷移到歷史歸檔表 。




在查詢歷史數(shù)據(jù)表時 , 可以限制查詢條件如必須選擇日期范圍 , 日期范圍不能超過X個月等等從而減輕查詢壓力 。
處理歷史存量數(shù)據(jù)比較簡單 , 因?yàn)榇媪繑?shù)據(jù)一般是靜態(tài)的 , 此時狀態(tài)已經(jīng)不再改變了 。數(shù)據(jù)處理一般分為以下兩個步驟:
(1) 遷移一年前數(shù)據(jù)至歷史歸檔表(2) 根據(jù)主鍵分批刪除主表數(shù)據(jù)
不能一次性刪除所有數(shù)據(jù) , 因?yàn)閿?shù)據(jù)量太大可能會引發(fā)超時 , 而是應(yīng)該根據(jù)ID分批刪除 , 例如每次刪除500條數(shù)據(jù) 。
第一步查詢一年前主鍵最大值和最小值 , 這是我們需要刪除的數(shù)據(jù)范圍:
SELECTMIN(id) AS minId,MAX(id) AS maxIdFROM biz_tableWHERE create_time < DATE_SUB(now(),INTERVAL 1 YEAR)
第二步刪除數(shù)據(jù)時不能一次性全部刪掉 , 因?yàn)楹芸赡軙瑫r , 我們可以通過代碼動態(tài)更新endId進(jìn)行批量刪除:


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: