後端工程師經驗談 — 為什麼你應該在部署到 production 之前執行過 1 遍 EXPLAIN 指令
後端工程師很多工作會跟資料庫打交道,而通常很多公司為了方便會讓團隊在開發環境共用資料庫,裡面有測試資料之外,也有可能拿修改過的 production 資料填充(也可能沒修改過⋯⋯噢,壓力山大)
大家共用資料庫的結果,就是資料庫的 schema 或者索引(indexes)會與 production 環境有些許出入,而你所寫的 query 可能在開發環境上跑得又快又順,但到了 production 不僅慢,還甚至引起災難,這就是因為你所寫的 query 在開發環境有用到他人建立的索引,可是 production 沒有這些索引可用,造成 full table scan, 甚至可能引起連鎖反應⋯⋯ 😖
所以,你應該在部署到 production 之前至少執行過 1 遍 EXPLAIN
指令!
除了可以知道你的 query 是否如預期般執行之外,也可以避免開發環境與 production 環境不一致造成的問題,才不會火箭發射就爆炸。
雖然講起來很輕鬆,但經驗告訴我養成這個習慣很重要,因為親身體驗過幾次開發環境與 production 資料庫 schema 與索引不一致,造成上線後人仰馬翻 😫
關聯式資料庫也好, NoSQL 也好,都有類似的 EXPLAIN
指令能夠使用,熟悉這個指令是很重要的功課!