當某張表存儲數據量特別大時(一般為TB數量級),開發人員常常會將該表進行分區處理。
這種分而治之的方法,既可以緩解存儲數據的持續膨脹,又可以改善表的維護、備份、恢復及提升查詢性能。
工具/原料
分區表
方法/步驟
一、分區表的優點:
1、增強數據安全性:如果表的一個分區因為系統故障而損壞,其餘分區仍可正常使用。
2、減少修復時間:系統故障影響某個分區,因此只修復這部分分區即可。
3、均衡I/O:可以將表的不同分區,分配到不同磁盤上,來平衡I/O改善性能。
4、改善性能:對大數據表進行增加、修改、刪除時,可以分解到表的不同分區來進行。
5、用戶易用性:表分區對用戶透明,最終用戶感覺不到分區的存在。
由於分區表具有上述優點,將表分區已廣泛應用到項目中。那麼,對於測試人員來說,如何測試分區表呢?結合自己經驗,總結如下幾點:
二、如何測試分區表(以MYSQL數據庫為例)
1、分區是否成功創建:可手動運行存儲過程或等待存儲過程自動運行,運行後查看錶的分區情
況。是否成功創建了未來幾天或下個月的分區表。
舉例:採用Navicat for MySQL工具,首先選擇某分區表,右鍵選擇設計表。打開選項tab頁,點
擊【分割區】按鈕。可查看到表的分區情況。
2、數據是否存儲到對應的分區表中:
通常按照時間劃分的分區表,1號的數據需要存儲到1號的分區表中或者1月的數據需要存儲到1月
的分區表中。有時為了測試方便,需要測試人員手工創建表分區。創建分區表SQL如下:
創建分區後,需要錄入測試數據。測試人員需要準備跨年、跨月、每個月的第一天,中間一天和最後一天的測試數據。錄入後,需要檢查這些數據是否都存入對應日期的分區表中。
查詢SQL如下:explain partitions select * from 表名 where 表中日期字段 in (‘月初第一天’,'月末最後一天’);
三、是否成功刪除表分區
根據業務需求,某些分區會被刪除。如:刪除前3個月的數據。測試人員可以模擬這種情況,製作一些滿足刪除要求的數據。執行存儲過程後,查看分區表及分區表中的數據是否被刪除。這裡還需要檢查不滿足刪除要求的數據,是否被保留。
四、分區表是否提升性能
分區表和相關數據創建後,需要測試該分區表對應的功能是否滿足業務要求。在大數據量的情況下,性能是否有所提升。在對分區表的測試中,往往需要加入大數據量的性能測試。
五、是否要創建分區表
分區表雖然好處很多,但不是所有表都需要創建成分區表。一般可從數量級、表的維護性角度分析,該表是否需要創建成分區表? 歡迎大家有問題與我繼續交流。
注意事項
數據庫分區表