#什麼事MySQL數據庫? 一般意義上,數據庫也就是數據的集合,具體到計算機上數據庫能夠是存儲器上一些文件的集合或者一些內存數據的集合。 咱們常說的MySQL數據庫,sql server數據庫等實際上是數據庫管理系統,它們能夠存儲數據,並提供查詢和更新數據庫中的數據的功能等等。根據數據庫如何存儲數據和如何操做數據的實現機制不一樣,這些數據庫之間既有區別又有共同點。 MySQL數據庫是開放源代碼的關係型數據庫。目前,它提供的功能有:支持sql語言、子查詢、存儲過程、觸發器、視圖、索引、事務、鎖、外鍵約束和影像複製等。 同oracle和sql server等大型數據庫系統同樣,MySQL也是客戶/服務器西宮,而且是單進程多線程架構的數據庫。 MySQL的區別在於其它的數據庫系統的一個重要特色是支持插入式存儲引擎。mysql
存儲引擎說白了就是如何存儲數據、如何爲存儲的數據創建索引和如何更新、查詢數據等技術的實現方法。由於在關係型數據庫中,數據的存儲是以表的形式存儲的,因此存儲引擎也能夠稱爲表類型(即存儲和操做此表的類型)。 在oracle和sql server等數據庫中,只有一種存儲引擎,全部的數據存儲管理機制都是同樣的。而MySQL數據庫提供了多種存儲引擎。用戶能夠根據不一樣的需求爲數據表選擇不一樣的存儲引擎,用戶也能夠根據本身的須要編寫本身的存儲引擎。 #MySQL有哪些存儲引擎? 進入MySQL的客戶端時,執行命令 show engines,既能夠看到MySQL支持的存儲引擎類型. 以下圖:sql
修改默認存儲引擎:數據庫
default_storage_engine = InnoDB安全
詳解幾種經常使用的MySQL存儲引擎類型:服務器
支持全文索引多線程
支持壓縮:用於實現數據倉庫,能節約存儲空間並提高性能架構
支持空間索引oracle
支持表級鎖:若讀寫操做比例爲9:1或8:2,則使用MyISAM能夠提升性能性能
延遲更新索引:減小IO壓力開放源代碼
不支持事務,外鍵,MVCC,行級鎖等
崩潰後沒法安全恢復數據
適用場景:多讀少寫的數據,較小的表,可以容忍崩潰後的修改操做和數據丟失; 如自帶的mysql數據庫中的表都是使用MyISAM存儲引擎的
建議:使用InnoDB存儲引擎,並使用read commited的隔離級別,性能並不比MyISAM性能差,故推薦使用InnoDB存儲引擎
支持事務:事務日誌;日誌文件大小一致:如ib_logfile0和ib_logfile1
支持外鍵
支持MVCC
支持聚簇索引
支持行級鎖:即間隙鎖
支持輔助索引
支持自適應hash索引
支持熱備份
不支持全文索引
僅支持insert和select
支持很好的壓縮功能
不支持事務,不能很好的支持索引
適用於:存儲日誌信息,或其它按時間序列實現的數據採集類的應用,如監控日誌
將數據存儲爲csv格式,不支持索引
僅適用於數據交換場景
沒有存儲機制,任何發往此引擎的數據都會丟棄
因爲其會記錄二進制日誌,故經常使用於多級複製架構中做中轉服務器
數據保存在內存中,便是一個內存表
僅支持hash索引,使用表級鎖
不支持blob和text數據類型
經常使用於保存中間數據,如週期性的聚合數據等;也用於實現臨時表
是MyISAM的一個變種,可以將多個MyISAM表合併爲一個虛表
屬於傳統的存儲引擎,通常不經常使用
爲肯定你的MySQL服務器能夠用哪些存儲引擎,執行以下命令: show engines;
選擇標準能夠分爲:
(1)是否須要支持事務;
(2)是否須要使用熱備;
(3)崩潰恢復:可否接受崩潰;
(4)是否須要外鍵支持;
而後按照標準,選擇對應的存儲引擎便可。