MySQL 儲存引擎

2021-09-26 07:14:39 字數 2864 閱讀 3524

對資料進行儲存時,通過使用不同的儲存機制、索引技術和鎖定技巧等,獲得不同的效能或功能,從而適用於某一情景的使用。

(1)預設表型別,基於傳統的isam型別,isam是indexed sequential access method(有索引的順序訪問方法)的縮寫,是儲存記錄和檔案的標準方法。myisam不是事務安全的,而且不支援外來鍵,如果執行大量的select,myisam比較合適。

innodb:

(1)innodb支援事務安全、外來鍵、行鎖,這是它最大的特點,如果有大量的update、insert,建議使用innodb,特別是針對多個併發和qps(queries per second)較高的情況。

myisam:

(1)只支援表級鎖,使用者在操作myisam表時,select、update、delete、insert語句都會給表自動加鎖,如果加鎖以後的表滿足insert併發的情況下,可以在表的尾部插入新的資料。可以使用lock table命令來鎖表,這樣操作主要是可以模仿事務,但是消耗很大,通常實際中並不使用。

innodb:

(1)支援事務和行級鎖,是innodb的最大特色。innodb的行鎖模式有共享鎖、排他鎖、意向共享鎖(表鎖)、意向排他鎖(表鎖)和間隙鎖,當語句沒有使用索引時,innodb不能確定操作的行,這時候需要使用意向鎖(表鎖)。

(1)myisam屬於堆表,在磁碟上有三個檔案,每個檔案以表名開頭,副檔名指出檔案型別

.frm:用於儲存表的定義

.myd:用於存放資料

.myi:用於存放表索引

(2)myisam表支援三種不同的儲存格式,分別是靜態表(預設)、動態表和壓縮表。

innodb:

(1)屬於索引組織表

(2)innodb表支援兩種儲存方式,分別是共享表空間儲存和多表空間儲存,兩種儲存方式的表結構和myisam相同,以表名開頭,副檔名是.frm。

(3)如果使用共享表空間,那麼所有表的資料檔案和索引檔案都儲存在乙個表空間裡,乙個表空間可以有多個檔案,通過innodb_data_file_path和innodb_data_home_dir引數設定共享表空間的位置和名字,通常共享表空間的名字是ibdata1-n。

(4)如果使用多表空間,那麼每個表都有乙個表空間檔案用於儲存每個表的資料和索引,檔名以表名開頭,以.ibd為副檔名。

4.4.1 關於自動增長
myisam:

(1)自動增長列必須是索引,如果是組合索引,自動增長可以不是第一列,可以根據前面幾列進行排序後遞增

innodb:

(1)自動增長列必須是索引,如果是組合索引則必須是組合索引的第一列

4.4.2 關於主鍵

innodb:

(1)innodb引擎如果沒有設定主鍵或者非空唯一索引,則會自動生成乙個6位元組的主鍵(使用者不可見)

(2)innodb的資料是主索引的一部分,附加索引儲存的是主索引的值

4.4.3 關於count()函式
myisam:

(1)myisam儲存有表的總行數,如果select count(*) from table;會直接取出該值

innodb:

(1)innodb沒有儲存表的總行數,如果使用select count(*) from table;就會遍歷整個表,消耗很大,但是在加了where條件之後,myisam和innodb處理方式相同

4.4.4 關於全文索引
myisam:

(1)myisam支援fulltext型別的全文索引

innodb:

(1)innodb不支援fulltext型別的全文索引,但是innodb可以使用sphinx外掛程式支援全文索引,並且效果更好(sphinx 是乙個開源軟體,提供多種語言的api介面,可以優化mysql的各種查詢)

4.4.5 delete from table
使用這條命令時,innodb不會從新建立表,而是一條一條的刪除資料,在innodb上如果要清空儲存有大量資料的表,最 好不要使用這個命令。(推薦使用truncate table,不過需要使用者有drop此表的許可權)

4.4.6 關於索引儲存位置
myisam:

(1)myisam的索引以表名+myi檔案分別儲存

innodb:

(1)innodb的索引和資料一起儲存在表空間裡

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

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

mysql個儲存引擎 MySQL儲存引擎

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

mysql儲存引擎模式 mysql儲存引擎

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