mysql的存儲引擎

轉載:https://www.cnblogs.com/orange-time/p/10552801.html

mysql的存儲引擎

 

mysql支持的存儲引擎html

一:查詢數據庫支持的存儲引擎mysql

執行:  show engines;sql

說明數據庫

  engine:引擎名稱。服務器

  suppot:是否支持。session

  comment:說明。併發

  transactions:是夠支持事務。編輯器

  xa:是否支持XA事務。函數

  savepoints:是否支持保存savepoints之間的內容。post

 

二:經常使用的引擎的介紹(經常使用的MyISAM和InnoDB)

.frm文件         //存儲表結構的,任何存儲引擎都具有的。

1:MyISAM

   mysql5.5以前默認的存儲引擎,由MYD和MYI組成。

  查看數據庫的data目錄/數據庫名稱/,在查找相對應的表名。

  frm,myd,myi這三個結尾的文件。

  .myd  //數據庫文件

  .myi  //索引文件  又叫非彙集索引

 

  特性:

    併發性與鎖級別-表解鎖

    支持全文索引

    支持數據壓縮   命令:進入到mysql的bin文件夾, .\myisampack.exe -b -f "須要壓縮的test.MYI地址" (此命令實在Windows運行)。

    運行完之後,會出現一個以OLD結尾的文件,刪除OLD可能會出現問題。須要恢復 CHECK table 表名,REPAIR table 表名      

  

  適用場景:

    非事務的類型

    只讀類應用,讀取數據的速度快

    空間類型(座標,空間函數)

 

2:innodb

  mysql5.5之後默認的存儲引擎,innodb_file_per_table  on:表示獨立表空間,OFF:表示系統表空間。5.6以前是系統表空間,以後爲獨立表空間。

  獨立表空間:.frm .ibd  存儲數據+索引。 能夠經過 optimize table 表名 .ibd收縮數據文件,同時能夠向多個文件刷新數據。

  系統表空間:.frm是放在數據庫的文件下的。 .ibdata1是放在data文件夾下的,表公用的,會產生IO的瓶頸。 系統表空間沒法簡單的收縮文件大小

  

  建議使用獨立表空間。

 

  特性:

    是一種事務性存儲引擎。徹底支持事務的ACID特性。執行行級鎖,併發程度高。Redo Log和Undo Log。

  適用場景:

    大多數的OLTP應用。

 

  比較

  

 

 

3:CSV

  數據以文本方式存儲,表的字段不能爲空,不能有主鍵。

  .frm , .csv數據的內容, .csm存儲表的元數據 。

  使用文本編輯器能夠直接編輯.csv數據,而後保存,在數據庫裏面執行flush  tables;

  注:要在最後一行數據回車一下,要否則最後一條數據不展現。

  在excel裏面操做提示兼容性問題,沒法操做成功,編輯完之後修復一下,多是excel版本的問題吧。

  特色:

    以CSV格式進行數據存儲,全部列的字段都不能爲null,不支持索引,能夠對數據文件在線編輯。

 

4:Archive

  以zlib對錶數據進行壓縮,磁盤I/O更少,數據存儲在.ARZ。

  .frm , .ARZ數據的內容。

  特色:

    只支持insert和select操做,只容許在自增ID列上加索引。

  使用場景:

    日誌和數據採集應用

 

5:Memory

  在data文件夾裏面只有一個frm。

  數據保存在內存中,支持hash索引和BTree索引,全部字段都是固定的長度varchar(10)=char(10),不支持Blog和Text等字段

  使用表級索,最大有max_heap_table_size 決定。 重啓會丟失數據。

  在系統使用臨時表的時候,超過限制會使用MyISAM,未超過的時候使用Memory

  

  臨時表:在同一個session(會話)裏面,才能使用。重啓服務會丟失數據。

 

  應用場景:mysql後臺服務使用Memory

 

 

6:Federated

  訪問遠程的數據庫表,本地只保存數據庫結構和鏈接信息,數據保存在遠程的服務器中。在本地只保存.frm

  默認不是開啓的引擎,在my.ini  增長 federated=1,重啓。

  

  只能用命令建立。create table ‘aaa’(裏面的字段,要和鏈接的服務器同樣) engine=federated connection='mysql://用戶名:密碼@地址:IP/數據庫名/表名'

相關文章
相關標籤/搜索