項目中大表治理方案實踐

一、業務背景

目前生產庫數據庫服務器數據存儲達到了13T,其中license_spart表數據量達到了200億,占用7.5T,空間占用率達到54%。而且這張表每年數據增長量達到30億。其中有效VALID數據占20億,無效數據INVALID占180億。由于業務上有些場景,需要查詢無效數據,所以不能直接刪除。隨著license_spart表規模持續擴大,會帶來嚴重的性能問題、存儲成本增加、備份與恢復困難、數據一致性問題(生產4臺服務器)等等。

二、整體目標

將license_spart數據整體遷移到歸檔庫,主庫license_spart只保留最新的3個月的有效VALID數據,歸檔庫按照年份保存有效和無效數據,實現主庫license_spart存儲大幅縮減。

二、治理策略

1、歸檔庫按照年份創建數據表

整體采用分庫分表方案,申請歸檔庫數據庫服務器資源,然后創建license_spart_2018到license_spart_2035這18張表。歸檔庫表字段跟主庫license_spart表字段高度保持一致。

2、分析數據量及規模,指定定時同步策略

分析主庫license_spart表的日增長量達1000w(其中有效數據達20w),所以針對2025年以前的數據,采用【全量】+【實時】同步方式;針對2025年之后的數據,采用【實時】方式。

同步方式定時任務名源表目標表查詢條件
全量+實時license_spart_2018license_spartlicense_spart_2008lsn < ‘LIC2019’
全量+實時license_spart_2019license_spartlicense_spart_2019lsn like ‘LIC2019%’
實時license_spart_2026license_spartlicense_spart_2026lsn like ‘LIC2026%’

由于數據量比較大,可以在業務不繁忙時間(比如凌晨0點~5點),分100批次同步數據,每次同步5w數據,根據實際情況可以動態調整參數大小。

主庫數據同步完成后,建議保留3~4個月時間(2個迭代版本),無問題,再清空生產主庫無效數據。

3、編寫讀取歸檔庫工具類

Spring框架中,Spring-JDBC模塊提供了AbstractRoutingDataSource,其內部可以包含了多個DataSource,通過繼承該類并覆蓋determineCurrentLookupKey方法,可以根據業務需求動態選擇數據源。利用AOP注解實現動態切換數據源,參考利用AOP實現數據庫讀寫分離。

編寫一個公共查詢歸檔庫Service方法,由于歸檔庫跟主庫物理分離,所以采用無事務方式,否則會不生效。lsn組成分為LIC+年份+XXXX+標識等構成,通過對lsn的前7位進行切分,能夠找對對應的歸檔庫。

@DataSource("archiving")
public List<String> getArchivingLsnList(List<String> lsnList){// 根據入參lsn進行切分...
}

這樣在業務代碼查詢license_spart時候,如果返回lsnList結果為空,再利用getArchivingLsnList查詢歸檔庫數據,進行補充。

4、生產驗證及回滾

生產上線后,驗證同步的數據是否準確,業務邏輯查詢和修改是否無誤等。如果有問題,及時回滾。

5、定時任務刪除生產庫數據

編寫定時任務定期清理2個月前的數據,利用相關同步工具每天進行物理刪除2個月前的主庫數據。

針對主庫舊表數據清理,采用表重命名方式,進行替換,最后刪除舊表。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87494.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87494.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87494.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

快應用(QuickApp)技術解析與UniApp跨端開發生態探秘優雅草卓伊凡

快應用&#xff08;QuickApp&#xff09;技術解析與UniApp跨端開發生態探秘優雅草卓伊凡引言&#xff1a;一場由快應用引發的技術辯論近日&#xff0c;優雅草科技的資深開發者卓伊凡在與甲方的一次項目溝通中&#xff0c;因技術選型問題展開了激烈討論。甲方對快應用&#xff0…

《Font Awesome 參考手冊》

《Font Awesome 參考手冊》 引言 Font Awesome 是一個功能豐富的圖標庫,旨在幫助設計師和開發者快速地在網頁上添加圖標。它提供了超過700個矢量圖標,并且支持響應式設計。本文將為您詳細介紹 Font Awesome 的使用方法、圖標分類、圖標定制以及與 CSS 的結合。 一、Font A…

Linux基本命令篇 —— uname命令

uname命令是Linux系統中用于顯示系統信息的實用工具&#xff0c;它可以提供關于操作系統、內核版本、硬件架構等重要信息。下面我將詳細介紹這個命令的用法和常見應用場景。 目錄 一、基本語法 二、常用選項 三、使用示例 顯示所有系統信息&#xff08;最常用&#xff09; …

React Native 開發環境搭建--window--android

官網&#xff1a; https://reactnative.cn/docs/environment-setup 必須安裝的 node, JDK ,android Studio 安裝node 以前裝了nvm, 用nvm install 18.0.0 就可以了 安裝JDK 1、下載 ---- 我安裝的是11 【JAVA17下載傳送門】 注意&#xff01;&#xff01;&#xff01;1 …

ODS 系統是什么?企業為什么需要搭建 ODS?

目錄 一、ODS 系統基礎認知&#xff1a;先弄明白它是啥 1. 什么是 ODS 系統&#xff1f; 2. ODS 系統的起源 3. ODS 系統的特點 二、ODS 系統能干啥&#xff1f;核心功能解析 1. 數據集成 2. 數據清洗和轉換 3. 實時數據更新 4. 數據查詢和分析 三、企業為什么非得搭…

通過網頁調用身份證閱讀器http websocket方法-華視電子————仙盟創夢IDE

1.安裝全瀏覽器網頁專用監控軟件 2.安裝后 3.配置web接口 4.測試讀取 5.驅動監控地址 時間段內讀取身份證:如超時時間10000ms,則在點擊按鈕10秒內,放上身份證就可以讀成功,超時返回失敗; 讀身份證:把身份證放上去后點擊讀卡,讀成功,再次讀卡需要將身份證拿起來再放回去; 不拿…

Spring Cloud 前端調用后端接口方式

在 Spring Cloud 微服務架構中&#xff0c;前端調用后端接口通常不直接通過 Eureka&#xff0c;而是通過以下兩種核心方式實現&#xff1a; 一、前端直接調用后端服務&#xff08;需解決跨域和地址管理問題&#xff09; 1. AJAX 直接調用 前端通過 HTTP 請求&#xff08;如 …

【stm32】HAL庫開發——CubeMX配置RTC,單片機工作模式和看門狗

目錄 一、CubeMX配置RTC 1.RTC實時重要一環——BKP 寄存器 2.RTC實時時鐘 2.1打開RTC并設置時間 2.2打開外部低速時鐘 2.3代碼實現&#xff1a; 二、單片機工作模式 1.低功耗睡眠模式(Sleep) 2.低功耗停止模式(Stop) 3.低功耗待機模式(StandBy) 三、看門狗 1.獨立看…

9.Docker的容器數據卷使用(掛載)

什么是容器數據卷技術&#xff1f; 到這里&#xff0c;我算是入門docker了&#xff01; docker的理念&#xff1a;將環境和應用打包成一個鏡像&#xff01;直接安裝就能使用 如果數據都在容器中&#xff0c;那么我們一旦將容器刪除&#xff0c;數據就會丟失&#xff01;因為…

使用 TCollector 寫入 TDengine

TCollector 是 openTSDB 的一部分&#xff0c;它用來采集客戶端日志發送給數據庫。 只需要將 TCollector 的配置修改指向運行 taosAdapter 的服務器域名&#xff08;或 IP 地址&#xff09;和相應端口即可將 TCollector 采集的數據存在到 TDengine 中&#xff0c;可以充分利用…

高斯消元法詳解

文章目錄 概念用法特殊情況 我的奇怪方法 概念 什么是高斯消元?讓我們看一看 OI-Wiki 的解釋&#xff1a; 高斯消元法&#xff08;Gauss–Jordan elimination&#xff09;是求解線性方程組的經典算法&#xff0c;它在當代數學中有著重要的地位和價值&#xff0c;是線性代數課…

暴雨服務器成功中標華中科技大學集成電路學院服務器采購項目

近日&#xff0c;武漢暴雨信息發展有限公司在激烈的競爭中脫穎而出&#xff0c;成功中標華中科技大學集成電路學院的服務器采購項目。此次中標產品為暴雨旗下的塔式重裝AM400服務器&#xff0c;這一成果標志著暴雨信息在高性能計算領域的卓越實力得到了高校科研機構的高度認可。…

集群聊天服務器---MySQL數據庫的建立

數據庫的建立表格 user表 字段名稱字段類型字段說明約束idINT用戶idPRIMARY KEY, AUTO_INCREMENTnameVARCHAR(50)用戶名NOT NULL, UNIQUEpasswordVARCHAR(50)用戶密碼NOT NULLstateENUM(online, offline)當前登錄狀態DEFAULT offline friend表 字段名稱字段類型字段說明約束…

MongoDB 安裝使用教程

一、MongoDB 簡介 MongoDB 是一個高性能、開源的 NoSQL 文檔型數據庫&#xff0c;使用 BSON&#xff08;二進制 JSON&#xff09;格式存儲數據。適合存儲大規模、高并發的非結構化數據&#xff0c;常用于大數據、日志存儲、微服務架構中。 二、下載安裝 2.1 官網下載 訪問 …

FastAPI 小白教程:從入門級到實戰(源碼教程)

目錄 1. FastAPI 基本介紹 安裝 FastAPI 2. 簡單的 CRUD 示例 2.1 創建基本應用 2.2 添加 CRUD 操作??????? 3. 處理跨域請求 (CORS) 4. 普通案例&#xff1a;待辦事項 API??????? 5. 企業案例&#xff1a;認證和數據庫集成 5.1 使用 SQLAlchemy 和 JWT…

java中jasypt是用來做什么的?

思路&#xff1a; 簡要介紹Jasypt&#xff1a;一句話說明它的作用。配置解析&#xff1a;分別解釋password和algorithm的作用。工作流程&#xff1a;說明如何加密敏感數據并在配置文件中使用。安全提醒&#xff1a;強調密鑰管理的重要性。 最終回答&#xff1a; Jasypt&…

牛客周賽 Round 98

1.小紅與奇數 解題思路&#xff1a;如果給定的數是偶數, 由于1是任意正數的因子, 偶數1奇數 若給定的數是奇數, 1/自身, 都變成了偶數 #include <bits/stdc.h> using namespace std; void solve() {int x;cin >> x;if (x & 1)cout << "No" <…

(2)手摸手-學習 Vue3 之 變量聲明【ref 和 reactive】

手摸手-學習 Vue3 之 變量聲明【ref 和 reactive】 前言refreactive 前言 vue3 前端代碼開發過程中&#xff0c;必然會涉及變量聲明&#xff0c;會用到&#xff1a;ref、reactive 。本章節 進行講解說明。 演示的項目&#xff0c;經處理后的結構如下&#xff1a; ref 用途…

[Terence Tao訪談] 無限 | 關注模型 | 矢量場 | 策略性“作弊” | Lean

關注模型 改變視角真的很重要 無限&#xff1a;假設是球形的奶牛 陶哲軒&#xff1a;一個很好的例子是數學中的塞邁雷迪定理&#xff0c;于1970年代得以證明&#xff0c;它涉及在一組數字集合中尋找某種類型的模式&#xff0c;即等差數列&#xff0c;例如3、5、7或10、15、20。…

汽車v型推力桿總成三維5自由度性能及疲勞測試系統

V型推力桿總成裝置&#xff0c;通常設置在載重汽車中、后橋上&#xff0c;成對使用。其一端通過球面銷與車架鉸接&#xff0c;另一端則安裝在車橋上&#xff0c;通過關節軸承與車橋鉸接&#xff0c;其主要作用是穩定車橋&#xff0c;保持車橋的穩定位置&#xff0c;同時克服彈簧…