似乎大家對 myisam 的初步認識就是很快 , 不支援 Transaction , 適合當小型快速的資料儲存 , 但我看很多論壇(包括我公司) , 一旦會員很多的時候 , 不管用多好的硬體 , 總是會常常有 Slow Query 出現 , 而且若網站的連接數量越多越容易出現 , 可是 CPU LOADING 用的卻不高
但可能自己把 Slow Query 拿來再執行的時候會覺得很快啊 .... 怎會這樣 ><
這應該要歸罪於 myisam 做任何的資料異動總是會 Table Lock , 因此常常在 phpmyadmin 中看看狀態 , 會發現很多 Table Lock Wait ...
是的 , 該死的 Table Lock , 如果剛好有某一條連線所做的 INSERT/ UPDATE / DELETE 動作耗時 1 秒(也許等硬碟) , 那麼可能所有需要讀取該 Table 的人都要等 1 秒完才能讀取該 Table
既然如此 , InnoDB 理論上在較多人連線時後運行的穩定度會比較好 , 不知道我的推論是否正確
還記得以前我在互動王設計股票看盤的時候 , 每秒一直讀資料進來並且塞資料 , 而且 Client 端是一直連線在接收資料 , 是都沒發現甚麼 Table Lock Wait 的問題 , 當時我就是用 InnoDB , 也許真的 InnoDB 屬於 ROW Lock 層級真的比較適合大型網站
但這些也只是推斷 , 下一版的改版網站 , 大概就可以證明這件事情了
InnoDB 是Column Lock 理論上 或許可以解掉一部份的問題
Column Lock 我倒是第一次聽過 …
是 row lock ?..
比較少聽到有作到 column lock 的…