MySQL性能調優與架構設計(二)—— MySQL存儲引擎簡介

什麼是存儲引擎

  1. mysql中的數據用各種不同的技術存儲在文件(或者內存)中。
  2. 這些技術中每一種技術都使用不同的存儲機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。
  3. 通過選擇不同的技術,你能夠獲得額外的速度和功能,從而改善你的應用的整體功能。
  4. 例如,你在研究大量的臨時數據,你也許需要使用內存mysql存儲引擎。內存存儲引擎能夠在內存中存儲所有的表格數據。
  5. 又或者,你也許需要一個支持事務處理的數據庫(以確保事務處理不成功時數據的回退能力)。
  6. 這些不同的技術及配套的相關功能在mysql中被稱爲存儲引擎。

MySQL存儲引擎-前言

  1. mysql默認配置了許多不同的存儲引擎,可以預先設置或者在mysql服務器中啓用。
  2. 你可以選擇適用於服務器、數據庫和表格的存儲引擎,以便在選擇如何存儲你的信息、如何檢索這些信息以及你需要你的數據結合什麼性能和功能的時候爲你提供最大的靈活性。
  3. 對mysql來說,它提供了很多種類型的存儲引擎,我們可以根據對數據處理的需求,選擇不同的存儲引擎,從而最大限度的利用mysql強大的功能。
  4. mysql的插件式存儲引擎主要包括MyISAM、Innodb、NDB Cluster、Maria、Falcon、Memory、Archive、Merge、Federated 等。
  5. 其中最著名而且使用最廣泛的是MyISAM和Innodb兩種存儲引擎。

    (1)MyISAM是mysql最早的ISAM存儲引擎的升級版本,也是Mysql默認存儲引擎。
    (2)而Innodb實際上並不是mysql公司的,而是第三方軟件公司Innobase所開發,其最大的特點是提供了事務控制等特性,所以使用者也非常廣泛。
  6. 其他的一些存儲引擎相對來說使用場景稍微少一些,都是應用於某些特定的場景。

    (1)如NDB Cluster雖然也支持事務,但主要是用於分佈式環境,屬於一個share nothing的分佈式數據庫存儲引擎。
    (2)Maria是mysql最新開發的對MyISAM的升級版存儲引擎
    (3)Falcon是mysql公司自行研發的爲了替代當前Innodb存儲引擎的一款帶有事務等高級特性的數據庫存儲引擎。
    (4)Memory存儲引擎所有數據和所有均存儲與內存中,所以主要是用於一些臨時表,或者對性能要求極高,但是允許在主機Crash的時候丟失數據的特定場景下。
    (5)Archive是一個數據經過高比例壓縮存放的存儲引擎,主要用於存放過期而且很少訪問的歷史信息,不支持索引。
    (6)Merge和Federated在嚴格意義來說,並不能算作一個存儲引擎。
    (7)因爲Merge存儲引擎主要是將幾個基表merge在一起,對外作爲一個表來提供服務,基表可以基於其他的幾個存儲引擎。
    (8)而Federated實際上所做的事情,有點類似於Oracle的dblink,主要用於遠程存取其他mysql服務器上面的數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章