在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣選擇存儲引擎?MySQL存儲引擎怎么樣?

存儲界 ? 作者:工程師飛燕 ? 2018-09-02 10:15 ? 次閱讀

MySQL是我們經(jīng)常使用的數(shù)據(jù)庫處理系統(tǒng)(DBMS),不知小伙伴們有沒有注意過其中的“存儲引擎”(storage_engine)呢?有時候面試題中也會問道MySQL幾種常用的存儲引擎的區(qū)別。這次就簡短侃一下存儲引擎那些事兒。

先去查一下“引擎”概念。

引擎(Engine)是電子平臺上開發(fā)程序或系統(tǒng)的核心組件。利用引擎,開發(fā)者可迅速建立、鋪設程序所需的功能,或利用其輔助程序的運轉。一般而言,引擎是一個程序或一套系統(tǒng)的支持部分。常見的程序引擎有游戲引擎,搜索引擎,殺毒引擎等。

Ok,我們知道了,引擎就是一個程序的核心組件。

簡單來說,存儲引擎就是指表的類型以及表在計算機上的存儲方式。

存儲引擎的概念是MySQL的特點,Oracle中沒有專門的存儲引擎的概念,Oracle有OLTP和OLAP模式的區(qū)分。不同的存儲引擎決定了MySQL數(shù)據(jù)庫中的表可以用不同的方式來存儲。我們可以根據(jù)數(shù)據(jù)的特點來選擇不同的存儲引擎。

在MySQL中的存儲引擎有很多種,可以通過“SHOW ENGINES”語句來查看。下面重點關注InnoDB、MyISAM、MEMORY這三種。

一、InnoDB存儲引擎

InnoDB給MySQL的表提供了事務處理、回滾、崩潰修復能力和多版本并發(fā)控制的事務安全。在MySQL從3.23.34a開始包含InnnoDB。它是MySQL上第一個提供外鍵約束的表引擎。而且InnoDB對事務處理的能力,也是其他存儲引擎不能比擬的。靠后版本的MySQL的默認存儲引擎就是InnoDB。

InnoDB存儲引擎總支持AUTO_INCREMENT。自動增長列的值不能為空,并且值必須唯一。MySQL中規(guī)定自增列必須為主鍵。在插入值的時候,如果自動增長列不輸入值,則插入的值為自動增長后的值;如果輸入的值為0或空(NULL),則插入的值也是自動增長后的值;如果插入某個確定的值,且該值在前面沒有出現(xiàn)過,就可以直接插入。

InnoDB還支持外鍵(FOREIGN KEY)。外鍵所在的表叫做子表,外鍵所依賴(REFERENCES)的表叫做父表。父表中被字表外鍵關聯(lián)的字段必須為主鍵。當刪除、更新父表中的某條信息時,子表也必須有相應的改變,這是數(shù)據(jù)庫的參照完整性規(guī)則。

InnoDB中,創(chuàng)建的表的表結構存儲在.frm文件中(我覺得是frame的縮寫吧)。數(shù)據(jù)和索引存儲在innodb_data_home_dir和innodb_data_file_path定義的表空間中。

InnoDB的優(yōu)勢在于提供了良好的事務處理、崩潰修復能力和并發(fā)控制。缺點是讀寫效率較差,占用的數(shù)據(jù)空間相對較大。

二、MyISAM存儲引擎

MyISAM是MySQL中常見的存儲引擎,曾經(jīng)是MySQL的默認存儲引擎。MyISAM是基于ISAM引擎發(fā)展起來的,增加了許多有用的擴展。

MyISAM的表存儲成3個文件。文件的名字與表名相同。拓展名為frm、MYD、MYI。其實,frm文件存儲表的結構;MYD文件存儲數(shù)據(jù),是MYData的縮寫;MYI文件存儲索引,是MYIndex的縮寫。

基于MyISAM存儲引擎的表支持3種不同的存儲格式。包括靜態(tài)型、動態(tài)型和壓縮型。其中,靜態(tài)型是MyISAM的默認存儲格式,它的字段是固定長度的;動態(tài)型包含變長字段,記錄的長度不是固定的;壓縮型需要用到myisampack工具,占用的磁盤空間較小。

MyISAM的優(yōu)勢在于占用空間小,處理速度快。缺點是不支持事務的完整性和并發(fā)性。

三、MEMORY存儲引擎

MEMORY是MySQL中一類特殊的存儲引擎。它使用存儲在內(nèi)存中的內(nèi)容來創(chuàng)建表,而且數(shù)據(jù)全部放在內(nèi)存中。這些特性與前面的兩個很不同。

每個基于MEMORY存儲引擎的表實際對應一個磁盤文件。該文件的文件名與表名相同,類型為frm類型。該文件中只存儲表的結構。而其數(shù)據(jù)文件,都是存儲在內(nèi)存中,這樣有利于數(shù)據(jù)的快速處理,提高整個表的效率。值得注意的是,服務器需要有足夠的內(nèi)存來維持MEMORY存儲引擎的表的使用。如果不需要了,可以釋放內(nèi)存,甚至刪除不需要的表。

MEMORY默認使用哈希索引。速度比使用B型樹索引快。當然如果你想用B型樹索引,可以在創(chuàng)建索引時指定。

注意,MEMORY用到的很少,因為它是把數(shù)據(jù)存到內(nèi)存中,如果內(nèi)存出現(xiàn)異常就會影響數(shù)據(jù)。如果重啟或者關機,所有數(shù)據(jù)都會消失。因此,基于MEMORY的表的生命周期很短,一般是一次性的。

四、怎樣選擇存儲引擎

在實際工作中,選擇一個合適的存儲引擎是一個比較復雜的問題。每種存儲引擎都有自己的優(yōu)缺點,不能籠統(tǒng)地說誰比誰好。

InnoDB:支持事務處理,支持外鍵,支持崩潰修復能力和并發(fā)控制。如果需要對事務的完整性要求比較高(比如銀行),要求實現(xiàn)并發(fā)控制(比如售票),那選擇InnoDB有很大的優(yōu)勢。如果需要頻繁的更新、刪除操作的數(shù)據(jù)庫,也可以選擇InnoDB,因為支持事務的提交(commit)和回滾(rollback)。

MyISAM:插入數(shù)據(jù)快,空間和內(nèi)存使用比較低。如果表主要是用于插入新記錄和讀出記錄,那么選擇MyISAM能實現(xiàn)處理高效率。如果應用的完整性、并發(fā)性要求比 較低,也可以使用。

MEMORY:所有的數(shù)據(jù)都在內(nèi)存中,數(shù)據(jù)的處理速度快,但是安全性不高。如果需要很快的讀寫速度,對數(shù)據(jù)的安全性要求較低,可以選擇MEMOEY。它對表的大小有要求,不能建立太大的表。所以,這類數(shù)據(jù)庫只使用在相對較小的數(shù)據(jù)庫表。

注意,同一個數(shù)據(jù)庫也可以使用多種存儲引擎的表。如果一個表要求比較高的事務處理,可以選擇InnoDB。這個數(shù)據(jù)庫中可以將查詢要求比較高的表選擇MyISAM存儲。如果該數(shù)據(jù)庫需要一個用于查詢的臨時表,可以選擇MEMORY存儲引擎。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 存儲
    +關注

    關注

    13

    文章

    4314

    瀏覽量

    85842
  • 引擎
    +關注

    關注

    1

    文章

    361

    瀏覽量

    22559
  • MySQL
    +關注

    關注

    1

    文章

    809

    瀏覽量

    26564

原文標題:MySQL存儲引擎知多少

文章出處:【微信號:cunchujie,微信公眾號:存儲界】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    #硬聲創(chuàng)作季 #云計算 云計算-905.01 DBA進階-MySQL存儲引擎01-1

    引擎MySQL
    水管工
    發(fā)布于 :2022年10月11日 05:22:17

    #硬聲創(chuàng)作季 #云計算 云計算-905.01 DBA進階-MySQL存儲引擎01-2

    引擎MySQL
    水管工
    發(fā)布于 :2022年10月11日 05:22:36

    #硬聲創(chuàng)作季 #云計算 云計算-905.02 DBA進階-MySQL存儲引擎02-1

    引擎MySQL
    水管工
    發(fā)布于 :2022年10月11日 05:22:56

    #硬聲創(chuàng)作季 #云計算 云計算-905.02 DBA進階-MySQL存儲引擎02-2

    引擎MySQL
    水管工
    發(fā)布于 :2022年10月11日 05:23:15

    詳解Mysql數(shù)據(jù)庫InnoDB存儲引擎事務

    關于Mysql數(shù)據(jù)庫InnoDB存儲引擎事務的一點理解
    發(fā)表于 05-13 10:11

    mysql存儲引擎選擇方法

    mysql怎么選擇合適的存儲引擎
    發(fā)表于 08-08 07:26

    MySQL存儲引擎簡析

    MySQL存儲引擎InnoDB??InnoDB 的存儲文件有兩個,后綴名分別是.frm和.idb,其中.frm是表的定義文件,而.idb是數(shù)據(jù)文件。InnoDB 中存在表鎖和行鎖,不過
    發(fā)表于 09-06 06:07

    MySQL存儲引擎中MyISAM與InnoDB優(yōu)劣勢比較分析

    使用MySQL當然會接觸到MySQL存儲引擎,在新建數(shù)據(jù)庫和新建數(shù)據(jù)表的時候都會看到。
    的頭像 發(fā)表于 07-18 16:00 ?2699次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>存儲</b><b class='flag-5'>引擎</b>中MyISAM與InnoDB優(yōu)劣勢比較分析

    關于mysql存儲引擎你知道多少

    Mysql中用的最多的兩種存儲引擎就是MyISAM和InnDB,其中MyISAM是5.1版本之前的默認存儲引擎,InnoDB是5.1版本之后
    發(fā)表于 08-23 10:52 ?851次閱讀

    MySQL存儲引擎完成更新語句執(zhí)行的方法

    首先肯定是我們的系統(tǒng)通過一個數(shù)據(jù)庫連接發(fā)送到了MySQL上,然后肯定會經(jīng)過SQL接口、解析器、優(yōu)化器、執(zhí)行器幾個環(huán)節(jié),解析SQL語句,生成執(zhí)行計劃,接著去由執(zhí)行器負責這個計劃的執(zhí)行,調(diào)用InnoDB存儲引擎的接口去執(zhí)行。
    的頭像 發(fā)表于 10-21 10:40 ?2047次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>存儲</b><b class='flag-5'>引擎</b>完成更新語句執(zhí)行的方法

    MySQL存儲引擎使用了三種類型的鎖定機制

    MySQL數(shù)據(jù)庫由于其自身架構的特點,存在多種數(shù)據(jù)存儲引擎,每種存儲引擎的鎖定機制都是為各自所面對的特定場景而優(yōu)化設計,所以各
    的頭像 發(fā)表于 11-17 14:09 ?2165次閱讀
    <b class='flag-5'>MySQL</b>各<b class='flag-5'>存儲</b><b class='flag-5'>引擎</b>使用了三種類型的鎖定機制

    寫一寫MySQL常見的引擎

    所謂存儲,就是存數(shù)據(jù)的介質,而存儲引擎就是一種存儲數(shù)據(jù)的方式,就好比磁盤里的文件系統(tǒng)。
    的頭像 發(fā)表于 02-08 09:50 ?900次閱讀

    有哪些不同的MySQL數(shù)據(jù)庫引擎

    數(shù)據(jù)庫引擎MySQL組件,可以處理SQL操作,例如從數(shù)據(jù)庫創(chuàng)建、讀取和更新數(shù)據(jù)。MySQL中有兩種類型的引擎:事務性和非事務性。
    的頭像 發(fā)表于 04-03 16:38 ?1140次閱讀

    MySQL的整體邏輯架構

    支持多種存儲引擎是眾所周知的MySQL特性,也是MySQL架構的關鍵優(yōu)勢之一。如果能夠理解MySQL Server與
    的頭像 發(fā)表于 04-30 11:14 ?453次閱讀
    <b class='flag-5'>MySQL</b>的整體邏輯架構
    主站蜘蛛池模板: 成人女人a毛片在线看| 精品国产免费观看久久久| 加勒比一本一道在线| 天天摸天天干天天操| 成人五级毛片免费播放| 欧美精品影院| www射| 亚洲一区二区三区首页| 日韩欧美卡一卡二卡新区| 二区三区视频| 四虎成人免费影院网址| 中文字幕精品一区影音先锋| 亚洲精品老司机综合影院| 99久热| 日韩美香港a一级毛片| 精品三级视频| 天天操夜夜爱| 91大神精品长腿在线观看网站| 美女被异性狂揉下部羞羞视频| 亚洲国内精品自在线影视| 日本特黄特黄刺激大片免费| 韩国精品videosex性韩国| 天天干天天操天天碰| 女攻各种play男受h| 四虎免费影院在线播放| 天天在线精品视频在线观看| 456成人免费高清视频| 伊人网亚洲| 国产在线视频你懂的| 好爽好紧好大的免费视频国产| 伊人久久大香线蕉综合电影| 国产精品漂亮美女在线观看| 特一级黄| 国语一区| 午夜性a一级毛片| 91婷婷色涩涩| 国产大乳喷奶水在线看| 天天夜天干天天爽| 性欧美暴力猛交69hd| 俺去在线| h视频在线免费|