国产chinesehdxxxx老太婆,办公室玩弄爆乳女秘hd,扒开腿狂躁女人爽出白浆 ,丁香婷婷激情俺也去俺来也,ww国产内射精品后入国产

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

寫(xiě)一寫(xiě)MySQL常見(jiàn)的引擎

阿銘linux ? 來(lái)源:阿銘linux ? 2023-02-08 09:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本來(lái)這篇文檔只想寫(xiě)Myisam和Innodb兩個(gè)存儲(chǔ)引擎的區(qū)別,畢竟這個(gè)話(huà)題也是面試中經(jīng)常被問(wèn)到的。但,Myisam存儲(chǔ)引擎由于不支持事務(wù)以及不支持行級(jí)鎖,用的人越來(lái)越少了。所以,干脆寫(xiě)一寫(xiě)MySQL常見(jiàn)的引擎吧。

什么是MySQL存儲(chǔ)引擎

所謂存儲(chǔ),就是存數(shù)據(jù)的介質(zhì),而存儲(chǔ)引擎就是一種存儲(chǔ)數(shù)據(jù)的方式,就好比磁盤(pán)里的文件系統(tǒng)。不同的存儲(chǔ)引擎,存儲(chǔ)數(shù)據(jù)的方式不同,實(shí)現(xiàn)的功能點(diǎn)也不同。MySQL8.0默認(rèn)的存儲(chǔ)引擎為Innodb。

MySQL存儲(chǔ)引擎都有哪些

在MySQL8里,可以執(zhí)行show engines;來(lái)查看所有支持的存儲(chǔ)引擎。

a1888970-a731-11ed-bfe3-dac502259ad0.png

查看某個(gè)表是什么存儲(chǔ)引擎:

a198b750-a731-11ed-bfe3-dac502259ad0.png

不同的存儲(chǔ)引擎都有各自的特點(diǎn),以適應(yīng)不同的需求,我只針對(duì)下面3個(gè)常見(jiàn)的存儲(chǔ)引擎做出對(duì)比,如下表所示:

a1a6b1b6-a731-11ed-bfe3-dac502259ad0.png

MyISAM存儲(chǔ)引擎

在MySQL5.5之前的版本,默認(rèn)使用該存儲(chǔ)引擎。若使用該存儲(chǔ)引擎,每個(gè)表會(huì)在磁盤(pán)上存儲(chǔ)成三個(gè)文件:

frm文件:存儲(chǔ)表的定義數(shù)據(jù)

MYD文件:存放表具體記錄的數(shù)據(jù)

MYI文件:存儲(chǔ)索引

Frm和MYI可以存放在不同的目錄下。MYI文件用來(lái)存儲(chǔ)索引,但僅保存記錄所在頁(yè)的指針,索引的結(jié)構(gòu)是B+樹(shù)結(jié)構(gòu)。

支持?jǐn)?shù)據(jù)的類(lèi)型也有三種:

1)靜態(tài)固定長(zhǎng)度表

這種方式的優(yōu)點(diǎn)在于存儲(chǔ)速度非???,容易發(fā)生緩存,而且表發(fā)生損壞后也容易修復(fù)。缺點(diǎn)是占空間。這也是默認(rèn)的存儲(chǔ)格式。

2)動(dòng)態(tài)可變長(zhǎng)表

優(yōu)點(diǎn)是節(jié)省空間,但是一旦出錯(cuò)恢復(fù)起來(lái)比較麻煩。

3)壓縮表

上面說(shuō)到支持?jǐn)?shù)據(jù)壓縮,說(shuō)明肯定也支持這個(gè)格式。在數(shù)據(jù)文件發(fā)生錯(cuò)誤時(shí)候,可以使用check table工具來(lái)檢查,而且還可以使用repair table工具來(lái)恢復(fù)。

MyISAM存儲(chǔ)引擎有一個(gè)重要的特點(diǎn)那就是不支持事務(wù),但是這也意味著它的存儲(chǔ)速度更快,如果你的讀寫(xiě)操作允許有錯(cuò)誤數(shù)據(jù)的話(huà),只是追求速度,可以選擇這個(gè)存儲(chǔ)引擎。

InnoDB存儲(chǔ)引擎

InnoDB是MySQL8.0版本默認(rèn)的數(shù)據(jù)庫(kù)存儲(chǔ)引擎,他的主要特點(diǎn)有:

可以通過(guò)自動(dòng)增長(zhǎng)列,方法是auto_increment。

支持事務(wù)。默認(rèn)的事務(wù)隔離級(jí)別為可重復(fù)度,通過(guò)MVCC(并發(fā)版本控制)來(lái)實(shí)現(xiàn)的。

使用的鎖粒度為行級(jí)鎖,可以支持更高的并發(fā);

支持外鍵約束;外鍵約束其實(shí)降低了表的查詢(xún)速度,但是增加了表之間的耦合度。

配合一些熱備工具可以支持在線(xiàn)熱備份;

在InnoDB中存在著緩沖管理,通過(guò)緩沖池,將索引和數(shù)據(jù)全部緩存起來(lái),加快查詢(xún)的速度;

對(duì)于InnoDB類(lèi)型的表,其數(shù)據(jù)的物理組織形式是聚簇表。所有的數(shù)據(jù)按照主鍵來(lái)組織。數(shù)據(jù)和索引放在一塊,都位于B+數(shù)的葉子節(jié)點(diǎn)上;

當(dāng)然InnoDB的存儲(chǔ)表和索引也有下面兩種形式:

使用共享表空間存儲(chǔ):所有的表和索引存放在同一個(gè)表空間中。

使用多表空間存儲(chǔ):表結(jié)構(gòu)放在frm文件,數(shù)據(jù)和索引放在IBD文件中。分區(qū)表的話(huà),每個(gè)分區(qū)對(duì)應(yīng)單獨(dú)的IBD文件,分區(qū)表的定義可以查看我的其他文章。使用分區(qū)表的好處在于提升查詢(xún)效率。

對(duì)于InnoDB來(lái)說(shuō),最大的特點(diǎn)在于支持事務(wù)。但是這是以損失效率來(lái)?yè)Q取的。

Memory存儲(chǔ)引擎

將數(shù)據(jù)存在內(nèi)存,為了提高數(shù)據(jù)的訪(fǎng)問(wèn)速度,每一個(gè)表實(shí)際上和一個(gè)磁盤(pán)文件關(guān)聯(lián)。文件是frm。Memroy存儲(chǔ)引擎主要有以下特點(diǎn):

支持的數(shù)據(jù)類(lèi)型有限制,比如:不支持TEXT和BLOB類(lèi)型,對(duì)于字符串類(lèi)型的數(shù)據(jù),只支持固定長(zhǎng)度的行,VARCHAR會(huì)被自動(dòng)存儲(chǔ)為CHAR類(lèi)型;

支持的鎖粒度為表級(jí)鎖。所以,在訪(fǎng)問(wèn)量比較大時(shí),表級(jí)鎖會(huì)成為MEMORY存儲(chǔ)引擎的瓶頸;

由于數(shù)據(jù)是存放在內(nèi)存中,一旦服務(wù)器出現(xiàn)故障,數(shù)據(jù)都會(huì)丟失;

查詢(xún)的時(shí)候,如果有用到臨時(shí)表,而且臨時(shí)表中有BLOB,TEXT類(lèi)型的字段,那么這個(gè)臨時(shí)表就會(huì)轉(zhuǎn)化為MyISAM類(lèi)型的表,性能會(huì)急劇降低;

默認(rèn)使用hash索引。

如果一個(gè)內(nèi)部表很大,會(huì)轉(zhuǎn)化為磁盤(pán)表。

MyISAM對(duì)比Innodb

再來(lái)做一個(gè)總結(jié)吧,面試中被問(wèn)到,可以簡(jiǎn)單說(shuō)說(shuō)下面幾個(gè)要點(diǎn):

存儲(chǔ)結(jié)構(gòu)

MyISAM:每個(gè)MyISAM在磁盤(pán)上存儲(chǔ)成三個(gè)文件。分別為:表定義文件、數(shù)據(jù)文件、索引文件。第一個(gè)文件的名字以表的名字開(kāi)始,擴(kuò)展名指出文件類(lèi)型。.frm文件存儲(chǔ)表定義。數(shù)據(jù)文件的擴(kuò)展名為.MYD (MYData)。索引文件的擴(kuò)展名是.MYI (MYIndex)。

InnoDB:所有的表都保存在同一個(gè)數(shù)據(jù)文件中(也可能是多個(gè)文件,或者是獨(dú)立的表空間文件),InnoDB表的大小只受限于操作系統(tǒng)文件的大小,一般為2GB

存儲(chǔ)空間

MyISAM支持支持三種不同的存儲(chǔ)格式:靜態(tài)表(默認(rèn),但是注意數(shù)據(jù)末尾不能有空格,會(huì)被去掉)、動(dòng)態(tài)表、壓縮表。當(dāng)表在創(chuàng)建之后并導(dǎo)入數(shù)據(jù)之后,不會(huì)再進(jìn)行修改操作,可以使用壓縮表,極大的減少磁盤(pán)的空間占用。
InnoDB需要更多的內(nèi)存和存儲(chǔ),它會(huì)在主內(nèi)存中建立其專(zhuān)用的緩沖池用于高速緩沖數(shù)據(jù)和索引。

可移植性、備份及恢復(fù)

MyISAM:數(shù)據(jù)是以文件的形式存儲(chǔ),所以在跨平臺(tái)的數(shù)據(jù)轉(zhuǎn)移中會(huì)很方便。在備份和恢復(fù)時(shí)可單獨(dú)針對(duì)某個(gè)表進(jìn)行操作。
InnoDB:免費(fèi)的方案可以是拷貝數(shù)據(jù)文件、備份 binlog,或者用mysqldump,在數(shù)據(jù)量達(dá)到幾十G的時(shí)候就相對(duì)痛苦了。

事務(wù)支持

MyISAM:強(qiáng)調(diào)的是性能,每次查詢(xún)具有原子性,其執(zhí)行速度比InnoDB類(lèi)型更快,但是不提供事務(wù)支持。
InnoDB:提供事務(wù)支持、外部鍵等高級(jí)數(shù)據(jù)庫(kù)功能。

是否支持行級(jí)鎖

MyISAM:只支持表級(jí)鎖,用戶(hù)在操作myisam表時(shí),select,update,delete,insert語(yǔ)句都會(huì)給表自動(dòng)加鎖,如果加鎖以后的表滿(mǎn)足insert并發(fā)的情況下,可以在表的尾部插入新的數(shù)據(jù)。
InnoDB:支持事務(wù)和行級(jí)鎖,是Innodb的最大特色。行鎖大幅度提高了多用戶(hù)并發(fā)操作的性能。但是InnoDB的行鎖,只是在WHERE的主鍵是有效的,非主鍵的WHERE都會(huì)鎖全表的。

是否支持聚集索引

MyISAM不支持聚集索引,InnoDB支持聚集索引。

外鍵

MyISAM:不支持
InnoDB:支持

全文索引

MyISAM支持 FULLTEXT類(lèi)型的全文索引。
InnoDB不支持FULLTEXT類(lèi)型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。

表主鍵

MyISAM允許沒(méi)有任何索引和主鍵的表存在,索引都是保存行的地址。
對(duì)于InnoDB,如果沒(méi)有設(shè)定主鍵或者非空唯一索引,就會(huì)自動(dòng)生成一個(gè)6字節(jié)的主鍵(用戶(hù)不可見(jiàn))。

表的行數(shù)

MyISAM保存有表的總行數(shù),如果select count() from table;會(huì)直接取出出該值。
InnoDB沒(méi)有保存表的總行數(shù),如果使用select count() from table;就會(huì)遍歷整個(gè)表,消耗相當(dāng)大,但是在加了where條件后,MyISAM和InnoDB處理的方式都一樣。





審核編輯:劉清

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

    關(guān)注

    0

    文章

    115

    瀏覽量

    33942
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    860

    瀏覽量

    27951
  • Hash
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    13484
  • MVCC
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    1546

原文標(biāo)題:來(lái)聊聊MySQL的存儲(chǔ)引擎

文章出處:【微信號(hào):aming_linux,微信公眾號(hào):阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    個(gè)登陸界面的程序框圖,跪求高手幫忙寫(xiě)一寫(xiě)

    個(gè)登陸界面的程序框圖,跪求高手幫忙寫(xiě)一寫(xiě),好多控件找不到,麻煩大神寫(xiě)成程序框圖,我郵箱1002435704@qq.com,麻煩了
    發(fā)表于 06-04 21:24

    功能全局變量?jī)?chǔ)存事件引用,一寫(xiě)樣請(qǐng)問(wèn)是什么原因?

    本帖最后由 只耳朵怪 于 2018-5-29 09:00 編輯 功能全局變量?jī)?chǔ)存事件引用 一寫(xiě)樣 是有時(shí)候
    發(fā)表于 05-28 18:12

    mysql的存儲(chǔ)引擎選擇方法

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

    在MCU開(kāi)發(fā)中使用多線(xiàn)程操作一寫(xiě)讀是否需要保護(hù)?

    在MCU(以常見(jiàn)的stm32為例)開(kāi)發(fā)中使用多線(xiàn)程操作,我們經(jīng)常遇到的問(wèn)題是關(guān)于多線(xiàn)程訪(fǎng)問(wèn)數(shù)據(jù)的問(wèn)題,多線(xiàn)程訪(fǎng)問(wèn)數(shù)據(jù)基本上可以分為幾大類(lèi):多寫(xiě)讀多寫(xiě)多讀
    發(fā)表于 02-01 15:42

    keil軟件一寫(xiě)空函數(shù)就顯示目標(biāo)沒(méi)創(chuàng)建的原因?

    keil 軟件 為啥我一寫(xiě)空函數(shù)就顯示目標(biāo)沒(méi)創(chuàng)建?
    發(fā)表于 10-17 07:41

    基于三元Golay隱寫(xiě)碼的快速隱寫(xiě)算法

    研究GF(3)上的編碼方法,利用三元Golay碼給出種GF(3)上的隱寫(xiě)碼,其隱寫(xiě)性能較常見(jiàn)二元隱寫(xiě)碼有顯著提高。提出基于三元Golay隱
    發(fā)表于 04-08 08:46 ?26次下載

    種具有分級(jí)安全的文本隱寫(xiě)方法

    針對(duì)單數(shù)據(jù)類(lèi)型隱寫(xiě)方法安全性不高、隱寫(xiě)容量不足等問(wèn)題,提出了種具有分級(jí)安全的文本隱寫(xiě)方法。首先,將整個(gè)載體文檔中的多種類(lèi)型的數(shù)據(jù)作為備選
    發(fā)表于 01-14 16:26 ?0次下載

    LSB匹配隱寫(xiě)檢測(cè)

    目前,在數(shù)字圖像隱寫(xiě)中,基于空域和頻域隱寫(xiě)的研究最為廣泛。基于空域隱寫(xiě)的研究起步較早,典型的隱寫(xiě)方法如最不重要位(Least Significant Bit,LSB)替換隱
    發(fā)表于 02-23 09:55 ?2次下載

    什么是單片機(jī)燒寫(xiě)軟件?如何燒寫(xiě)

    什么是單片機(jī)燒寫(xiě)軟件? 什么是單片機(jī)燒寫(xiě)軟件? 簡(jiǎn)單點(diǎn)說(shuō),就是把你寫(xiě)好代碼(C或者是匯編)專(zhuān)程的機(jī)器語(yǔ)言通過(guò)定的方式下載到單片機(jī)中。稱(chēng)為燒寫(xiě)。 燒
    發(fā)表于 04-14 11:04 ?3.5w次閱讀

    對(duì)講機(jī)寫(xiě)頻的常見(jiàn)問(wèn)題及解決方案

    對(duì)講機(jī)在使用過(guò)程中難免要修改和調(diào)整對(duì)講機(jī)的頻率,這個(gè)時(shí)候就需要按裝寫(xiě)頻軟件重新設(shè)置頻率。今天小編就對(duì)講機(jī)在寫(xiě)頻過(guò)程中會(huì)遇到的常見(jiàn)問(wèn)題做了
    的頭像 發(fā)表于 07-20 11:24 ?3.2w次閱讀

    怎樣選擇存儲(chǔ)引擎?MySQL存儲(chǔ)引擎怎么樣?

    MySQL是我們經(jīng)常使用的數(shù)據(jù)庫(kù)處理系統(tǒng)(DBMS),不知小伙伴們有沒(méi)有注意過(guò)其中的“存儲(chǔ)引擎”(storage_engine)呢?有時(shí)候面試題中也會(huì)問(wèn)道MySQL幾種常用的存儲(chǔ)引擎
    的頭像 發(fā)表于 09-02 10:15 ?5182次閱讀

    三種常見(jiàn)的STM32單片機(jī)的燒寫(xiě)方法

    三種常見(jiàn)的STM32單片機(jī)的燒寫(xiě)方法
    發(fā)表于 05-28 09:57 ?34次下載

    stm32使用flymcu燒寫(xiě)程序

    文章目錄、使用flymcu燒寫(xiě)程序、使用flymcu燒寫(xiě)程序燒寫(xiě)程序之前要使ASP指示燈保持強(qiáng)亮狀態(tài),同時(shí)要保證使flashIsp模式下
    發(fā)表于 10-26 11:06 ?18次下載
    stm32使用flymcu燒<b class='flag-5'>寫(xiě)</b>程序

    stm32單片機(jī)的寫(xiě)命令與寫(xiě)數(shù)據(jù)

    寫(xiě)指令和寫(xiě)數(shù)據(jù),都是針對(duì)外部應(yīng)用模塊的,比如1 602液晶屏,寫(xiě)命令是告訴液晶屏你要做什么,寫(xiě)數(shù)據(jù)是把你要顯示的數(shù)據(jù)送給液晶屏。
    發(fā)表于 11-19 09:21 ?7次下載
    stm32單片機(jī)的<b class='flag-5'>寫(xiě)</b>命令與<b class='flag-5'>寫(xiě)</b>數(shù)據(jù)

    來(lái)練習(xí)個(gè)寫(xiě)Redis部署的腳本

    繼Nginx和MySQL的部署腳本之后,相信只要你跟著寫(xiě)了,那么里面的很多關(guān)鍵精髓你已經(jīng)知曉,今天就來(lái)練習(xí)個(gè)寫(xiě)Redis部署的腳本吧。
    的頭像 發(fā)表于 12-01 09:16 ?1001次閱讀