最近看mysql的時候,總結了一下儲存引擎的一些特點,此特記錄一下,部分參考其他博文
儲存引擎 簡介
儲存引擎通俗的說就是如何儲存資料、如何為儲存的資料建立索引和如何更新、查詢資料等技術的實現方法。
因為在關聯式資料庫中資料的儲存是以表的形式儲存的,所以儲存引擎也可以稱為表型別(即儲存和操作此表的型別)。
oracle和sql server等資料庫只有一種儲存引擎,所有資料儲存管理機制都是一樣的;而mysql資料庫提供了多種儲存引擎,使用者可以根據不同的需求為資料表選擇不同的儲存引擎,使用者也可以根據自己的需要編寫自己的儲存引擎。
mysql常用引擎
mysql 中目前廣泛使用的是 myisam 和 innodb 兩種引擎
myisam
myisam 引擎是 mysql 5.1 及之前版本的預設引擎,它的特點是:
不支援行鎖,讀取時對需要讀到的所有表加鎖,寫入時則對錶加排它鎖
不支援事務
不支援外來鍵
不支援崩潰後的安全恢復
在表有讀取查詢的同時,支援往表中插入新紀錄
支援 blob 和 text 的前500個字元索引,支援全文索引
支援延遲更新索引,極大提公升寫入效能
對於不會進行修改的表,支援壓縮表,極大減少磁碟空間占用
innodb
innodb 在 mysql 5.5 及以後成為預設索引,它的特點是:
支援行鎖,採用 mvcc 來支援高併發
支援事務
支援外來鍵
支援崩潰後的安全恢復
不支援全文索引
innodb 是乙個事務型儲存引擎,為使用者操作非常大的資料儲存提供了乙個強大的解決方案,已經被很多網際網路公司使用。
在以下場合下,使用innodb是最理想的選擇:
更新密集的表:innodb儲存引擎特別適合處理多重併發的更新請求。
事務:innodb 儲存引擎是支援事務的標準mysql儲存引擎。
自動災難恢復:與其它儲存引擎不同,innodb表能夠自動從災難中恢復。
外來鍵約束:mysql支援外來鍵的儲存引擎只有innodb。
支援自動增加列 auto_increment 屬性。
我們可以通過 show engines命令檢視支援的儲存引擎。
如果我們想直接檢視預設支援的引擎也可以使用show variables like 『storage_engine%』;命令實現。
mysql> show variables like 'storage_engine%';
+----------------+--------+
| variable_name | value |
+----------------+--------+
| storage_engine | innodb |
+----------------+--------+
1 row in set (0.00 sec)
不過這個命令有點不大好記,所以一般情況下我都是使用show engines;命令,其結果的support 字段值為default的即是預設引擎。
更改預設支援的引擎
mysql5.5預設支援的儲存引擎為 innodb 我們也可以通過修改配置檔案來實現讓其預設支援其它的資料庫。
windows下修改mysql.ini檔案中的default-storage-engine=***配置項。
linux下修改my.cnf檔案中的default_storage_engine = ***配置項。
值得注意的是:
上面的***代指的是你想要的儲存引擎
如果linux系統下你找不到my.cnf檔案的位置 可以使用 whereis my.cnf命令進行檢視
#whereis my.cnf
修改完畢後一定要記得重啟mysql服務。
#service mysql restart
總結:
innodb、myisam與memary的區別及應用場景
1、myisam引擎的單錶儲存最大值是由計算機的檔案系統限制的,而innodb的單錶最大值為64tb。
以上所說的是包括外來鍵,索引等在內的所有內容大小。
2、myisam占用和使用的空間(容量)低於innodb。
3、myisam和memary都支援表鎖,而innodb僅支援行鎖。
4、myisam是三者當中唯一支援資料壓縮和全文索引的儲存引擎。
5、myisam不支援資料快取,而innodb和memary支援。
6、innodb是三者中唯一支援事務,集群索引和外來鍵的儲存引擎。
7、memoey是三者中唯一支援雜湊索引的引擎,而innodb和myisam則是支援btree索引型別。
8、在高併發的狀態下myisam處理資料的速度會有很大的,而innodb則十定
因為myisam引擎不支援事務和外來鍵,所以整體速都比較快,但是在資料併發量較大的情況下其寫入速度會有很大的衰減,
可靠性遠不如innodb。所以在對資料的完整性沒有要求以及讀取請求為主的應用比較適合使引擎。
innodb引擎在事務的處理上和高併發處理上占有很大的優勢,是比較可靠的儲存引擎。但是其繁瑣資料處理模式以及
建立的大量外來鍵、事務等也注定了它將比innodb佔據更大的磁碟空間。因此在需要進行頻繁的寫操作並且對事務的
完整性比較高、需要實現併發控制的時候適合使用此引擎
memary引擎使用記憶體來儲存資料,它是三者中讀寫速度最快的引擎,同時也是三者中最不可靠的引擎。
因為資料儲存在記憶體中其安全性得不到保障,十分容易丟失。但是如果某個應用需要快速訪問,並且資料量比較小,
不妨考慮一下memary引擎
MySQL引擎簡述
mysql數 據庫引擎取決於mysql在安裝的時候是如何被編譯的。要新增乙個新的引擎,就必須重新編譯mysql。在預設情況下,mysql支援三個引擎 isam myisam和heap。另外兩種型別innodb和berkley bdb 也常常可以使用。如果技術高超,還可以使用mysql api自己做乙...
mysql儲存引擎 mysql儲存引擎簡介
精品推薦 什麼是儲存引擎 mysql儲存引擎是資料庫如何儲存資料 怎樣建立索引以及如何查詢更新資料等技術的實現方法,資料通過使用不同的技術儲存在檔案中,使用不同的儲存機制 索引方式來提供不同的功能。在mysql這種關係型資料中心來說,資料是以表的方式來儲存的,因此,簡單點來說,儲存引擎就是儲存和操作...
mysql個儲存引擎 MySQL儲存引擎
mysql資料庫的體系架構如下圖所示 從上圖中可以看出,mysql主要分為以下幾個元件 連線池元件 管理服務和工具元件 sql介面元件 分析器元件 優化器元件 緩衝元件 外掛程式式儲存引擎 物理檔案 儲存引擎 其實就是指定表如何儲存資料,如何為儲存的資料建立索引以及如何更新 查詢資料等技術實現的方法...