濮阳杆衣贸易有限公司

主頁 > 知識庫 > Mysql存儲引擎詳解

Mysql存儲引擎詳解

熱門標(biāo)簽:沈陽智能外呼系統(tǒng)供應(yīng)商 地圖簡圖標(biāo)注 如何選擇優(yōu)質(zhì)的外呼系統(tǒng) 桂林云電銷機(jī)器人收費(fèi) 谷歌地圖標(biāo)注位置圖解 手機(jī)外呼系統(tǒng)違法嗎 東莞外呼企業(yè)管理系統(tǒng) 清遠(yuǎn)申請400電話 南通電銷外呼系統(tǒng)哪家強(qiáng)

存儲引擎的介紹

關(guān)系型數(shù)據(jù)庫表是用來存儲和組織信息的數(shù)據(jù)結(jié)構(gòu),可以將表理解為由行和列組成的表格。
由于表的類型不同,我們在實際開發(fā)過程中,就有可能需要各種各樣的表,不同的表就意味著存儲不同類型的數(shù)據(jù),數(shù)據(jù)的處理上也會存在差異

對于Mysql來說,它提供了很多種類型的存儲引擎

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

Mysql中的存儲引擎

MyISAM

這種引擎是mysql最早提供的,這種引擎又可以分為靜態(tài)MyISAM、動態(tài)MyISAM和壓縮MyISAM三種

靜態(tài)MyISAM:

            如果數(shù)據(jù)表中的各數(shù)據(jù)列的長度都是預(yù)先固定好的,服務(wù)器將自動選擇這種表類型。
            因為數(shù)據(jù)表中的每一條記錄所占用的空間都是一樣的,所以這種表存取和更新的效率非常高。
            當(dāng)數(shù)據(jù)受損時,恢復(fù)工作也比較容易做

動態(tài)MyISAM:

             如果數(shù)據(jù)表中出現(xiàn)varchar,xxxtext或xxxxBLOB字段時,服務(wù)器將自動選擇這種表類型 。
             相對于靜態(tài)MyISAM,這種表存儲空間比較小,但由于每條記錄的長度不一,所以多次修改數(shù)據(jù)后,數(shù)據(jù)表中的數(shù)據(jù)就可能離散的存儲在內(nèi)存中,進(jìn)而導(dǎo)致執(zhí)行效率下降.
             同時內(nèi)存中也可能會出現(xiàn)很多碎片。
             因此這種類型的表要經(jīng)常 用optimize table命令 或優(yōu)化工具來進(jìn)行碎片整理

壓縮MyISAM:

              以上說的兩種類型的表都可以用myisamchk工具壓縮。
              這種類型的表進(jìn)一步減少了占用的存儲。
              但是這種表壓縮之后不能再被修改。
              另外,因為是壓縮數(shù)據(jù),所以這種表在讀取的時候要先執(zhí)行解壓縮

但是,不管是哪種MyISAM表,目前都不支持事務(wù),行級鎖和外鍵約束的功能

MyISAM表示獨(dú)立于操作系統(tǒng)的,這說明可以輕松的將其從windows服務(wù)器轉(zhuǎn)移 到linux服務(wù)器;

每當(dāng)我們建立一個MyISAM引擎的表時,就會在本地磁盤上建立三個文件,文件名就是表名。

例如:我建立一個MyISAM引擎的th_Demo表,那么就會生成以下三個文件:

          1.th_demo.frm:存儲表定義;
          2.th_demo.MYD:存儲數(shù)據(jù);
          3.th_demo.MYI:存儲索引;

MyISAM存儲引擎特別適合在以下幾種情況下使用:

          1.選擇密集型的表,MYISAM存儲引擎在篩選大量數(shù)據(jù)時非常迅速,這是它最突出的優(yōu)點(diǎn)
          2.插入密集型的表,MYISAM的并發(fā)插入特性允許同時選擇和插入數(shù)據(jù)。例如:MYISAM存儲引擎很適合管理郵件或web服務(wù)器日志數(shù)據(jù)

InnoDB

InnoDB表類型可以看作是對MyISAM的進(jìn)一步更新產(chǎn)品,它提供了事務(wù)、行級鎖機(jī)制和外鍵約束的功能

InnoDB是一個健壯的事務(wù)型存儲引擎

使用場景:

          1.更新密集的表。InnoDB存儲引擎特別適合處理多重并發(fā)的更新請求
          2.事務(wù).InnoDB存儲引擎是支持事務(wù)的標(biāo)準(zhǔn)mysql存儲引擎
          3.自動災(zāi)難恢復(fù)。與其他存儲引擎不同,InnoDB表能夠自動從災(zāi)難中恢復(fù)
          4.外鍵約束。mysql支持外鍵的存儲引擎只有InnoDB
          5.支持自動增加列AUTO_INCREMENT屬性

  一般來說,如果需要事務(wù)支持,并且有較高的并發(fā)讀取頻率,InnoDB是不錯的選擇

memory(heap)

  使用Mysql Memory存儲引擎的出發(fā)點(diǎn)是速度,為了得到最快的響應(yīng)時間
  采用的邏輯存儲介質(zhì)是系統(tǒng)內(nèi)存。
  它要求存儲在Memory數(shù)據(jù)表里的數(shù)據(jù)使用的是長度不變的格式,這意味著不能使用BLOB和Text這樣的長度可變的數(shù)據(jù)類型
  VARCHAR是一種長度可變的類型,但因為它在Mysql內(nèi)部當(dāng)作長度固定不變的CHAR類型,所以可以使用
  Memory同時支持散列索引和B樹索引。B樹索引優(yōu)于散列索引的是:
  可以使用部分查詢和通配查詢,也可以使用,>和>=等操作符方便數(shù)據(jù)挖掘
  散列索引進(jìn)行“相等比較”非常快,但是對"范圍比較"的速度就慢多了
  散列索引值適合使用在=和>的操作符,不適合或>操作符中,也同樣不適合在order by子句中

一般在以下幾種情況下使用Memory存儲引擎:

    1.目標(biāo)數(shù)據(jù)較小,而且被非常頻繁地訪問。
        在內(nèi)存中存放數(shù)據(jù),所以會造成內(nèi)存的使用,可以通過參數(shù)max_heap_table_size控制memory表的大小,設(shè)置此參數(shù),就可以限制Memory表的最大大小了。
    2.如果數(shù)據(jù)是臨時的,而且要求必須立即可用,那么就可以存放在內(nèi)存表中
    3.存儲在Memory表中的數(shù)據(jù)如果突然丟失,不會對應(yīng)用服務(wù)器產(chǎn)生實質(zhì)的負(fù)面影響

archive

archive是歸檔的意思,在歸檔之后很多的高級功能就不再支持了,僅僅支持最基本的插入和查詢兩種功能。
mysql5.5版本以前,Archive是不支持索引,但是在Mysql以后的版本中就開始支持索引了。
Archive擁有很好的壓縮機(jī)制,它使用zlib壓縮庫,在記錄被請求時會實時壓縮,所以它經(jīng)常被用來當(dāng)作倉庫使用
常用于日志記錄和聚合分析方面

MERGE

MERGE存儲引擎是一組MyISAM表的組合,這些MYISAM表結(jié)構(gòu)必須完全相同,盡管其使用不如其他引擎突出,但是在某些情況下非常有用
Merge表就是幾個相同MyISAM表的聚合器
Merge表中并沒有數(shù)據(jù),對Merge類型的表可以進(jìn)行查詢、更新、刪除操作
這些操作實際上是對內(nèi)部的MyISAM表進(jìn)行操作

Merge存儲引擎的使用場景:

            對于服務(wù)器日志這種信息,一般常用的存儲策略是將數(shù)據(jù)分成很多表,每個名稱與特定的時間端相關(guān)
刪除Merge表只是刪除Merge表的定義,對內(nèi)部的表沒有任何影響

Mysql中關(guān)于存儲引擎的操作

1.查看數(shù)據(jù)庫可以支持的存儲引擎

    show engines;

2.查看表的結(jié)構(gòu)等信息的若干命令

    desc tablename:查看數(shù)據(jù)表的結(jié)構(gòu)
    show create table tablename:顯示表的創(chuàng)建語句
    show table status like 'tablename'\G:顯示表的當(dāng)前狀態(tài)值

3.設(shè)置或修改表的存儲引擎

    create table tablename(
        columnname(列名1) type(數(shù)據(jù)類型) attri(屬性設(shè)置),
        columnname(列名1) type(數(shù)據(jù)類型) attri(屬性設(shè)置),
    )engine= enginename:創(chuàng)建數(shù)據(jù)庫表時設(shè)置存儲存儲引擎

    Alter table tablename engine = engineName:修改存儲引擎

以上就是本文關(guān)于MySQL存儲引擎的全部內(nèi)容了,希望對大家學(xué)習(xí)MySQL能夠有所幫助

您可能感興趣的文章:
  • MySQL修改默認(rèn)存儲引擎的實現(xiàn)方法
  • Mysql更換MyISAM存儲引擎為Innodb的操作記錄總結(jié)
  • MySQL存儲引擎中MyISAM和InnoDB區(qū)別詳解
  • mysql存儲引擎和數(shù)據(jù)類型(二)
  • Mysql存儲引擎MyISAM的常見問題(表損壞、無法訪問、磁盤空間不足)
  • MySQLMerge存儲引擎
  • MySQL中InnoDB存儲引擎的鎖的基本使用教程
  • MySQL存儲引擎基礎(chǔ)知識

標(biāo)簽:貴州 天津 湖州 臨沂 常德 成都 重慶 內(nèi)蒙古

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Mysql存儲引擎詳解》,本文關(guān)鍵詞  Mysql,存儲,引擎,詳解,Mysql,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Mysql存儲引擎詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Mysql存儲引擎詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    鲁甸县| 广元市| 大关县| 垣曲县| 明溪县| 万宁市| 蒲江县| 兴文县| 崇州市| 嘉峪关市| 华池县| 闸北区| 晴隆县| 安达市| 镇远县| 西盟| 德保县| 乌兰察布市| 左云县| 武汉市| 来宾市| 遵义市| 开化县| 文昌市| 德钦县| 开鲁县| 望谟县| 安义县| 清徐县| 冕宁县| 万州区| 千阳县| 兰考县| 嫩江县| 平塘县| 东乡县| 右玉县| 莱西市| 陇川县| 哈巴河县| 车险|