日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
MySQL數(shù)據(jù)表存儲(chǔ)引擎類(lèi)型及特性

數(shù)據(jù)表類(lèi)型(存儲(chǔ)引擎)

數(shù)據(jù)庫(kù)引擎用于存儲(chǔ)、處理和保護(hù)數(shù)據(jù)的核心服務(wù),利用數(shù)據(jù)庫(kù)引擎可控制訪(fǎng)問(wèn)權(quán)限并快速處理事務(wù),利用數(shù)據(jù)庫(kù)引擎創(chuàng)建用于聯(lián)機(jī)事務(wù)處理或聯(lián)機(jī)分析處理數(shù)據(jù)的關(guān)系數(shù)據(jù)庫(kù),包括創(chuàng)建用于存儲(chǔ)數(shù)據(jù)的表和用于查看、管理、保護(hù)數(shù)據(jù)安全的數(shù)據(jù)庫(kù)對(duì)象(索引、視圖、存儲(chǔ)過(guò)程)。

常見(jiàn)引擎比對(duì)

特性 Myisam InnoDB Memory BDB Archive
存儲(chǔ)限制 ***制 64TB 沒(méi)有 沒(méi)有
事務(wù)安全 - 支持 - 支持 -
鎖機(jī)制 表鎖 行鎖 表鎖 頁(yè)鎖 行鎖
B樹(shù)索引 支持 支持 支持 支持 -
哈希索引 - 支持 支持 - -
全文索引 支持 - - - -
集群索引 - 支持 - - -
數(shù)據(jù)緩存 - 支持 支持 - -
索引緩存 支持 支持 支持 - -
數(shù)據(jù)壓縮 支持 - - - 支持
空間使用 N/A 非常低
內(nèi)存使用
批量插入速度 非常高
外鍵支持 - 支持 - - -

各引擎特點(diǎn)

  • Myisam

mysql默認(rèn)存儲(chǔ)引擎,在磁盤(pán)上存儲(chǔ)成三個(gè)文件.frm(存儲(chǔ)表定義).MYD(MYData存儲(chǔ)數(shù)據(jù))。MYI(MYIndex存儲(chǔ)索引);

沒(méi)有事務(wù)支持,不支持行鎖外鍵,因此當(dāng)insert、update會(huì)鎖定整個(gè)表,效率會(huì)低一些,MyIASM中存儲(chǔ)了行數(shù),如果表的讀操作遠(yuǎn)大于寫(xiě)且不需要事務(wù),MyISAM優(yōu)選。

索引

1.MyISAM引擎索引結(jié)構(gòu)為B+Tree,其中B+Tree的數(shù)據(jù)域存儲(chǔ)的為實(shí)際數(shù)據(jù)地址即索引和實(shí)際數(shù)據(jù)分開(kāi)即非聚集索引。

2.如圖主鍵索引和輔助索引結(jié)構(gòu)一直只不過(guò)主鍵索引要求key唯一。

3.MyISAM中索引檢索算法首先安裝B+Tree搜索算法搜索索引,如果key存在,則取出data域的值,然后以data域的值為地址,讀取相應(yīng)數(shù)據(jù)記錄。

  • Innodb

提供了對(duì)數(shù)據(jù)庫(kù)ACID事務(wù)支持并實(shí)現(xiàn)SQL標(biāo)準(zhǔn)的四種隔離級(jí)別,提供行級(jí)鎖和外鍵約束。Mysql運(yùn)行時(shí)Innodb會(huì)在內(nèi)存中建立緩沖池用于緩沖數(shù)據(jù)和索引,該引擎不支持fulltext類(lèi)型索引且沒(méi)有保存表的行數(shù),select count(*) from table 血藥掃全表。

需要事務(wù)操作時(shí)Innodb***,鎖力度小,寫(xiě)操作不會(huì)鎖定權(quán)標(biāo),所以并發(fā)高時(shí)Innodb引擎效率更高,

相比Myisam寫(xiě)處理效率差一些會(huì)占用更多的磁盤(pán)空間保存數(shù)據(jù)和索引。

索引

1.Innodb索引采用B+Tree且Innodb索引文件本身就是數(shù)據(jù)文件即B+Tree的數(shù)據(jù)域存儲(chǔ)的就是實(shí)際的數(shù)據(jù)如圖Primary Key即聚集索引。這個(gè)索引的key就是數(shù)據(jù)表主鍵,Innodb表本身就是主索引。

2.Innodb輔助索引數(shù)據(jù)域存儲(chǔ)的是相應(yīng)的主鍵的值而不是地址,通過(guò)輔助索引查找時(shí)先找到主鍵再通過(guò)主鍵查找數(shù)據(jù)。所以主鍵不建議過(guò)長(zhǎng)否則輔助索引會(huì)變得很大。

3.Innodb必須有主鍵如果沒(méi)有顯示指定Mysql會(huì)自動(dòng)選擇一個(gè)唯一標(biāo)識(shí)的數(shù)據(jù)記錄為主鍵。

4.聚集索引按主鍵搜索效率十分高效,輔助索引必須檢索兩遍。

5.基于Innodb索引結(jié)構(gòu)可以解釋為什么不建議使用過(guò)長(zhǎng)的主鍵,為什么不建議使用非單調(diào)(非遞增)的記錄做主鍵,B+Tree索引結(jié)構(gòu)導(dǎo)致使用非單調(diào)做主鍵會(huì)相當(dāng)?shù)托А?/p>

常用命令

  • show engines; 查看當(dāng)前支持的引擎和默認(rèn)引擎
  • show table status from mytest; show create table tablename;查看數(shù)據(jù)表引擎
  • 修改默認(rèn)引擎 my.ini [mysqld]下增加 default-storage-engine=InnoDB

名詞概念

  • ACID: (Atomicity)原子性,要么全部執(zhí)行要么不執(zhí)行;(Consistency)一致性,事務(wù)的運(yùn)行不改變數(shù)據(jù)庫(kù)中數(shù)據(jù)的一致性;(Isolation)獨(dú)立性,也稱(chēng)隔離性?xún)蓚€(gè)以上的食物不會(huì)出現(xiàn)交錯(cuò)執(zhí)行的狀態(tài);(Durability)持久性,事務(wù)執(zhí)行成功后數(shù)據(jù)持久保存。
  • BTree 二叉搜索樹(shù)

1.所有非葉子幾點(diǎn)最多有兩個(gè)子節(jié)點(diǎn)(left right)

2.所有節(jié)點(diǎn)存儲(chǔ)一個(gè)關(guān)鍵字

3.非葉子節(jié)點(diǎn)左指針指向小于其關(guān)鍵字的子樹(shù),右指針指向大于其關(guān)鍵字的子樹(shù)

二叉樹(shù)查找:從跟節(jié)點(diǎn)開(kāi)始查詢(xún)關(guān)鍵字與節(jié)點(diǎn)相等,***返回。否則查詢(xún)關(guān)鍵字比節(jié)點(diǎn)小,進(jìn)入左子節(jié)點(diǎn)否則進(jìn)入右節(jié)點(diǎn)。如果左或右為空反饋找不到。如果樹(shù)左右節(jié)點(diǎn)保持平衡如圖1、3棵樹(shù)查詢(xún)性能逼近二分查找。樹(shù)比二分查找的有點(diǎn)是數(shù)據(jù)更新時(shí)不需要移動(dòng)大段內(nèi)存數(shù)據(jù)如3、4圖數(shù)據(jù)更新。

經(jīng)過(guò)一系列的更新可能導(dǎo)致圖2的BTree樹(shù),該樹(shù)搜索成線(xiàn)性無(wú)查詢(xún)優(yōu)勢(shì),在實(shí)際使用中通常使用平衡二叉樹(shù)如圖1、3即“平衡二叉樹(shù)”,平衡算法是一種在B樹(shù)種插入和刪除節(jié)點(diǎn)的策略。

  • B-Tree 多路搜索樹(shù)(非二叉樹(shù))

1.任意非葉子節(jié)點(diǎn)最多只有M個(gè)子節(jié)點(diǎn)且M>2

2.跟節(jié)點(diǎn)的子節(jié)點(diǎn)數(shù)為[2, M]

3.除跟節(jié)點(diǎn)外的非葉子節(jié)點(diǎn)的子節(jié)點(diǎn)樹(shù)為[M/2, M]

4.每個(gè)節(jié)點(diǎn)存放至少M(fèi)/2-1(取上整)和至多M-1個(gè)關(guān)鍵字(至少2個(gè)關(guān)鍵字)

5.非葉子節(jié)點(diǎn)的關(guān)鍵字個(gè)數(shù)=指向兒子的指針個(gè)數(shù)-1

6.非葉子節(jié)點(diǎn)的關(guān)鍵字:K[1],K[2],…,K[M-1]且K[i]

7.非葉子幾點(diǎn)的指針:P[1],P[2],…,P[M],其中P[1]指向關(guān)鍵字小于K[1]的子樹(shù),P[M]指向管關(guān)鍵字大于K[M-1]的子樹(shù),其他P[i]指向關(guān)鍵字屬于(K[i-1], K[i])的子樹(shù)

8.所有葉子節(jié)點(diǎn)位于同一層

B-Tree查找:從跟節(jié)點(diǎn)開(kāi)始,對(duì)節(jié)點(diǎn)內(nèi)的關(guān)鍵字(有序)進(jìn)行二分查找,***結(jié)束。否則進(jìn)入查詢(xún)關(guān)鍵字所屬范圍的兒子節(jié)點(diǎn);重復(fù)直到空或葉子節(jié)點(diǎn)。

由于限制除根節(jié)點(diǎn)外的非葉子節(jié)點(diǎn)至少含有M/2個(gè)兒子,確保了節(jié)點(diǎn)的至少利用率所以B-Tree的性能等價(jià)于二分查找,也就沒(méi)有B樹(shù)平衡的問(wèn)題。由于M/2的限制,插入或刪除節(jié)點(diǎn)時(shí)需要考慮分裂和合并節(jié)點(diǎn)。

B-Tree特性:關(guān)鍵字集合分布在整科樹(shù)種;任何一個(gè)關(guān)鍵字出現(xiàn)且只出現(xiàn)在一個(gè)節(jié)點(diǎn)中;搜索有可能在非葉子節(jié)點(diǎn)結(jié)束;搜索性能等價(jià)于在關(guān)鍵字全集內(nèi)做一次二分查找;自動(dòng)層次控制;

  • B+Tree B-Tree變體多路搜索樹(shù)

1.基本與B-Tree定義相同除以下外

2.非葉子節(jié)點(diǎn)的子樹(shù)指針與關(guān)鍵字個(gè)數(shù)相同

3.非葉子節(jié)點(diǎn)的子樹(shù)指針P[i]指向關(guān)鍵字值屬于(K[i], K[i+1])的子樹(shù)

4.為所有葉子節(jié)點(diǎn)增加一個(gè)鏈指針

5.所有關(guān)鍵字都在葉子節(jié)點(diǎn)出現(xiàn)

B+Tree查找:與B-Tree相同區(qū)別B+樹(shù)只有達(dá)到葉子節(jié)點(diǎn)才***,其性能等價(jià)于關(guān)鍵字全集做一次二分查找。

B+Tree特性:所有關(guān)鍵字都出現(xiàn)在葉子節(jié)點(diǎn)鏈表中,鏈表中關(guān)鍵字有序;不可能在非葉子節(jié)點(diǎn)***;非葉子節(jié)點(diǎn)相當(dāng)于是葉子節(jié)點(diǎn)的索引,葉子節(jié)點(diǎn)相當(dāng)于是存儲(chǔ)關(guān)鍵字?jǐn)?shù)據(jù)的數(shù)據(jù)層;更適合文件索引系統(tǒng);

  • B*Tree B+Tree變體

1.在B+Tree的非跟和非葉子節(jié)點(diǎn)增加指向兄弟的指針

B+Tree分裂:當(dāng)一個(gè)節(jié)點(diǎn)滿(mǎn)時(shí),分配一個(gè)新的節(jié)點(diǎn),將原節(jié)點(diǎn)中1/2的數(shù)據(jù)復(fù)制到新節(jié)點(diǎn),***在父節(jié)點(diǎn)中增加新節(jié)點(diǎn)指針;B+樹(shù)分類(lèi)只影響原節(jié)點(diǎn)和父節(jié)點(diǎn)不影響兄弟節(jié)點(diǎn)。

B*Tree分裂:一個(gè)節(jié)點(diǎn)滿(mǎn)時(shí),如果下一個(gè)兄弟節(jié)點(diǎn)未滿(mǎn),將一部分?jǐn)?shù)據(jù)移到兄弟幾點(diǎn)中,再在源節(jié)點(diǎn)插入關(guān)鍵字,***修改父節(jié)點(diǎn)中兄弟節(jié)點(diǎn)的關(guān)鍵字;如果兄弟節(jié)點(diǎn)也滿(mǎn)了,則在源節(jié)點(diǎn)與兄弟節(jié)點(diǎn)之間增加新節(jié)點(diǎn),并各賦值1/3的數(shù)據(jù)到新節(jié)點(diǎn),***在父節(jié)點(diǎn)增加新節(jié)點(diǎn)的指針。B*Tree分配節(jié)點(diǎn)的概率比B+Tree要低,空間使用率高。

各個(gè)樹(shù)比對(duì)

  • 各個(gè)樹(shù)比對(duì)

類(lèi)型 特點(diǎn)
BTree 每個(gè)節(jié)點(diǎn)只存儲(chǔ)一個(gè)關(guān)鍵字,等于***,小于左節(jié)點(diǎn),大于右節(jié)點(diǎn)
B-Tree 多路搜索樹(shù),每個(gè)節(jié)點(diǎn)存儲(chǔ)M/2到M個(gè)關(guān)鍵字,非葉子節(jié)點(diǎn)存儲(chǔ)指向關(guān)鍵字范圍的子節(jié)點(diǎn),所有關(guān)鍵字在整棵樹(shù)中出現(xiàn),且只出現(xiàn)一次,非葉子節(jié)點(diǎn)可以***
B+Tree B-Tree基礎(chǔ)上尉葉子節(jié)點(diǎn)增加鏈表指針,所有關(guān)鍵字都在葉子節(jié)點(diǎn)出現(xiàn),非葉子節(jié)點(diǎn)作為葉子節(jié)點(diǎn)的索引,B+Tree葉子節(jié)點(diǎn)才***
B*Tree B+Tree基礎(chǔ)上為非也自己點(diǎn)也增加鏈表指針,將節(jié)點(diǎn)的***利用率從1/2提高到2/3

新聞名稱(chēng):MySQL數(shù)據(jù)表存儲(chǔ)引擎類(lèi)型及特性
文章地址:http://m.5511xx.com/article/cdpgdph.html