Mysql 學習筆記一之Mysql 儲存引擎
一、查看錶的詳細狀態
mysql> show table status like '表名';
Name | Engine | rows | Auto_increament |
---|---|---|---|
user | InnoDB | 10 | 11 |
註釋:engine 表示是該表使用的儲存引擎
二、InnoDB儲存引擎
InnoDB的資料儲存在表空間中,採用MVCC(可以理解位row lock 的變種)來支援高併發,並且實現了四個隔離級別,預設的隔離級別式repeatable read ,並通過間隙鎖(next-key locking)策略來防止幻讀的出現,InooDB表式基於聚簇索引建立的,該索引對主鍵查詢有很高的效能,
知識連結:MVCC和悲觀鎖的介紹
三、MyISAM儲存引擎
MyISAM提供了大量的特性,包括全文索引、壓縮、空間函式(GIS)等,但是MyISAM不支援事務和行級鎖,而且在崩潰後無法進行安全恢復。MyISAM會將表儲存在兩個檔案中:資料檔案(.MYD)和索引檔案(.MYI)
MyISAM支援:加鎖與併發(沒有InnoDB採用MVCC的效率高)、恢復(mysql可以對此類表手工或自動執行檢查和修復)、索引、延遲更新索引鍵(極大的增強了寫入效能)。
四、Archive儲存引擎
Archive只支援insert和select操作,Archive引擎會快取所有的寫並利用zlib對插入的行進行壓縮,索引比MyISAM表的磁碟I/O更少,當是每次select查詢式都會進行全表掃描。
使用場景:日誌和資料採集類應用、需用進行快速insert操作的場合。
五、Memory儲存引擎
1.memory儲存引擎相比前面的一些儲存引擎,有點不一樣,其使用儲存在內從中的資料來建立表,而且所有的資料也都儲存在記憶體中。
2.每個基於memory儲存引擎的表實際對應一個磁碟檔案,該檔案的檔名和表名是相同的,型別為.frm。該檔案只儲存表的結構,而其資料檔案,都是儲存在記憶體中,這樣有利於對資料的快速處理,提高整個表的處理能力。
3.memory儲存引擎預設使用雜湊(HASH)索引,其速度比使用B-+Tree型要快,如果讀者希望使用B樹型,則在建立的時候可以引用。
4.memory儲存引擎檔案資料都儲存在記憶體中,如果mysqld程序發生異常,重啟或關閉機器這些資料都會消失。所以memory儲存引擎中的表的生命週期很短,一般只使用一次。
六、修改表的儲存引擎
mysql> alter talbe [表名] engine=[儲存引擎];
註釋[儲存引擎]: inoodb 、myisam 、archive......
七、修改表的儲存型別
mysql>alter table [表名] convert to character set 'utf-8';