SQLServer分表專案方案總結

2021-10-07 03:58:00 字數 884 閱讀 7427

基於c#語言、sqlserver資料庫。

業務系統隨著時間的進展,資料越來越多,系統執行越加緩慢,所有資料存在乙個表中,單錶資料量已經到達幾個億(筆者專案單錶突破5億條),並且伴隨業務增長欄位仍可能繼續增加。對資料進行規範儲存,提高系統效能的需求已經刻不容緩。

對資料進行邏輯表分,將資料按季度、月度進行拆分。

分割槽表(與本方案不衝突,可選擇一種進行實施,也可以結合使用)

通過特定的時任務(資料庫計畫,或者windows任務,或者其他工具;筆者專案採用自己開發的windows服務)進行資料分表拆分。

建立索引表;

索引記錄分表的記錄,查詢時通過索引表快速找到資料所在的分表。

利用工具進行歷史資料分表(可利開源的

etl工具:

kettle

,筆者是自己開發的乙個工具),此處特別注意大批量資料操作帶來的影響。

建立定時任務,定時執行儲存過程,以執行日常營業資料的分表;

源表保留若干天的資料冗餘,以便資料遷移出現問題可進行問題分析,特別是在專案剛實施階段,以避免分表造成資料遺漏。

筆者經過一番調查,給出如下關係型資料庫單錶記錄數建議:

mysql

sqlserver

oracle

通常建議不超過

500w

500w

500w

最大建議不超過

2000w

2000w

5000w

資料庫效能與伺服器配置、索引、執行的sql複雜度有關,以上僅為參考值。

DB 分庫分表專案改造心得

目前筆者在主導公司乙個已有產品的改造專案,目前在方案討論階段。先介紹下目前系統的現狀,目前系統中訂單相關的資料日新增量已經到了百萬級別,圍繞訂單相關的訂單分揀,打包,發貨相關操作的transaction 達到近千萬級別每日。在做了歷史歸檔以後,db 效能還是比較吃緊,所以我們想到了分庫分表的方案 這...

SqlServer2005分頁方案

插入測試資料200w條,可能會很久 create table student id int primary keyidentity 1 1 name nvarchar 50 age int insert student name,age values name 18 while select cou...

BIRT報表項消失的解決方案

在對birt進行二次開發的過程中,遇到了不少的問題,現在說一下遇到的乙個比較奇怪的問題,搞了好長時間才解決。先看一下問題所在吧,如下截圖 熟悉birt的人應該可以看到 交叉表 和 圖表 兩個報表項消失了,右側是正常的birt工具箱,造成這個問題的原因可能會有很多,我只說我遇到的,其他原因還請大神們相...