大家好,今天繼續(xù)我們Inndob文件系統(tǒng)的學(xué)習(xí),首先我們要知道Innodb屬于整個MYSQL體系中處于最底層的存儲層(client->server->storage),然后嘞,要對innodb整體的體系結(jié)構(gòu)有一個全局的概念,如下圖:
專注于為中小企業(yè)提供網(wǎng)站設(shè)計、成都做網(wǎng)站服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)瑪多免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。下面我們對上圖的模塊簡單介紹一波,讓大家對innodb有一個更清晰的認識。
1、?Handler API:這個模塊主要是用來和server層進行交互的,提供了一些比如save、delete、query等api供server層調(diào)用,不同的存儲引擎各自有不同的實現(xiàn)。
2、中間虛線上半部分是邏輯層,每個訪問請求都會產(chǎn)生事務(wù),事務(wù)處理都會產(chǎn)生鎖(表鎖、行鎖、間隙鎖、臨建鎖等),操作對象是表、索引、B+tree等。對數(shù)據(jù)頁面的訪問需要保證讀寫一致性,需要讀寫鎖(物理鎖),為了高效定位和管理‘頁’,需要用到文件管理系統(tǒng)。
3、Innodb為了保證存儲的效率,在邏輯處理層和物理層之間是有一層buffer緩沖區(qū)的,這里主要是指日志緩沖區(qū)和Innodb_buffer_pool緩沖區(qū),和其他中間件的設(shè)計原則類似,要想保證性能,首先寫pageCache,再順序?qū)懘疟P,這是決定一個帶有存儲功能中間件性能關(guān)鍵點。
4、innodb_buffer_pool是決定mysql性能的核心,mysql對數(shù)據(jù)絕大部分的操作都是先在此內(nèi)存中進行,然后再以同步或異步的方式寫入到磁盤上。畢竟操作內(nèi)存的速度指定比直接操作磁盤要快很多,redis的設(shè)計就是一個很好的實踐。
5、每個表可以單獨一個ibd文件(獨立表空間)也可以多個表一個ibd文件(共享表空間),默認是一個表一個。然后這里面存的是啥玩意呢?存的是B+tree數(shù)據(jù)、索引、插入緩存等信息。其余的信息,如列、屬性等信息還是存儲在默認的ibdata1文件里面。對于B+tree的結(jié)構(gòu)大家應(yīng)該也有一個大致的了解吧。首先基于INNODB存儲引擎的表一般都是通過主鍵為索引值構(gòu)建的聚簇索引樹(所以一般我們建表都要指定主鍵,不指定的話INNODB也會幫你生成一個隱藏ROW_ID作為主鍵,所以我們在設(shè)計表結(jié)構(gòu)的時候最好指定一個主鍵,不然的話會影響數(shù)據(jù)插入性能,插入數(shù)據(jù)需要生成ROW_ID,而生成的ROW_ID是全局共享的,并發(fā)會導(dǎo)致鎖競爭,影響性能;mysql生成的自增主鍵大小是有上限的0~2^48-1,超過上限之后會出現(xiàn)主鍵沖突錯誤)。
生成的這個棵B+tree樹擁有全量數(shù)據(jù),數(shù)據(jù)都順序的存放在葉子節(jié)點(每個節(jié)點不超過16k,超過的會放到溢出頁,葉子節(jié)點只放一個引用地址),一般3層葉子節(jié)點即可存放2千萬數(shù)據(jù)了,4層一般上億條數(shù)據(jù),通過穩(wěn)定的IO次數(shù)即可查到指定數(shù)據(jù)。
最后,索引是方便查詢的,索引列的數(shù)據(jù)不適合放大的,它占用的空間一多,那么B+ tree一層中能放的個數(shù)就越少。索引列一多,插入就越慢,如果沒有索引,插入一行時只需要對主鍵進行排序即可。如果有很多列都有索引,那么插入時,就要做很多次排序。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
文章名稱:MYSQL底層原理4-Innodb文件系統(tǒng)的基本結(jié)構(gòu)-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://jinyejixie.com/article28/dijjcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、品牌網(wǎng)站建設(shè)、網(wǎng)站營銷、關(guān)鍵詞優(yōu)化、動態(tài)網(wǎng)站、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容