1. 程式人生 > >35、mysql儲存引擎

35、mysql儲存引擎

mysql 儲存引擎:儲存引擎也通常被稱作“表型別”


檢視所有支援的儲存引擎

SHOW ENGINES;


檢視指定表的儲存引擎

SHOW TABLE STATUS [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]

SHOW TABLE STATUS IN mydb\G;

SHOW TABLE STATUS IN mydb LIKE 't1'\G;


SHOW TABLE STATUS IN mydb WHERE Name='t1'\G;    

Name 表名

Engine 儲存引擎

Version 版本

Row_format 行格式

Rows 表中的行數

Avg_row_length 平均每行包含的位元組數

Data_length 表中資料總體大小,單位為位元組

Max_data_length 表能夠佔用的最大空間,單位為位元組,0表示沒有上限

Index_length 索引的大小,單位為位元組

Data_free 對於MyISAM表,表示已經分配但尚未使用的空間,其中包含此前刪除行之後騰出來的空間

Auto_increment 下一個AUTO_INCREMENT的值

Create_time 表的建立時間

Update_time 表資料的最後一次修改時間

Check_time 使用CHECK TABLE或myisamchk最近一次檢查表的時間

Collation 排序規則

Checksum 如果啟動,則為表的checksum

Create_options 建立表時指定使用的其他選項

Comment 表的註釋資訊


InnoDB

    兩種格式:

      1.innodb_file_per_table=OFF,即是用共享表空間

         每個表一個獨有的格式定義檔案:tb_name.frm

         還有一個預設位於資料目錄下的共享的表空間檔案:ibdata#

      2.innodb_file_per_table=ON,即是用獨立表空間

        每個表在資料庫目錄下儲存兩個檔案

          tb_name.frm

          tb_name.ibd

MyISAM:

   每個表都在資料庫目錄下儲存三個檔案

   tb_name.frm

   tb_name.MYD

   tb_name.MYI


表空間: table space ,由InnoDB管理的特有格式資料檔案,內部可同時儲存資料和索引

SHOW VARIABLES LIKE '%engine%';

如何修改預設儲存引擎:通過default_storage_engine服務變數實現


各儲存引擎的特性:

   InnoDB:

      支援事務,有事務日誌

      ib_logfile0

      ib_logfile1

      支援外來鍵約束(MyISAM不支援外來鍵)

      支援MVCC(多版本併發控制)

      支援聚簇索引(資料和索引存放在一起)

           聚簇索引之外的其他索引,通常稱之為輔助索引

       行級鎖:間隙鎖

       支援使用輔助索引

       支援自使用hash索引

       支援熱備份(依賴此特性innodb_file_per_table=ON)


    MyISAM:

      全文索引

      支援表壓縮存放:做資料倉庫,能節約儲存空間並提升效能

      支援空間索引

      表級鎖

      延遲更新索引


      不支援事務、外來鍵和行級鎖

      崩潰後無法安全恢復資料


      使用場景:只讀資料,表較小,能夠忍受崩潰後的修復操作和資料丟失


    ARCHIVE

        僅支援INSERT和SELECT,支援很好壓縮功能

        應用於儲存日誌資訊,或其他按照時間序列實現的資料採集類的應用

    CSV:

        將資料儲存為CSV格式,不支援索引,僅使用與資料交換場景

    BLACKHOLE:

        沒有儲存機制,任何發往次引擎的資料都會丟棄,其會記錄二進位制日誌,因此,常用於多級複製架構中作中轉伺服器

    MEMORY:

        儲存資料在記憶體中,記憶體表;常用於儲存中間資料,如週期性的聚合資料等,也用於實現臨時表

        支援hash索引,使用表級鎖,不支援BLOB和TEXT資料型別

    MRG_MYISAM:

       是MYISAM的一個變種,能夠將多個MyISAM表合併成一個虛表

    NDB: 

       是MySQL CLUSTER中專用的儲存引擎、


第三方的儲存引擎

  OLPT

    XtraDB:增強的InnoDB,有Percona提供

       編譯安裝時,下載XtraDB的原始碼替代MySQL儲存引擎中的InnoDB的原始碼

    PBXT:MariaDB自帶此儲存引擎

       支援引擎級別的複製、外來鍵約束,對SSD磁碟提供適當支援

       支援事務、MVCC

    TokuDB:使用 Fractal Trees索引,適用儲存大資料,擁有很好的壓縮比,已經被引入MariaDB


  列式資料儲存引擎:

     Infobright:目前較有名的列式引擎,適用於海量資料儲存場景,如PB級別,專為資料分析和資料倉庫設計

     InfiniDB

     MonetDB

     LucidDB


  開源社群儲存引擎:

     Aria:前身為Maria,是增強版的MyISAM(支援崩潰後安全恢復,支援資料快取)

     Groona:全文索引引擎

     Mroonga:是基於Groona的二次開發版

     OQGraph:由open query研發,支援圖(網狀 )結構的儲存引擎

     SphinxSE:為Sphinx全文搜尋伺服器提供了SQL介面

     Spider:能將資料切分成不同的分片,比較高效透明的實現了分片(shared),並支援在分片上支援並行查詢


   如何選擇??

      是否需要事務

      備份的型別的支援

      崩潰後的恢復

      特有的特性