思維導圖
介紹 mysql中用的最多儲存引擎就是innodb和myisam。做為Mysql的預設儲存引擎,myisam值得我們學習一下,以下是我對《高效能MYSQL》書中提到的myisam的理解,請大家多多指教。 特點 > 不支援事務 證明如下: >> 表記錄:t2表的engine是myisam。
>> 操作
注意:如果你在資料庫進行事務操作,但是事務無法成功,你就要看你的表引擎了,看這種引擎是否支援事務。>> 下面請看innodb中的事務操作
> 儲存結構:資料檔案(.MYD),索引檔案(.MYI)和結構檔案(.frm) >> 特點:可以在不同伺服器上拷貝資料檔案和索引檔案。
> 加鎖和並發 加鎖:對整張表進行加鎖,而不是行。 並發:在讀資料的時候,所有的表上都可以獲得共用鎖定(讀鎖),每個串連都不互相干擾。 在寫資料的時候,獲得獨佔鎖定,會把整個表進行加鎖,而其他的串連請求(讀,寫請求)都處於等待中。> 修複表 >> 查看錶狀態
>> check一下表,看錶是否正常。
>> repair(修複) 一下表。呵呵,我的這張表是正常的。
> 列索引。可以基於BLOB或TEXT類型列的前500個字元,建立相關索引。 >> 給t2表添加一個text列。
>> 表結構如下
>> 為content欄位添加全文索引
>> 查看錶的索引情況
> 延遲更新索引。MYISAM 預設把DELAY_KEY_WRITE開啟, 整個選項是MYISAM引擎專屬的。
注意:在查詢結束後,不會將索引的改變資料寫入磁碟,而是改變記憶體中的索引資料。只有在清理緩衝區或關閉表時才將索引塊轉儲到磁碟。
> 壓縮表
>> 查看資料檔案位置
>> 壓縮檔
總結 myisam在索引層和壓縮層的卓越貢獻,所以我們經常把myisam用於slave層,供用戶端去讀取。而myisam在寫庫操作的時候會產生獨佔鎖定,如果寫操作一直佔用的話,那麼其他串連請求一直就處於等待中,從而造成堵塞,甚至能把伺服器dang掉。 參考檔案:《高效能MYSQL》