跟五倍紅寶石聊了蠻多方向的,決定合作開一門跟資料庫有關的課。上個禮拜先貼連結到我的 social network 上,但一直沒寫文章說明內容。所以就來寫文章推銷了:「| 五倍紅寶石 | 程式課程:?SQL 程式進階效能優化實作 - 台北假日班 | Accupass 活動通」。
這門課程預定在 5/26 與 6/2 上課,共 12 小時,分成兩個週六上課。課程主要是以 MySQL 的 InnoDB 為內容 (會採用 Percona Server 5.7 的系統),在課堂上會有實際的 MySQL server 與 phpMyAdmin,可以拿預載好的 data set 實際練習。
由於是效能改善的主軸的課程,會從圍繞與效能有關的主題說明:
- 有哪些資料結構可以使用。像是
VARCHAR
與CHAR
的差異,以及對 Index 的影響。 - 怎麼樣設計出符合正規化規範的表格,以及使用與不用的時機。
- 當表格正規化後,有哪些方式可以取得資料。像是各式的
JOIN
、GROUP BY 以及 subquery。 - 在系統內 Index 要怎麼下才會有效率。
- 怎麼看 MySQL 對一組 SQL query 的解讀,這邊會針對
EXPLAIN
的操作以及輸出結果。 - 常見的效能問題,像是
ORDER BY RAND()
、N+1 以及LIMIT N,20
造成資料庫效能不佳以及改善的方式。
而這門課主要針對兩種客群:
- 第一種是會對資料庫操作的 Programmer,像是後端工程師,全端工程師,或是 DevOps。由於課程內包括了系統上線前的設計與預防措施,以及上線後遇到狀況時的判讀與排除,對於 Programmer 來說是不可或缺的課程。
- 第二種是管理資料庫的 DBA。在前期參與規劃資料表格設計時,可以提供精確的建議,以大幅降低後續維運上可能遇到的問題。以及當真的遇到效能問題,或是接手的系統就已經有效能問題時,提供可能的解決方案。
目標是透過這門課程,讓資料庫 (尤其是 MySQL) 被用的更淋漓盡致,而不是單純的遇到效能問題就加大機器。