Nic Lin's Blog

喜歡在地上滾的工程師

DK 長輩開的 SQL 程式進階效能優化實作 課程心得

常常使用資料庫,但很多環節不清楚效能為什麼不好,也不知道怎麼做預防勝於治療,在老闆的大力推薦下就來上這個課程了,聽說還是老闆的前輩呢。

講師介紹

林嘉軒 GSLin (DK長輩)

  • PIXNET 資深工程師
  • KKBOX 首席工程師
  • 104 技術長

累積十幾年文章的 Gea-Suan Lin’s BLOG

先講結論

  • 講師技術底非常深
  • 課程精華在於 QA 解惑 (一定要準備一些奇怪的問題來問)
  • 會分析多面向的解決手法,例如:有時是產品面問題

上課心得

主要的課程圍繞著 MySQL 講述,包含簡單的歷史以及資料庫基本概念。

在課程的一開始會給大家一人一台已經準備好 Dataset 的機器可以認領,然後能夠依照課程上的講師 Demo 跟著自行操作一遍,不過這邊要注意的是,由於講師已經打的非常熟練,所以很有可能會有跟不上的情況 XD

不過整體課程來說,真正會有動手自己的情況非常少,因為著重的重點除了案例分析以外,最精彩的部分在於 QA 互動,基本上兩天 12 小時的課程,沒看過有人提出的問題是講師需要長時間思考或是無法回答的。

這期間也可以聽到各個公司的各種奇怪需求,發現自己家的還不是最刁鑽的,滿有趣的,可以吸很多經驗值,所以課程要記得寫筆記。

這邊有一點令我印象深刻的是,一開始講師準備的課程教材是可以給 Windows / Mac 的教材,不過後來發現學生清一色都使用 Mac,調查之後也發現大家對於 command line 都不陌生,於是講師會依照當前學生的程度調整教材,最後上完課的時候,講師說這班比他預教的還給的更多,因材施教嘛!

這堂課回去之後,有一種升級的感覺,這裡講我個人的部分:

  • 知道 Index 是一 Btree, table 也是
  • 沒有用的欄位放著無影響,但最好不要掛有 index
  • 學習到一些可以查看 performance 的技巧,例如 MySQL 的 performance schema
  • Index 不見得會照著你所想的走,有時 Query plan 會有不同的預期
  • Table scan 有時不見得慢
  • B-tree 的結構,為何搜尋資料快
  • Index 是有順序性的,需理解 Btree 結構
  • Query 多不代表會慢
  • 加 Index 會快是因為連續區間
  • Truncate 是直接消滅表格,Delete 是走 ACID 所以刪除幾百萬筆非常慢
  • 打錯 index 所造成的 merge index 會讓效能更差,因為拉了更多 Btree 出來
  • 現在機器成本變低,很多時候用錢砸就行,不一定要做 Sharding, AWS 都租的到 4T RAM 的機器了
  • 其實還很多,以下省略,再開一篇筆記出來寫 XD

希望能夠改進的部分

  • 教室隔音很差,聽的到別間講課的聲音
  • 教室與宗教所借,不能吃葷食(不曉得能不能殺生打蚊子,害我不敢打)
  • 結業證書上面沒有授課講師的名字,質感普通
  • 有些座位連不到延長線,充電需要換位置

值得稱讚的部分

  • 和講師一起吃飯,人很 Nice,有問必答
  • 助教楊老師容易聯繫,積極處理發票問題
comments powered by Disqus