iT邦幫忙

2023 iThome 鐵人賽

DAY 13
1
自我挑戰組

全端網頁-入職三十天學習筆記系列 第 13

【全端網頁開發】Day13-PostgreSQL實做partition table分區表

  • 分享至 

  • xImage
  •  

前言

mentor:
查詢一下 partition table 的資訊,
這個架構在查詢上面要注意的事情有哪些,主要是會影響查詢效能。

我自己對於資料庫的使用,在之前也有使用過MySQL自己建構一個完整系統的資料架構,
並串接工廠端的Oracle連線撈資料去處理,但還沒有使用遇過partition table。
因為這邊的資料量非常大,都是幾億筆,因此有要來認識一下這個架構。

partition table

分區表(Partition Table)允許你將一個大表分成多個更小的子表,每個子表都被稱為分區。
這種方法可以改善性能、簡化數據管理,以及提高查詢效率,特別是對於包含大量數據的表格來說。

partition table 優點

性能提升: 分區表降低大表查詢負擔,提高性能,特定子表查詢更快速。
簡化管理: 自動數據分區,簡化數據加載、清理,減少手動處理。
優化查詢: 分區表優化查詢計劃,提高效率,特別適用於大數據。
容易擴展: 添加新分區輕鬆,無需修改表結構,減少停機時間。
維護效能: 減少索引和統計維護開銷,只需處理特定分區。
節省空間: 某些策略可壓縮舊分區,更有效地利用存儲。

partition table實做

因為認識一個架構最快的方式我覺得是自己實做一次,
這邊先做一個簡單的partition table。

那這邊我使用的資料庫管理系統是DBeaver。

步驟1:創建主表
1.使用SQL語法建立partition table (添加 PARTITION BY RANGE (date) 設定 partition key)

-- 定義主表為分區表
CREATE TABLE test_main_table (
    id serial PRIMARY KEY,
    date date,
    data text
) PARTITION BY RANGE (date);

https://ithelp.ithome.com.tw/upload/images/20230928/20162956spsZCNip7k.jpg
2.確認建立後得資料表分區部分有打勾,並有表格分區依據鍵 RANGE (logdate)
https://ithelp.ithome.com.tw/upload/images/20230928/20162956f7VED5K5k1.jpg

步驟2:創建分區表
1.創建分區表,並指定用於分區的條件

-- 創建子分區表
CREATE TABLE H1 PARTITION OF test_main_table
    FOR VALUES FROM ('2023-01-01') TO ('2023-06-30');

CREATE TABLE H2 PARTITION OF test_main_table
    FOR VALUES FROM ('2023-07-01') TO ('2023-12-31');

https://ithelp.ithome.com.tw/upload/images/20230928/20162956zTY4zyLM2Y.jpg
2.分區表的名稱按需求命名,並且每個分區表都應該包含一個條件,以確定哪些數據應該存儲在特定的分區表中
https://ithelp.ithome.com.tw/upload/images/20230928/20162956u88wleQUlp.png

步驟3:插入數據
1.將數據插入主表,PostgreSQL 將自動根據分區條件將數據路由到正確的分區表中。

INSERT INTO test_main_table (id, logdate, date) VALUES ('1','2023-02-15','20230215');
INSERT INTO test_main_table (id, logdate, date) VALUES ('1','2023-08-20','20230820');
INSERT INTO test_main_table (id, logdate, date) VALUES ('1','2023-01-15','20230115');
INSERT INTO test_main_table (id, logdate, date) VALUES ('1','2023-09-20','20230920');

https://ithelp.ithome.com.tw/upload/images/20230928/20162956Eo7jyiSZFN.jpg

2.之後在select條件加上partition key的條件後,會直接找該分區的資料,提升效率。

https://ithelp.ithome.com.tw/upload/images/20230928/201629563peFPawA2a.jpg
https://ithelp.ithome.com.tw/upload/images/20230928/20162956FM8OxOKmU4.jpg
https://ithelp.ithome.com.tw/upload/images/20230928/20162956LTkIrOFM4A.jpg

以上完成~

結語:

分區表是一個強大的資料庫架構,
可以改善性能、簡化數據管理,並提高查詢效率,特別適用於處理大數據。
通過上述步驟,我們成功地建立了一個分區表並進行了數據操作。
希望這份教學能幫助你更好地理解和應用分區表,以應對大規模數據的挑戰


上一篇
【全端網頁開發】Day12-Flask實作使用者上傳文件回傳壓縮檔
下一篇
【全端網頁開發】Day14-PostgreSQL應用於flask網頁
系列文
全端網頁-入職三十天學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言