新聞中心
這篇文章主要為大家展示了“InnoDB體系架構(gòu)是怎么樣的”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“InnoDB體系架構(gòu)是怎么樣的”這篇文章吧。
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計,汾西網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:汾西等地區(qū)。汾西做網(wǎng)站價格咨詢:13518219792
InnoDB的整體架構(gòu)包括多個內(nèi)存組成的緩沖池
和多個后臺線程
。
緩存池緩存硬盤數(shù)據(jù)(解決CPU速度和磁盤速度嚴(yán)重不匹配問題),后臺進(jìn)程保證緩存池和硬盤數(shù)據(jù)一致性,并保證數(shù)據(jù)異常宕機(jī)時能恢復(fù)到正常狀態(tài)。
緩存池
包括三個部分:redo log buffer,innodb_buffer_pool,innodb_additional_mem_pool。
redo log buffer:緩存重做日志。
innodb_buffer_pool:緩存數(shù)據(jù),索引信息。
innodb_additional_mem_pool:緩存LRU鏈表等。
后臺線程
包括master thread,IO thread,purge thread,page cleaner thread。
master thread:負(fù)責(zé)刷新緩存數(shù)據(jù)到硬盤上。
IO thread:處理insert buffer,重做日志,讀寫請求等回調(diào)。
purge thread:回收undo頁。
page cleaner thread:刷新臟頁。

InnoDB內(nèi)部協(xié)調(diào)管理
一條SQL進(jìn)入MySQL服務(wù)器,會依次經(jīng)過連接池模塊(進(jìn)行鑒權(quán),生成線程),查詢緩存模塊(是否被緩存過),SQL接口模塊(簡單的語法校驗(yàn)),查詢解析模塊,優(yōu)化器模塊(生成語法樹),然后在進(jìn)入InnoDB存儲引擎模塊。至此,剛才的過程上篇都寫過了,所以這邊就一筆帶過。
進(jìn)入InnoDB后,首先會判斷該SQL涉及到的頁是否存在于緩存中,注意MySQL是每次從硬盤中加載相應(yīng)的頁到內(nèi)存中,進(jìn)行相關(guān)操作的。如果不存在,則加載數(shù)據(jù)到緩存中。
其次,如果是select語句,則讀取相關(guān)語句,并將查詢結(jié)果返回值服務(wù)器。如果是update,insert,delete語句,則讀取相關(guān)的頁面,先試圖給該SQL涉及的記錄枷鎖。
接著,加鎖成功后,先寫undo頁,邏輯記錄這些記錄修改前的狀態(tài),然后在修改相關(guān)記錄,這些操作會同步到redo log buffer,繼而生成重新日志。
最后,修改完成,將臟數(shù)據(jù)刷新到硬盤上。
以上是“InnoDB體系架構(gòu)是怎么樣的”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享名稱:InnoDB體系架構(gòu)是怎么樣的
文章網(wǎng)址:http://fisionsoft.com.cn/article/pggsoc.html