深入淺出MySQL 第七章 表類型(存儲引擎)的選擇 筆記

第七章 表類型(存儲引擎)的選擇

MySQL支持的儲存引擎

MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED 等,其中 InnoDB 和 BDB 提供事務安全表,其他存儲引擎都是非事務安全表。

修改表的儲存引擎

  • 在創建新表的時候,可以通過增加 ENGINE 關鍵字設置新建表的存儲引擎:

    CREATE TABLE ai (
    i bigint(20) NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (i)
    ) ENGINE=MyISAM DEFAULT CHARSET=gbk;

  • 使用ALTER TABLE 語句:

    alter table ai engine = innodb;

儲存引擎的特性對比

在這裏插入圖片描述

四種常用儲存引擎的介紹

MyISAM

  • 不支持事務、也不支持外鍵
  • 優勢:訪問速度快
  • 支持3中不同的儲存格式:靜態表;動態表;壓縮表。其中靜態表要注意空格問題。

應用場景:應用是以讀操作和插入操作爲主,只有很少的更新和刪除操作,並且對事務的完整性、併發性要求不是很高

InnoDB

  • 具有提交、回滾和崩潰恢復能力的事務安全
  • 對比MyISAM,該引擎處理效率差一些並且會佔用更多的磁盤空間以保留數據和索引。

InnoDB的特點

1.自動增長列

該列必須爲索引,如果是組合索引,也必須是組合索引的第一列。

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

可以通過“ALTER TABLE *** AUTO_INCREMENT = n;”語句強制設置自動增長列的初識值,默認從 1 開始。數據庫重啓後,該值會消失

2.外鍵約束

在創建外鍵的時候,要求父表必須有對應的索引,子表在創建外鍵的時候也會自動創建對應的索引。

兩種儲存方式:

  • 共享表空間存儲
  • 多表空間存儲

應用場景:應用對事務的完整性有比較高的要求,在併發條件下要求數據的一致性,數據操作除了插入和查詢以外,還包括很多的更新、刪除操作。

MEMORY

  • 使用存在內存中的內容來創建表
  • 每個 MEMORY 表只實際對應一個磁盤文件
  • 訪問速度快
  • 一旦數據庫服務關閉,表中的數據就會丟失掉

應用場景:主要用在那些內容變化不頻繁的代碼表,或者作爲統計操作的中間結果表,便於高效地對中間結果進行分析並得到最終的統計結果

MERGE

  • 是一組 MyISAM 表的組合,,這些 MyISAM 表必須結構完全相同
  • MERGE表本身並沒有數據
  • 可以對 MERGE 表進行 DROP 操作,這個操作只是刪除 MERGE 的定義,對內部的表沒有任何的影響

應用場景:優點在於可以突破對單個 MyISAM 表大小的限制,並且通過將不同的表分佈在多個磁盤上。用於數據倉儲等VLDB環境。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章