mysql的儲存引擎

2021-09-12 09:11:32 字數 1525 閱讀 5824

mysql會在資料庫的子目錄下建立乙個和表同名.frm檔案儲存表的定義

show table status like 『user』

顯示的字段主要包含以下幾個

engine:儲存引擎

index_length:索引大小

data_free:已分配但還沒有使用的空間

…myisam

innodb

表鎖行鎖,在不能確定掃瞄範圍時,也會鎖表.例如:updata table set num=1 where name like 「%aa%」

支援全文索引,sql語句是:explain select * from stu where match(text) against(『***』)

不支援fulltext型別的全文索引,但是innodb可以使用sphinx外掛程式支援全文索引,並且效果更好。

不支援事務

支援事務

不支援外來鍵

支援外來鍵

儲存行數

不儲存行數,在select count(*)掃瞄全表

表存放三個檔案。.frm檔案存放**定義 .myd是資料檔案,索引檔案是.myi

資料和索引放在表空間裡

可被壓縮,儲存空間小,myisam的索引和資料是分開的,並且索引是有壓縮的,記憶體使用率就對應提高了不少,能載入更多索引

innodb是索引和資料是緊密**的,沒有使用壓縮從而會造成innodb比myisam體積龐大不小

memory引擎:

如果需要快速的訪問資料,並且這些資料不會被修改,重啟以後丟失也沒有關係,那麼使用memory表很有用,比myisam快乙個數量級,並且所有資料都儲存在記憶體中,不需要進行磁碟i/o。memory支援hash查詢快,是表鎖併發寫入效能低,每行長度固定,即使時varchar也會變為char,可能導致記憶體的浪費。mysql查詢過程中臨時表的儲存的中間結果便是memory表

alter table mytable engine = innodb

上述語法適合所有儲存引擎,但是執行時間很長,mysql會按行將資料從原表複製到一張新錶,複製期間會消耗系統所有的i/o能力,同時原表會加讀鎖。

或者採用匯出匯入的方法:可以使用musqldump工具將資料匯出,然後修改create table語句中的儲存引擎選項,同時注意修改表名。

最好採用建立與查詢方法:

create table innodb_table like myisam_table;

alter table innodb_table engine = innodb;

insert into innodb_table select * from mysiam_table;

如果表的資料大可以分批

start transaction;

insert into innodb_table select * from mysiam_table where id between x and y;

commit;

mysql的儲存引擎有 mysql儲存引擎有哪些?

儲存引擎是資料庫管理系統用來從資料庫建立 讀取和更新資料的軟體模組。mysql中有兩種型別的儲存引擎 事務型和非事務型。對於mysql 5.5及更高版本,預設的儲存引擎是innodb。在5.5版本之前,mysql的預設儲存引擎是myisam。那麼mysql儲存引擎有哪些?一 innodb 這是mys...

mysql儲存引擎 mysql儲存引擎簡介

精品推薦 什麼是儲存引擎 mysql儲存引擎是資料庫如何儲存資料 怎樣建立索引以及如何查詢更新資料等技術的實現方法,資料通過使用不同的技術儲存在檔案中,使用不同的儲存機制 索引方式來提供不同的功能。在mysql這種關係型資料中心來說,資料是以表的方式來儲存的,因此,簡單點來說,儲存引擎就是儲存和操作...

mysql個儲存引擎 MySQL儲存引擎

mysql資料庫的體系架構如下圖所示 從上圖中可以看出,mysql主要分為以下幾個元件 連線池元件 管理服務和工具元件 sql介面元件 分析器元件 優化器元件 緩衝元件 外掛程式式儲存引擎 物理檔案 儲存引擎 其實就是指定表如何儲存資料,如何為儲存的資料建立索引以及如何更新 查詢資料等技術實現的方法...