1

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

 2 years ago
source link: https://blog.niclin.tw/2018/06/10/dk-%E9%95%B7%E8%BC%A9%E9%96%8B%E7%9A%84-sql-%E7%A8%8B%E5%BC%8F%E9%80%B2%E9%9A%8E%E6%95%88%E8%83%BD%E5%84%AA%E5%8C%96%E5%AF%A6%E4%BD%9C-%E8%AA%B2%E7%A8%8B%E5%BF%83%E5%BE%97/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Nic Lin's Blog

喜歡在地上滾的工程師

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

林嘉軒 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,有問必答
  • 助教楊老師容易聯繫,積極處理發票問題

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK