mysql中常用的幾種儲存引擎:innodb、bdb、myisam、memory以及這幾個引擎的講解;
innodb儲存引擎:
(1) innodb儲存引擎該mysql表提供了事務,回滾以及系統崩潰修復能力和多版本迸發控制的事務的安全。
(2)innodb支援自增長列(auto_increment),自增長列的值不能為空,如果在使用的時候為空的話怎會進行自動存現有的值開始增值,如果有但是比現在的還大,則就儲存這個值。
(3)innodb儲存引擎支援外來鍵(foreign key) ,外來鍵所在的表稱為子表而所依賴的表稱為父表。
(4)innodb儲存引擎最重要的是支援事務,以及事務相關聯功能。
(5)innodb儲存引擎支援mvcc的行級鎖。
myisam儲存引擎:
1、myisam這種儲存引擎不支援事務,不支援行級鎖,只支援併發插入的表鎖,主要用於高負載的select。
2、myisam型別的表支援三種不同的儲存結構:靜態型、動態型、壓縮型。
(1)靜態型:就是定義的表列的大小是固定(即不含有:xblob、xtext、varchar等長度可變的資料型別),這樣mysql就會自動使用靜態myisam格式。
使用靜態格式的表的效能比較高,因為在維護和訪問的時候以預定格式儲存資料時需要的開銷很低。但是這高效能是有空間換來的,因為在定義的時候是固定的,所以不管列中的值有多大,都會以最大值為準,佔據了整個空間。
(2)動態型:如果列(即使只有一列)定義為動態的(xblob, xtext, varchar等資料型別),這時myisam就自動使用動態型,雖然動態型的表占用了比靜態型表較少的空間,但帶來了效能的降低,因為如果某個欄位的內容發生改變則其位置很可能需要移動,這樣就會導致碎片的產生。隨著資料變化的怎多,碎片就會增加,資料訪問效能就會相應的降低。
對於因為碎片的原因而降低資料訪問性,有兩種解決辦法:
@1、盡可能使用靜態資料型別
@2、經常使用optimize table語句,他會整理表的碎片,恢復由於表的更新和刪除導致的空間丟失。
(3)壓縮型:如果在這個資料庫中建立的是在整個生命週期內唯讀的表,則這種情況就是用myisam的壓縮型表來減少空間的占用。
memory儲存引擎:
(1)memory儲存引擎相比前面的一些儲存引擎,有點不一樣,其使用儲存在內從中的資料來建立表,而且所有的資料也都儲存在記憶體中。
(2)每個基於memory儲存引擎的表實際對應乙個磁碟檔案,該檔案的檔名和表名是相同的,型別為.frm。該檔案只儲存表的結構,而其資料檔案,都是儲存在記憶體中,這樣有利於對資料的快速處理,提高整個表的處理能力。
(3)memory儲存引擎預設使用雜湊(hash)索引,其速度比使用b-+tree型要快,如果讀者希望使用b樹型,則在建立的時候可以引用。
(4)memory儲存引擎檔案資料都儲存在記憶體中,如果mysqld程序發生異常,重啟或關閉機器這些資料都會消失。所以memory儲存引擎中的表的生命週期很短,一般只使用一次。
blackhole儲存引擎:
(1)支援事務,而且支援mvcc的行級鎖,主要用於日誌記錄或同步歸檔,這個儲存引擎除非有特別目的,否則不適合使用!
Mysql 儲存引擎之 MyISAM儲存引擎
myisam是預設儲存引擎。每個myisam在磁碟上儲存成三個檔案。frm檔案儲存表定義 myd檔案儲存資料 myi檔案儲存索引。要明確表示你想要用乙個myisam 請用engine表選項指出來 create table test myisam id int engine myisam 2 如下是m...
mysql儲存引擎 mysql儲存引擎簡介
精品推薦 什麼是儲存引擎 mysql儲存引擎是資料庫如何儲存資料 怎樣建立索引以及如何查詢更新資料等技術的實現方法,資料通過使用不同的技術儲存在檔案中,使用不同的儲存機制 索引方式來提供不同的功能。在mysql這種關係型資料中心來說,資料是以表的方式來儲存的,因此,簡單點來說,儲存引擎就是儲存和操作...
mysql個儲存引擎 MySQL儲存引擎
mysql資料庫的體系架構如下圖所示 從上圖中可以看出,mysql主要分為以下幾個元件 連線池元件 管理服務和工具元件 sql介面元件 分析器元件 優化器元件 緩衝元件 外掛程式式儲存引擎 物理檔案 儲存引擎 其實就是指定表如何儲存資料,如何為儲存的資料建立索引以及如何更新 查詢資料等技術實現的方法...