前言在 Postgresql 世界裡每建立一個 Connection,都會有一個 process 來服務該請求,Postgresql 沒有 ThreadPool 概念所以在 Connection 使用量大時會發生一些問題 資源浪費 超過同時間超過 max_connection 後面連接會無法連接 ...
LRU 演算法解說
前言資料結構跟演算法是程式設計師的內功,在中小型系統懂這兩樣東西效用可能有限,但在大型系統中熟不熟用資料結構跟演算法做出來的效益會天差地遠 對於常使用的物件和變數我們會放置在 Redis 上( cache server ),但記憶體有限,我們想放的東西無限,造就無法將所有物件都存放在 Redis 或 ...
資料庫查詢核心概念-地圖理論
前文我認為 DB query optimizer (QO) 產生執行計畫並執行查詢和 使用地圖找尋最佳路徑很類似 下面會跟大家分享我心中 地圖理論 希望可以對於想了解 DB 運作的人更快上手 看見全貌在了解一個事情跟技術,我們需要先用宏觀的角度來看待事情 下圖是 postgresql DB 運作核心 ...
利用Redlock演算法實現自己的分佈式鎖
前言我之前有寫透過 lock or CAS 來防治,Racing condition 問題,但如果這個問題延深到多台服務器甚至是 micor-services 架構我們要怎麼處理資料問題呢? 下面程式在單體服務或應用程式不會出問題,但如果服務器有多台問題可就大了,因為下面的 lock 只限於單體 S ...
postgresql 執行計畫重要因子 (成本因子調教)
前言執行計畫代表此次查詢要怎麼樣的演算法查詢我們的資料,而成本是決定使用哪個執行計畫的重要因素 在 postgreSQL DB query optimizer 會選擇成本最低的執行計劃,當作查詢資料使用算法 在 Sql-sevrer 成本計算封裝在程式內部,我們無法透過一些因子來調整,但 postg ...
AWS Lambda 初體驗 by .net core
前言AWS 在有眾多服務,其中我對於 Lambda 最有興趣 (因為 .net 有一個 Lambda 表達式 ) 最近申辦帳號可以使用 12 個月部分免費服務(有條件限制),看我還不玩爆 AWS XD 經過了解得知 Lambda 是一個 EDA 架構並幫我們解決開發時需要煩惱硬體上配置(記憶體要多少 ...
postgresql WAL (Write-Ahead Logging) 機制
前言WAL 是一種 Tx Log實踐機制 WAL 核心概念是先寫 tx log,在把資料寫資料,資料的修改必须發生在寫入 Tx Log之後,使用 WAL 紀錄資料庫系統在commit transaction 使用 WAL 機制後我們不需要在每次 Commit Transaction 後就把資料 fl ...
postgresql HOT (heap only tuple) update 深入淺出
前言Postgresql DB 目前預設在更新資料時會在 Heap Table 新增一條新版本資料,舊版本會先存在直到使用 VACUUM 回收 HOT update 作用在,當資料更新時通過 Heap Block 內部串聯所有 tuple 版本,則 Index 索引不變 HOT update 必須滿 ...
postgresql Page 深入淺出
前言因為工作需要最近在研究 postgresql DB,發現跟 sql-server 相比有許多不同之處,所以一開始就先研究 Page 差別,沒想到還真的有不少細節上的差異 在postgresql DB Page size 預設是 8KB 我們想要看page使用大小在 Sql-Server 可以用 ...
高併發系統系列-非同步 MQ-WorkerPool 架構 Poc
前文在處理高併發系統架構時,非同步是一個很好的手段和提升效率的方式. 我今天跟大家分享,如何利用 MQ 搭配 Worker Pool 來提高系統吞吐量且又不失彈性 原始碼連結 MQ Woker 本篇會包含兩個部分解說 如何使用 k3d (k8s) 和 docker-compose 來 Run 起我 ...