[MySQL] 效能瓶頸與欄位內容值大小寫敏感(case sensitive)設定

給最近 Cover 出國同事之餘,解決的零散小事做個小筆記。

MySQL issues

效能瓶頸A: WordPress 內建文章若匯入超過 20 萬篇,分類頁等列表頁效能在有一些瀏覽人數狀態下會出現 MySQL 崩潰的問題。

解法: 換架構 或 升級主機。

主機是 20 USD/Month 的 VPS 等級,二話不說覺得還有彈性,走改架構模式。

效能瓶頸B: 同上案例,若匯入時有帶入某個標籤,並且所屬標籤文章數超過 1 萬篇,匯入速度可以從 3 posts per second 降到 1 posts per second。

解法:如果硬要標籤就無解。拔掉標籤可以恢復速度。

WordPress 的 taxonomy & meta 架構都是效能怪物!

效能瓶頸C: 超過百萬篇文章下使用 MySQL RAND() 函數進行實作隨機推薦文章功能,會造成運算效能極度、非常、嚴重低落。

解法:選取最大系統編號,用程式求區間隨機數取文。

關於隨機取資料的做法有 scope 的問題要考慮,也就是資料數量多寡會反應出效能高低,而隨機解法還有分連續與非連續編號的做法,難度也是非連續最高最複雜。可以參考這個討論串:MySQL select 10 random rows from 600K rows fast

瀏覽速度從請求一篇 3~5s 減低到 300~700ms。所謂給你省錢的工程師是真的會找出問題的那個,不是隨便就叫你升級的那個XD

MySQL 內容值大小寫敏感設定

欄位若選擇為「unique」key又希望能大小寫敏感的話要設訂編碼與排序為有 binary 的或是 case sensitive 屬性,以免亂數或是順序編碼下有重複值無法寫入的問題。

參考:SQL unique varchar case sensitivity question

以上~ 簡單(!?)幾個整理。

#MySQL #WordPress #效能瓶頸 #大小寫敏感 #技術相關 #筆記

- Powered by Mxp.TW -FB2WP-

Facebook 外掛整合


Share: