MySql學習之 -- 存儲引擎


1、什麼是MySql?

MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB公司開發,目前屬於Oracle公司。通常意義上,數據庫也就是數據的集合,具體到計算機上數據庫可以是存儲器上一些文件的集合或者一些內存數據的集合。

MySQL同時也是客戶端/服務器系統並且是單進程多線程架構的數據庫,並採用通訊協議的半雙工機制(發出的東西不允許中途被截斷,無法進行流程控制)。目前它可以提供的功能有:支持sql語言、子查詢、存儲過程、觸發器、視圖、索引、事務、鎖、外鍵約束和影像複製等。MySql區別於其它數據庫系統的一個重要特點是支持插入式存儲引擎。


2、什麼是存儲引擎?

存儲引擎說白了就是如何存儲數據、如何爲存儲的數據建立索引和如何更新、查詢數據等技術的實現方法。因爲在關係數據庫中數據的存儲是以表的形式存儲的,所以存儲引擎也可以稱爲表類型(即存儲和操作此表的類型)。

MySql數據庫提供了多種存儲引擎(插件式),用戶可以根據不同的需求爲數據表選擇不同的存儲引擎,用戶也可以根據自己的需要編寫自己的存儲引擎。


3、MySQL中有哪些存儲引擎?

1)、默認存儲引擎:

MyISAM:(最早提供的)

特點:

支持全文索引、壓縮、空間索引(空間函數)、表級鎖、延遲更新索引鍵

不足:

不支持事務和行級鎖、崩潰後無法安全恢復

存儲結構:

tbname.frm (數據結構)

tbname.MYD (數據)

tbname.MYI (索引)

應用場景:多應用只讀數據(當數據倉庫,適合讀多寫少的應用場景)、較小的表、能夠忍受修復操作


InnoDB

特點:

支持事務(事務日誌)、外鍵、MVCC(多版本併發控制)、採用聚簇索引 (索引與數據塊存放在一起)、輔助索引、自適應hash索引、支持熱備(MySQL Enterprise Backup, Percona Xtrabackup)、行級鎖、間隙鎖

存儲結構:

tbname.frm (數據結構)

ibdata1 (默認共享表空間)

tbname.ibd (表空間,數據+索引)

建議每個表使用自己獨立的表空間,開啓方法:set global innodb_file_per_table=1;


ARCHIVE:

僅支持INSERT和SELECT,不支持索引但支持很好的壓縮功能;

適用於存儲日誌信息,或其它按時間序列實現的數據採集類應用;

CSV:

將數據保存爲CSV格式(文本格式,會丟失精度),不支持索引,僅適用數據交換;

MEMORY:

內存存儲引擎,比MyISAM至少快一個數量級(一般10倍),通常用於實現臨時表(無法提供數據的持久化);

BLACKHOLE:

沒有存儲機制,任何數據都會被丟棄,但是會記錄二進制日誌;

FEDERATED:

訪問遠程服務器上數據的存儲引擎;FederatedX

可以在數據非常大的時候起到分發表或者庫到不同的服務器,減少每個服務器的IO

MRG_MYISAM:

合併多個MyISAM表的存儲引擎;(以後可能會被棄用)


b、第三方存儲引擎:

OLTP類:

OLTP 與 OLAP:

OLTP是面向顧客的,用於事務和查詢處理(需要並行和恢復機制)

OLAP是面向市場的,用於數據統計分析(大部分是隻讀操作)

XtraDB;

PBXT;

TokuDB: 支持分形樹索引結構;

列式存儲引擎:

Infobright: (查詢性能高,存儲數據量大...)

InfiniDB:

MonetDB:

LucidDB:

社區存儲引擎:

Aria:

Groona: 全文索引引擎

QQGraph: 支持圖, 由Open query研發

SphinxSE:

Spider: 支持分片(shard)

VPForMySQL: 支持垂直分區


4、MySql中關於存儲引擎的操作

1)、查看數據庫可以支持的存儲引擎

mysql> show engines; (老版本默認引擎爲MyISAM)

023657556.png

2)、查看錶的結構等信息的若干命令

desc tablename; #查看數據表的結構

show create table tablename; #顯示錶的創建語句

show table status like ‘tablename’\G; #顯示錶的當前狀態值

3)、設置或修改表的存儲引擎

create table tableName( columnName(列名1) type(數據類型) attri(屬性設置),……) engine = engineName #設置

alter table tableName engine = engineName; #修改


小結:本文主要介紹了什麼是MySql數據庫,並進一步引出了它的一個重要特性, 即插入式的多存儲引擎機制。然後,簡單介紹了什麼是存儲引擎和MySql中幾種主要的存儲引擎。最後,介紹瞭如何查看數據庫支持的所有存儲引擎,如何查看數據庫表的存儲引擎類型及如何設置或修改表的存儲引擎類型。剛剛入門學習MySql,文中有錯誤之處,還請大家多多指導!


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