mysql儲存引擎

2021-09-09 08:22:22 字數 1814 閱讀 7888

myisam是mysql預設儲存引擎

缺點: myisam不支援事物也不支援外來鍵

優點: 訪問速度快

使用場景: 對事物完整性沒有要求或者以select,insert為主的應用基本上都可以使用這個引擎建立表

myisam 的表又支援 3 種不同的儲存格式,分別是:

靜態(固定長度)表;

動態表;

壓縮表。

其中,靜態表是預設的儲存格式。靜態表中的字段都是非變長字段,這樣每個記錄都是固定長度的,這種儲存方式的優點是儲存非常迅速,容易快取,出現故障容易恢復;缺點是占用的空間通常比動態表多。靜態表的資料在儲存的時候會按照列的寬度定義補足空格,但是在應用訪問的時候並不會得到這些空格,這些空格在返回給應用之前已經去掉。但是也有些需要特別注意的問題,如果需要儲存的內容後面本來就帶有空格,那麼在返回結果的時候也會被去掉,開發人員在編寫程式的時候需要特別注意,因為靜態表是預設的儲存格式,開發人員可能並沒有意識到這一點,從而丟失了尾部的空格。

動態表中包含變長字段,記錄不是固定長度的,這樣儲存的優點是占用的空間相對較少,但是頻繁地更新刪除記錄會產生碎片,需要定期執行 optimize table 語句或 myisamchk -r 命令來改善效能,並且出現故障的時候恢復相對比較困難。

壓縮表由 myisampack 工具建立,佔據非常小的磁碟空間。因為每個記錄是被單獨壓縮的,所以只有非常小的訪問開支。

innodb 儲存引擎?供了具有?交、回滾和崩潰恢復能力的事務安全。但是對比 myisam的儲存引擎,innodb 寫的處理效率差一些並且會占用更多的磁碟空間以保留資料和索引。

自動增長列

: innodb 表的自動增長列可以手工插入,但是插入的值如果是空或者 0,則實際插入的將是自動增長後的值。

可以通過「alter table *** auto_increment = n;」語句強制設定自動增長列的初識值,預設從 1 開始,但是該強制的預設值是保留在記憶體中的,如果該值在使用之前資料庫重新啟動,那麼這個強制的預設值就會丟失,就需要在資料庫啟動以後重新設定。

可以使用 last_insert_id()查詢當前執行緒最後插入記錄使用的值。如果一次插入了多條記錄,那麼返回的是第一條記錄使用的自動增長值。

對於 innodb 表,自動增長列必須是索引。如果是組合索引,也必須是組合索引的第一列,但是對於 myisam 表,自動增長列可以是組合索引的其他列,這樣插入記錄後,自動增長列是按照組合索引的前面幾列進行排序後遞增的。

外來鍵約束

mysql 支援外來鍵的儲存引擎只有innodb,在建立外來鍵的時候,要求父表必須有對應的索引,子表在建立外來鍵的時候也會自動建立對應的索引。

在建立索引的時候,可以指定在刪除、更新父表時,對子表進行的相應操作,包 restrict、cascade、set null 和 no action。其中 restrict 和 no action 相同,是指限制在子表有關聯記錄的情況下父表不能更新;cascade表示父表在更新或者刪除時,更新或者刪除子表對應記錄;set null 則表示父表在更新或者刪除的時候,子表的對應欄位被 set null。選擇後兩種方式的時候要謹慎,可能會因為錯誤的操作導致資料的丟失。

當某個表被其他表建立了外來鍵參照,那麼該錶的對應索引或者主鍵禁止被刪除。在匯入多個表的資料時,如果需要忽略表之前的匯入順序,可以暫時關閉外來鍵的檢查;同樣,在執行 load data 和 alter table 操作的時候,可以通過暫時關閉外來鍵約束來加快處理的速度,關閉的命令是「set foreign_key_checks = 0;」,執行完成之後,通過執行「set foreign_key_checks = 1;」語句改回原狀態。

儲存方式

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

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

mysql個儲存引擎 MySQL儲存引擎

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

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

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