1. 程式人生 > >mysql學習->存儲引擎(Myisam)

mysql學習->存儲引擎(Myisam)

檢查 optimize 路徑 機制 span pair 困難 存儲格式 spa

查看當前的mysql存儲引擎:show engines \G或者show variables like ‘have%‘;

  技術分享

以上兩種方法查看當前的數據庫支持哪些存儲引擎,其中DISAVLED的記錄表示支持該存儲引擎,但是數據庫啟動的時候被禁用

在創建新表的時候可以通過ENGINE關鍵字來設置新建表的存儲引擎,不設置的時候會默認當前數據庫默認的引擎,可以設置的

技術分享

可以用alter table 數據庫定義語句來修改引擎:alter table t1 engine = innodb;

存儲引擎之間的區別

特點

Myisam

innodb

MENORY

MERGE

NDB

存儲限制 64TB 沒有
事務安全 支持
鎖機制 表鎖 行鎖 表鎖 表鎖 行鎖
B樹索引 支持 支持 支持 支持 支持
哈希索引 支持 支持
全文索引 支持
集群索引 支持
數據緩存 支持 支持 支持
索引緩存 支持 支持 支持 支持 支持
數據可壓縮 支持
空間使用 N/A
內存使用 中等
批量插入的速度
支持外鍵 支持

Myisam引擎:

  Myisam是mysql的默認引擎,Myisam不支持事務,也不支持外鍵,其優勢是訪問的速度

,對事務完整性沒有要求或者以SELECT,INSERT為主的應用基本上都可以使用這個引擎來創建表

  每個Myisam引擎在磁盤上存儲成3個文件,其文件名都和表名相同,但擴展名分別是

    .frm(存儲定義)

    .MYD(MYDdata,存儲數據)

    .MYI(MYIndex,存儲索引)

  數據文件和索引文件可以放置在不同的目錄,平均分布IO,獲得更快的速度

  要制定索引文件和數據文件的路徑,需要在創建表的時候通過DATA DIRECTORY和INDEX DIRECTORY語句指定,也就是說不同Myisam表的索引文件和數據文件可以放置到不同的路徑下,文件路徑需要的是絕對路徑,並且具有訪問權限

  註意:Myisam類型的表可能會損壞,原因會有很多種,損壞後的表不能訪問,會提示需要修復或者訪問後返回錯誤結果,可以使用CHECK TABLE語句來檢查Myisam表的健康,並用REPAIR TABLE 語句修復一個損壞的Myisam表。

  Myisam引擎的表還支持3種不同的存儲格式

    靜態(固定長度)表:靜態表為默認的存儲格式,靜態表中的字段都非變長字段,都是固定長度,優點是存儲非常迅速,容易緩存,出現故障容易回復,缺點是占用的空間比動態多,靜態表的數據會根據列的寬度來補足空格,但是在應用訪問的時候不會得到這些空格~

    最值得註意的是如果需要保存的內容後面本來就帶有空格,那麽在返回的時候也會被去掉

     技術分享

  動態表中包含變長字段,記錄不是固定長度的,這樣存儲的優點是占用的空間相對較少,但是長期頻繁的更新和刪除記錄會產生碎片,需要定期執行OPTIMIZE TABLE語句或myisamchk-r命令來改善性能,並且在出現故障時恢復相對比較困難

  壓縮表myisampack工具創建,占據非常小的磁盤空間,因為每個記錄是被單獨要鎖的,所以訪問只有非常小的訪問開支。

    

   

mysql學習->存儲引擎(Myisam)