mysql的儲存引擎

2021-10-02 04:38:00 字數 3665 閱讀 8424

mysql的資料庫儲存引擎 

資料庫的儲存引擎是資料庫底層軟體組織,資料庫管理系統(dbms)使用資料引擎進行建立、查詢、更新和刪除資料。不同的儲存引擎提供不同的儲存機制、索引技巧、鎖定水平等功能,使用不同的儲存引擎,還可以 獲得特定的功能。mysql的核心就是儲存引擎。最知名的是innodb和myisam。

1.儲存引擎的檢視

檢視資料庫可配置的儲存引擎:     show engines;

檢視資料庫正在使用的儲存引擎:   

show table status from 庫 where name='表1';    #檢視表1正在使用的儲存引擎

2.儲存引擎的配置

通過命令修改

use 庫;      #進入資料庫

alter table 表1 engine=myisam; #修改儲存引擎為myisam

alter table 表2 engine=innodb; #修改儲存引擎為innodb

建立表時指定儲存引擎

use 庫;    #進入庫

create table 表1(id int)engine=innodb; #修改儲存引擎為innodb

create table 表2(id int)engine=myisam; #修改儲存引擎為myisam

show create table 表; #檢視

通過配置檔案修改,僅對之後新建的表有效

vim /etc/my.cnf

......

[mysqld]

default--storage-engine=myisam //新增你要設為預設的儲存引擎

我這裡使用的是mysql5.7,通過檢視可知

yes表示可以使用、no表示不能使用、default表示該引擎為當前預設的儲存引擎 。下面來看一下其中幾種常用的引擎。

innodb儲存引擎

innodb是事務型資料庫的首選引擎,還是mysql預設的引擎。innodb給mysql的表提供了事務、回滾、崩潰修復能力、多版本併發控制的事務安全、間隙鎖(可以有效的防止幻讀的出現)、支援輔助索引、聚簇索引、自適應hash索引、支援熱備、行級鎖。還有innodb是mysql上唯一乙個提供了外來鍵約束的引擎。其主要特徵有:

1)innodb給mysql提供了具有提交、回滾和崩潰恢復能力的事物安全(acid相容)儲存引擎。innodb鎖定在行級並且也在select語句中提供乙個類似oracle的非鎖定讀。這些功能增加了多使用者部署和效能。在sql查詢中,可以自由地將innodb型別的表和其他mysql的表型別混合起來,甚至在同乙個查詢中也可以混合。

2)innodb是為處理巨大資料量的最大效能設計。它的cpu效率可能是任何其他基於磁碟的關係型資料庫引擎鎖不能匹敵的。

3)innodb儲存引擎完全與mysql伺服器整合,innodb儲存引擎為在主記憶體中快取資料和索引而維持它自己的緩衝池。innodb將它的表和索引在乙個邏輯表空間中,表空間可以包含數個檔案(或原始磁碟檔案)。這與myisam表不同,比如在myisam表中每個表被存放在分離的檔案中。innodb表可以是任何尺寸,即使在檔案尺寸被限制為2gb的作業系統上。

4)innodb支援外來鍵完整性約束,儲存表中的資料時,每張表的儲存都按主鍵順序存放,如果沒有顯示在表定義時指定主鍵,innodb會為每一行生成乙個6位元組的rowid,並以此作為主鍵。

5)innodb被用在眾多需要高效能的大型資料庫站點上。

6)1.innodb不支援fulltext(全文索引)型別的索引。

innodb不建立目錄,使用innodb時,mysql將在mysql資料目錄下建立乙個名為ibdata1的10mb大小的自動擴充套件資料檔案,以及兩個名為ib_logfile0和ib_logfile1的5mb大小的日誌檔案。

myisam儲存引擎

myisam基於isam儲存引擎,並對其進行擴充套件。myisam支援全文索引、壓縮存放、空間索引(空間函式)、表級鎖、延遲更新索引鍵。但是myisam不支援事務、行級鎖、更無法忍受的是崩潰後不能保證完全恢復(只能手動修復)。

myisam儲存引擎的插入資料很快,空間和記憶體使用比較低。如果表主要是用於插入新記錄和讀出記錄,那麼選擇myisam儲存引擎能夠實現處理的高效率。如果應用的完整性、併發性要求很低,也可以選擇myisam儲存引擎。

myisam的特徵

1)可以把資料檔案和索引檔案放在不同目錄。

2)表級鎖定形式,資料在更新時鎖定整個表。

3)資料庫讀寫過程中相互阻塞。

4)可以通過key_buffer_size來設定快取索引。

5)資料單獨寫入或讀取速度快占用資源少。

6)不支援外來鍵約束,只支援全文索引。

7)建表時會生成三個檔案,檔名均以表的名字開始。

顯而易見myisam的適用於非事務型應用,唯讀類應用,空間類應用

不同的引擎在儲存表的結構和資料時採用不同的方式

myisam表檔案含義:.frm表定義,.myd表資料,.myi表索引

innodb表檔案含義:.frm表定義,表空間資料和日誌檔案

show engines -- 顯示儲存引擎的狀態資訊

show engine 引擎名 -- 顯示儲存引擎的日誌或狀態資訊

innodb和myisam的主要區別:

1. myisam 不支援事務處理等高階處理,強調的是效能,其執行速度比 innodb 更快,但是不提供事務支援,而 innodb 提供事務支援、外部鍵等高階資料庫功能。

2.myisam的索引和資料是分開的,並且索引是有壓縮的,記憶體使用率就對應提高了不少。能載入更多索引,而innodb的索引和資料是緊密**的,沒有使用壓縮從而會造成innodb比myisam體積龐大。

memory儲存引擎

memory儲存引擎是mysql中的一類特殊的儲存引擎。其使用儲存在記憶體中的記憶體來建立表,而且所有資料儲存在記憶體中。資料安全性很低,但是查詢和插入速度很快。如果記憶體出現異常就會影響到資料的完整性,如果重啟或關機,表中的所有資料就會丟失,因此基於memory儲存引擎的表的生命週期很短,一般都是一次性的。適用於某些特殊場景像查詢和對映,快取週期性的聚合資料等等。

blackhome儲存引擎

blackhome叫做黑洞,也就是說沒有儲存機制,任何資料都會被丟棄,但是會記錄二進位制日誌。一般在mysql複製(中繼伺服器)中經常用到。

csv儲存引擎

csv是將資料檔案儲存為csv格式的的檔案的,可以方便的匯入到其他資料庫中去(如:excel**,sqlserver等等),需要在資料庫間自由共享資料時才偶爾建議使用此儲存引擎。並且它也不支援索引。

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

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

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

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

mysql個儲存引擎 MySQL儲存引擎

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