mysql 自定義儲存引擎 MySQL儲存引擎

2021-10-20 22:35:13 字數 1972 閱讀 5190

在mysql中,不需要在整個伺服器中使用同一種儲存引擎,針對具體的要求,可以對每乙個表使用不同的儲存引擎。

一、myisam

1. 不支援事務,也不支援外來鍵,但訪問速度快,對事務完整性沒有要求或者以select、insert為主的應用基本都可以使用這個引擎來建立表。

2. 使用myisam引擎建立資料庫表,將產生3個檔案。其中檔名和表名都相同,副檔名分別為:

.frm(儲存表定義)、.myd(mydata,儲存資料)、.myi(myindex,儲存索引),如下圖所示:表t4一共有三個檔案

node:資料檔案和索引檔案放在不同目錄,以平均分配io,獲取更快的速度。

3. myisam引擎使用b+tree作為索引結構,葉節點的data域存放的是資料記錄的位址。

二、innodb(mysql預設的儲存引擎)

innodb是乙個健壯的事務型儲存引擎,支援行級鎖定和外來鍵約束

在以下場合下,使用innodb是最理想的選擇:

1.更新密集的表。innodb儲存引擎特別適合處理多重併發的更新請求。

2.事務。innodb儲存引擎是支援事務的標準mysql儲存引擎。

3.自動災難恢復。與其它儲存引擎不同,innodb表能夠自動從災難中恢復。

4.外來鍵約束。mysql支援外來鍵的儲存引擎只有innodb。

5.支援自動增加列auto_increment屬性。

一般來說,如果需要事務支援,並且有較高的併發讀取頻率,innodb是不錯的選擇。

innodb 和 myisam之間的區別:

1>.innodb支援事物,而myisam不支援事物

2>.innodb支援外來鍵,而myisam不支援

3>.innodb支援行級鎖,而myisam支援表級鎖

4>.innodb支援mvcc, 而myisam不支援

5>.innodb不支援全文索引,而myisam支援。

6>.innodb和myisam索引區別

雖然innodb也使用b+tree作為索引結構,但具體實現方式卻與myisam截然不同。

1). innodb的資料檔案本身就是索引檔案。

2). innodb的輔助索引data域儲存相應記錄主鍵的值而不是位址

三、memory

memory儲存引擎的出發點是速度(memory儲存引擎將表中的資料儲存到系統記憶體中)

一般在以下幾種情況下使用memory儲存引擎:

1.目標資料較小,而且被非常頻繁地訪問。在記憶體中存放資料,所以會造成記憶體的使用,可以通過引數max_heap_table_size控制memory表的大小,設定此引數,就可以限制memory表的最大大小。

2.如果資料是臨時的,而且要求必須立即可用,那麼就可以存放在記憶體表中。

3.儲存在memory表中的資料如果突然丟失,不會對應用服務產生實質的負面影響。

memory同時支援雜湊索引和b樹索引。

儲存在記憶體中帶來的問題

1. 當mysqld守護程序崩潰時,所有的memory資料都會丟失。

2. 因為儲存在記憶體中,所以要求儲存在memory資料表裡的資料使用的是長度不變的格式,這意味著不能使用blob和text這樣的長度可變的資料型別,varchar是一種長度可變的型別,但因為它在mysql內部當做長度固定不變的char型別,所以可以使用。

四、archive

archive是歸檔的意思,在歸檔之後很多的高階功能就不再支援了,僅僅支援最基本的插入和查詢兩種功能。

在mysql 5.5版以前,archive是不支援索引,但是在mysql 5.5以後的版本中就開始支援索引了。archive擁有很好的壓縮機制,它使用zlib壓縮庫,在記錄被請求時會實時壓縮,所以它經常被用來當做倉庫使用。

五、merge(mysql5.0中名為:mrg_myisam)

merge儲存引擎是一組myisam表的組合

參考:

自定義模板引擎

類檔案my config.class.php class smarty 呼叫模板 public function display temp reg 替換成 arr 模式單元雙引號加 place this arr 1 獲取替換後的 html preg replace reg place str 編譯檔...

mysql 自定義 sequence 儲存過程

mysql本身是沒有sequence的但是我可以自己建立sequence儲存過程.首先我們先建立相關的表,和儲存過程.第一步是建立規則表.drop table if exists seq create table seq id bigint 11 not null auto increment,na...

mysql自定義函式優點 MySQL自定義函式

在使用 mysql 的過程中,mysql 自帶的函式可能完成不了我們的業務需求,這時候就需要自定義函式。自定義函式是一種與儲存過程十分相似的過程式資料庫物件。它與儲存過程一樣,都是由 sql 語句和過程式語句組成的 片段,並且可以被應用程式和其他 sql 語句呼叫。自定義函式與儲存過程之間存在幾點區...