首頁>技術>

用過 MySQL 的都知道 MyISAM 與 InnoDB。InnoDB 是 MySQL 的預設引擎,優點都背過了,支援事務,支援行級鎖,支援併發寫入等等。而 MyISAM 顯得比較過時了。

但是最近的一件事兒,讓我意識到,InnoDB 不是萬能的,有時候還是 MyISAM 好用。

此客戶一直在用我們的客戶管理系統,類似於無程式碼管理平臺。客戶設定的許可權比較靈活,以至於市面上沒有幾家能達到他們的要求,除了能看上下級的資料,還要看平級的、跨部門的某些資料。圖形化的設定之後,系統生成的 SQL 查詢語句大概是這樣子:

某天客戶說系統好像慢了,開啟頁面需要需要10秒左右。看了下資料庫索引之類的,都沒有異常。回想了下,就是前段時間給他們換了 InnoDB 引擎。難不成是這個原因?又給換回了 MyISAM,果然快了,一個查詢 0.1 秒之內絕對完成。

然後琢磨了下,這個查詢跨表多,資料量多,但是併發量讀寫並不高,大多數時間都是在單執行緒操作,所以 InnoDB 的併發讀寫之類的都沒派上用場,反而拖累了查詢速度。這種情況上 MyISAM 最合適不過了。

12
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • win32程式設計 -- 圖示資源與游標資源