自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL數(shù)據(jù)表存儲(chǔ)引擎類型及特性

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

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

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

常見引擎比對(duì)

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

各引擎特點(diǎn)

  • Myisam

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

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

索引

 

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

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

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

  • Innodb

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

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

相比Myisam寫處理效率差一些會(huì)占用更多的磁盤空間保存數(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)的主鍵的值而不是地址,通過輔助索引查找時(shí)先找到主鍵再通過主鍵查找數(shù)據(jù)。所以主鍵不建議過長否則輔助索引會(huì)變得很大。

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

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

5.基于Innodb索引結(jié)構(gòu)可以解釋為什么不建議使用過長的主鍵,為什么不建議使用非單調(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ù)庫中數(shù)據(jù)的一致性;(Isolation)獨(dú)立性,也稱隔離性兩個(gè)以上的食物不會(huì)出現(xiàn)交錯(cuò)執(zhí)行的狀態(tài);(Durability)持久性,事務(wù)執(zhí)行成功后數(shù)據(jù)持久保存。
  • BTree 二叉搜索樹

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

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

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

 

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

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

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

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)樹為[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]<K[i+1]

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

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

 

B-Tree查找:從跟節(jié)點(diǎn)開始,對(duì)節(jié)點(diǎn)內(nèi)的關(guān)鍵字(有序)進(jìn)行二分查找,***結(jié)束。否則進(jì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à)于二分查找,也就沒有B樹平衡的問題。由于M/2的限制,插入或刪除節(jié)點(diǎn)時(shí)需要考慮分裂和合并節(jié)點(diǎn)。

B-Tree特性:關(guān)鍵字集合分布在整科樹種;任何一個(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變體多路搜索樹

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

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

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

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

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

 

B+Tree查找:與B-Tree相同區(qū)別B+樹只有達(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)滿時(shí),分配一個(gè)新的節(jié)點(diǎn),將原節(jié)點(diǎn)中1/2的數(shù)據(jù)復(fù)制到新節(jié)點(diǎn),***在父節(jié)點(diǎn)中增加新節(jié)點(diǎn)指針;B+樹分類只影響原節(jié)點(diǎn)和父節(jié)點(diǎn)不影響兄弟節(jié)點(diǎn)。

B*Tree分裂:一個(gè)節(jié)點(diǎn)滿時(shí),如果下一個(gè)兄弟節(jié)點(diǎn)未滿,將一部分?jǐn)?shù)據(jù)移到兄弟幾點(diǎn)中,再在源節(jié)點(diǎn)插入關(guān)鍵字,***修改父節(jié)點(diǎn)中兄弟節(jié)點(diǎn)的關(guān)鍵字;如果兄弟節(jié)點(diǎ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è)樹比對(duì)

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

類型 特點(diǎn)
BTree 每個(gè)節(jié)點(diǎn)只存儲(chǔ)一個(gè)關(guān)鍵字,等于***,小于左節(jié)點(diǎn),大于右節(jié)點(diǎn)
B-Tree 多路搜索樹,每個(gè)節(jié)點(diǎn)存儲(chǔ)M/2到M個(gè)關(guān)鍵字,非葉子節(jié)點(diǎn)存儲(chǔ)指向關(guān)鍵字范圍的子節(jié)點(diǎn),所有關(guān)鍵字在整棵樹中出現(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

 

責(zé)任編輯:龐桂玉 來源: qinwei的博客
相關(guān)推薦

2014-07-25 09:35:52

LinuxMySQL

2010-11-22 13:53:46

MySQL數(shù)據(jù)表

2011-05-03 10:09:37

MySQL存儲(chǔ)引擎

2019-06-17 16:17:03

存儲(chǔ)MySQL主流

2010-06-09 16:55:47

MySQL數(shù)據(jù)表

2010-11-24 13:11:06

MySQL遍歷數(shù)據(jù)表

2011-08-05 14:31:04

mysql_conve批量轉(zhuǎn)換MYSQL數(shù)據(jù)MYISAM

2011-03-15 09:15:06

MyisamchkMySQL

2017-05-25 10:23:13

數(shù)據(jù)a表b表

2011-03-15 14:36:04

MyisamchkMySQL數(shù)據(jù)表

2010-05-12 18:35:25

MySQL數(shù)據(jù)表

2024-06-20 08:03:35

MySQL數(shù)據(jù)表版本

2010-11-24 10:52:57

Mysql字符集

2010-06-13 17:35:17

MySQL數(shù)據(jù)表

2009-09-07 16:13:14

LINQ to SQL

2011-02-21 13:06:34

SQL Servr 2

2010-11-23 13:51:55

MySQL數(shù)據(jù)表

2017-12-15 10:20:56

MySQLInnoDB同步機(jī)制

2018-08-31 10:53:25

MySQL存儲(chǔ)引擎

2012-03-20 11:16:24

MySQLMyISAM
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)