略懂查詢處理的老規矩

你懂資料庫,資料庫就會幫你

古哥
古哥
Sep 25 · 2 min read
Image for post
Image for post
A Tour of PostgreSQL Internals — 31 Oct 2000 Tom Lane

你沒看錯,是 2000 年的簡報,這個「老派」的基礎流程已經持續運作超過 20 年了。那現在的 PostgreSQL 呢?請移駕參閱官方使用手冊,然後還是回來看這個簡報吧!

時間證明資料庫的系統框架技術確實是可以歷久不衰,知識的成本效益相當高

你可以稍微瞭解一下資料庫是如何處理你的查詢語句的。最常遇到的情境是查詢語句調教時,你應該專注在 Planner 的結果 (Plan Trees),而不是查詢語句本身,因為你會知道,你的語句在經過 Parser 和 Rewriter 之後,資料庫系統的認知可能會與你想的不同。

如果你再進一步瞭解 Planner,那就有機會可以協助資料庫調整正確的查詢計畫,順利回饋到你的查詢效能。

所以才要正規化呀

資料庫正規化除了一般學理上所提到的減少資料冗餘、維護資料一致性等等之外,在資料庫內部而言,也更容易設計程式,針對相同的資料規格來進行高效能的資料處理。

在投影片也提到了,這個流程機制是為了讓資料庫系統可以自動產生良好的查詢計畫,人類的工作是設計良好的資料及索引結構,並且適當地使用查詢語句。

隱憂的部份則是為了快速估計處理成本,資料庫是以統計模型的概念來假設資料的樣貌,所以你需要經常更新你的資料統計數據 (vacuum);同時也設計了 prepared statement 機制,來減少重覆性計算查詢計畫的成本。

當你不解為何資料庫會如此設計時,請回頭想想這個流程吧。

查詢流程不是只有資料庫在用

老闆傳訊:幫忙去買個三寶飯回來當午餐吧!

Parser:好der,也快中午了,就去買一下吧。

Rewriter:沒指定店家,那就去買”我自己想吃的”.”沒柴燒臘店”。

Planner:要叫外送還是自己去買呢?現在剛好比較沒人,直接去買比較快吧!

Executor:等等,什麼?要追加 10 個,重死我了,早知道就叫外送了!

資料庫其實比你想的要單純許多,你才是那個更重要的人。

當你懂得如何幫助資料庫的時候,資料庫才會幫助你。

pgsql-tw

這裡是 PostgreSQL 台灣使用者社群,歡迎任何人投稿!

古哥

Written by

古哥

解決不了問題,就解決提出問題的人

pgsql-tw

pgsql-tw

你懂資料庫,資料庫就會幫你🐘

古哥

Written by

古哥

解決不了問題,就解決提出問題的人

pgsql-tw

pgsql-tw

你懂資料庫,資料庫就會幫你🐘

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store