一、什麼是MySql?mysql
MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB公司開發,目前屬於Oracle公司。一般意義上,數據庫也就是數據的集合,具體到計算機上數據庫能夠是存儲器上一些文件的集合或者一些內存數據的集合。sql
MySQL同時也是客戶端/服務器系統而且是單進程多線程架構的數據庫,並採用通信協議的半雙工機制(發出的東西不容許中途被截斷,沒法進行流程控制)。目前它能夠提供的功能有:支持sql語言、子查詢、存儲過程、觸發器、視圖、索引、事務、鎖、外鍵約束和影像複製等。MySql區別於其它數據庫系統的一個重要特色是支持插入式存儲引擎。數據庫
二、什麼是存儲引擎?安全
存儲引擎說白了就是如何存儲數據、如何爲存儲的數據創建索引和如何更新、查詢數據等技術的實現方法。由於在關係數據庫中數據的存儲是以表的形式存儲的,因此存儲引擎也能夠稱爲表類型(即存儲和操做此表的類型)。服務器
MySql數據庫提供了多種存儲引擎(插件式),用戶能夠根據不一樣的需求爲數據表選擇不一樣的存儲引擎,用戶也能夠根據本身的須要編寫本身的存儲引擎。數據結構
三、MySQL中有哪些存儲引擎?多線程
1)、默認存儲引擎:架構
MyISAM:(最先提供的)併發
特色:ide
支持全文索引、壓縮、空間索引(空間函數)、表級鎖、延遲更新索引鍵
不足:
不支持事務和行級鎖、崩潰後沒法安全恢復
存儲結構:
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: 支持垂直分區
四、MySql中關於存儲引擎的操做
1)、查看數據庫能夠支持的存儲引擎
mysql> show engines; (老版本默認引擎爲MyISAM)
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,文中有錯誤之處,還請你們多多指導!