MySQL系列:存儲引擎簡介

一、存儲引擎

 1.Mariadb存儲引擎

       存儲引擎就是指表的類型決定了表在計算機中的存儲方式,在MySQl是一個插入式的存儲引擎概念。決定了MySQl數據庫中的表可以使用不同的存儲方式存儲。

 2.mysql支持的存儲引擎(Mariadb-servver5.5.44)

        MariaDB[(none)]> SHOW ENGINES;

wKiom1ckEsfSObJaAAHcJRZhs-A362.png

    說明:

         MariaDB 中類似Innodb的存儲引擎實際上爲XtraDB (percona社區提供)  InnoDB的增強改進,但仍然叫做InnoDB

 

 

 

二、Innodb存儲引擎

 1.Innodb特性概述

    (1) 處理大量的短期()事務;具有自動崩潰恢復特性

    (2) 數據存儲於"表空間(tablespace)"中;自行管理的黑盒;其內部組織爲多個文件,表現爲一個文件

    (3) 可直接存儲於裸設備中,而無需文件系統支持

    (4)基於MVCC來支持高併發,支持所有的四個隔離級別,默認級別爲REPEATABLEREAD(可重讀功能); 間隙鎖防止幻讀;

    (5)Innodb使用聚集索引;也支持"自適應hash索引"(無法顯示創建,InnoDB內部自行維護)

    (6)鎖粒度:行級鎖(一部分內容)

 

 2.innodb表空間存儲方式

     (1) 所有InnoDB表的數據和索引放置於同一個表空間中;表空間文件存儲於datadir定義的目錄下

      數據文件(存儲數據和索引)ibddata1, ibddata2, ...存滿了自動擴張,可限制單個表的物理空間大小

    (2) 每個表單獨使用一個表空間存儲表的數據和索引;才能實現各種高級功能

參數:innodb_file_per_table=ON

數據文件(存儲數據和索引):tbl_name.ibd,

表格式定義(每個表多少字段,每個字段的名稱等信息):tbl_name.frm

注意:

    此方式存儲數據當清空表數據,而不會清空表格式;因爲數據和文件使用不同的文件分開存儲

 

 

 

三、MyISAM存儲引擎

 1.MyISAM概述

   (1)特性

      最早的存儲引擎,也最成熟。早些服務於數據倉庫(較少的插入操作但是較多的讀操作的場景),不適用於在線事務處理的應用場景。

支持全文索引(FULLTEXTindex)

支持直接對錶數據壓縮

 支持空間函數(GIS)

不支持事務,且爲表級鎖(鎖粒度粗糙)

崩潰後無法安全恢復,可以手動check恢復,但時間長

      注意

          MariadbMyISAM做了增強,爲Aria存儲引擎;其支持崩潰後安全恢復

   (2)適用場景

            只讀(或者寫較少)、表較小(可以接受長時間進行修復操作)

 

  2.數據文件存儲

每個表有三個文件進行數據的存儲

表格式定義文件

tbl_name.frm

數據文件

tbl_name.MYD

索引文件

tbl_name.MYI

          行格式:

                dynamic變長字段動態行, fixed固定長度的行長短, compressed  壓縮後存放, compact緊緻的, redundent冗餘方式

 

 

 

四、MySQL支持的其它存儲引擎

  1.CSV:將普通的CSV(字段通過逗號分隔)作爲MySQL表使用;

  2.MRG_MYISAM:將多個MyISAM表合併成爲一個虛擬表;

  3.BLACKHOLE:類似於/dev/null,不真正存儲任何數據;

  4.MEMORY:所有數據都保存於內存中,內存表;支持hash索引;表級鎖;一般用於對臨時表採取的操作

  5.PERFORMANCE_SCHEMA:僞存儲引擎;mysql關閉會消失不見

  6.ARCHIVE:只支持SELECT和INSERT操作;支持行級鎖和專用緩存區;不支持事務;可用於數據倉庫,做不可能發生改變,歸檔保存的不再做修改的歷史數據

  7.FEDERATED:用於訪問其它遠程MySQL服務器一個代理,它通過創建一個到遠程MySQL服務器的客戶端連接,並將查詢傳輸到遠程服務器執行,而後完成數據存取;在MariaDB的上實現是FederatedX

  8.其他

OQGraphSphinxSETokuDBCassandraCONNECTSQUENCE

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