PostgreSQL分割槽表更新思路
微信群與一位PG朋友討論分割槽表更新問題,分享下本人之前的解決思路。
應用場景:
公交卡刷卡乘客的消費資料明細入庫問題
比如我們按乘客乘車時間,按月份進行分割槽,表名如card_trade201912
問題:
資料總會有延遲上傳或重傳或錯傳的情況
那後臺需要對分割槽表進行插入或修改操作。
單純的插入資料到基表,可以根據乘車時間定位到分割槽表,這個沒什麼問題
修改或者混合操作,對基表做join操作效能會差一些,這是因為修改可能會涉及多個子分割槽表
我的解決思路:
1.對源資料按分割槽欄位(這裡是乘車時間)分組
分組後每個組對應了一個具體的子分割槽如(card_trade201912)
2.按組處理
可以直接insert into card_trade201912 on conflict do update
或者先perform查詢,根據分割槽鍵查詢
判斷是要做insert還是update
這樣不管源資料跨多少個子分割槽,單次分組操作開銷基本是線性的。
上面對源資料也可以分批處理,比如每次處理1W條。
經過這樣改進原來需要半個小時或者更長時間的任務基本分鐘級就能處理完成。
更多PG相關文章: https://www.modb.pro/tag/postgresql?cyn
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29715045/viewspace-2683270/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- postgresql分割槽表SQL
- PostgreSQL/LightDB 分割槽表之分割槽裁剪SQL
- PostgreSQL:傳統分割槽表SQL
- PostgreSQL:內建分割槽表SQL
- postgresql分割槽表實現方式SQL
- PostgreSQL和oracle表分割槽對比SQLOracle
- PostgreSQL使用表繼承實現分割槽表SQL繼承
- postgresql分割槽表修改資料表欄位SQL
- PostgreSQL10.0內建分割槽表SQL
- PostgreSQL分割槽表、繼承表記錄去重方法SQL繼承
- oracle分割槽表和分割槽表exchangeOracle
- postgresql 9.6 分割槽表測試方案與記錄SQL
- PostgreSQL11preview-分割槽表增強彙總SQLView
- PostgreSQL/LightDB分割槽表之常見問題SQL
- 全面學習分割槽表及分割槽索引(13)--分隔表分割槽索引
- oracle分割槽表和非分割槽表exchangeOracle
- Oracle分割槽表及分割槽索引Oracle索引
- INTERVAL分割槽表鎖分割槽操作
- 全面學習分割槽表及分割槽索引(9)--刪除表分割槽索引
- 全面學習分割槽表及分割槽索引(11)--合併表分割槽索引
- 全面學習分割槽表及分割槽索引(12)--修改list表分割槽索引
- 學習筆記】分割槽表和分割槽索引——新增表分割槽(二)筆記索引
- 如何查詢分割槽表的分割槽及子分割槽
- PostgreSQL學習手冊(表的繼承和分割槽)SQL繼承
- PostgreSQL 原始碼解讀(98)- 分割槽表#4(資料查詢路由#1-“擴充套件”分割槽表)SQL原始碼路由套件
- 使用split對分割槽表再分割槽
- 簡單ORACLE分割槽表、分割槽索引Oracle索引
- rebuild分割槽表分割槽索引的方法Rebuild索引
- 分割槽表及分割槽索引建立示例索引
- 全面學習分割槽表及分割槽索引(10)--交換分割槽索引
- PLSQL根據分割槽表的分割槽名批次truncate分割槽SQL
- 全面學習分割槽表及分割槽索引(8)--增加和收縮表分割槽索引
- 【學習筆記】分割槽表和分割槽索引——分割槽表的其他管理(三)筆記索引
- 範圍分割槽表和INTERVAL分割槽表對於SPLIT分割槽的區別
- 【MYSQL】 分割槽表MySql
- Oracle 表分割槽Oracle
- MySQL 分割槽表MySql
- oracle分割槽表Oracle