2、MySql存儲引擎簡介(筆記)

MySql體系

先來看一下MySql的架構圖:mysql

MySql的存儲引擎在架構的最下層,提供了各式各樣的存儲特性,下面介紹幾個經常使用的存儲引擎。sql

MyISAM

官方提供的一個存儲引擎,在數據庫的系統表和系統生成的臨時表,有時會用到該存儲引擎。數據庫

存儲方式

  • table.MYD:數據文件;
  • table.MYI:索引文件;
  • table.frm:結構文件;

特性

  • 表級鎖,查詢時使用共享鎖,修改時使用獨佔鎖;
  • 修復時,使用check table xxx 和 repair table xxx;
  • 索引,在5.7以前爲數很少的支持全文索引(Text和Blob前500個字符)和空間函數的存儲引擎;
  • 支持壓縮,使用mysiampack壓縮,會產生一個xxx.OLD文件,壓縮後表爲只讀模式;

限制

mysql5.0以前,單表大小默認不能超過4G,能夠用max_rows和avg_row_length修改。5.0之後的版本單表支持256TB。緩存

使用場景

  • 非事務OLAP應用,由於MYISAM不支持事務;
  • 只讀應用,由於壓縮後是隻讀模式,可是會節約磁盤空間;
  • 空間應用,5.7前惟一支持空間函數的存儲引擎;

InnoDB

數據

結構仍是存儲在.frm文件中,但innoDB有本身的表空間,以.idb結尾,也可使用系統表空間,可是不方便進行文件收縮,並且使用系統表空間,在多表操做時會有I/O瓶頸。服務器

特性

支持事務,由redo log和undo log實現,redo log提供了內存緩衝區和內存日子文件,以順序寫的方式執行提交的事務,undo log提供了回滾與MVCC功能架構

支持行級鎖,寫操做時的鎖定範圍更少,提升了併發能力。併發

innodb還提供了狀態檢查,使用 show engine innodo status 查看最近N秒的服務器狀態。函數

使用場景

  • 使用大多的OLTP應用;
  • 5.7後也有了全文索引和空間函數;
  • 是很是經常使用的一種存儲引擎,也是mysql如今默認的存儲引擎了;

CSV

數據

以.csv文件存儲數據,.csm文件存儲表狀態,.frm存儲結構;spa

特性

  • 全部列不能爲空;
  • 不支持索引;
  • 可直接編輯文件內容,內容以「aa」,"bb"格式存儲在.csv文件中;

場景

能夠用於數據交換,看成中間表使用。日誌

Archive

數據

  • 以zlib存儲數據,會對數據進行壓縮,比例很高;
  • 以.ARZ文件存儲;

特色

  • 只支持insert和select;
  • 能夠在自增列上建立索引;

場景

  • 適合保存日誌;
  • 適合數據採集類應用;

Memary

數據

也叫HEAP,數據保存在內存中,文件只有一個.frm文件,保存結構。

特色

  • 支持HASH和BTree索引,Hash用做等值,BTree用做範圍;
  • 全部字段都是固定長度的;
  • 不支持BLOG和TEXT;
  • 使用了表級鎖;
  • 表大小由max_heap_table_size決定;

場景

  • 映射表;
  • 分析數據用的中間表;
  • 緩存週期性數據;
相關文章
相關標籤/搜索