日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql必须的组件_mysql innodb的重要组件

發布時間:2023/12/4 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql必须的组件_mysql innodb的重要组件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

innodb包涵如下幾個組件

一、innodb_buffer_pool:

1  它主要用來緩存數據與索引(準確的講由于innodb中的表是由聚集索引組織的,所以數據只不是過主鍵這個索引的葉子結點)。

二、change buffer:

1  如果更新語句要更新二級索引的記錄,但是記錄所在的頁面這個里面并沒有在innodb_buffer_pool中,innodb會把這個對二級索引

面頁的更新動作緩存到innodb_buffer_pool的一個特定區域(change buffer);等到之后如果有別的事務B要去讀這個二級索引頁的時候,

由于頁面還沒有,在innodb_buffer_pool中所以B事務會先把頁面載入innodb_buffer_pool,這樣子目標頁面就算進入innodb_buffer_pool了,

接下來就可根據change buffer的內容來更新索引頁面了。這樣可以節約IO操作,提高性能。

2  當然別的刷新機(把change buffer中的變更落盤)制也是有的,比如說當mysql比較空閑的時候,slow shutdown 的過程當中也會刷新

change buffer中的內容到磁盤

3  監控change buffer

show engine innodb status;-------------------------------------

INSERT BUFFER AND ADAPTIVE HASH INDEX

-------------------------------------

Ibuf: size 1, free list len 0, seg size 2, 0merges

merged operations:insert 0, delete mark 0, delete 0discarded operations:insert 0, delete mark 0, delete 0Hashtable size 34679, node heap has 0buffer(s)

Hashtable size 34679, node heap has 0buffer(s)

Hashtable size 34679, node heap has 0buffer(s)

Hashtable size 34679, node heap has 0buffer(s)

Hashtable size 34679, node heap has 0buffer(s)

Hashtable size 34679, node heap has 0buffer(s)

Hashtable size 34679, node heap has 0buffer(s)

Hashtable size 34679, node heap has 0buffer(s)0.00 hash searches/s, 0.00 non-hash searches/s---

LOG

---

Log sequence number 24635311

Log flushed up to 24635311Pages flushed upto 24635311Lastcheckpoint at 24635302

0 pending log flushes, 0pending chkp writes10 log i/o's done, 0.00 log i/o's/second

三、自適應hash索引:

1  如果表中的某些行會非常頻繁的用到,由于innodb表是B+樹組織起來的這一特性,最好的情況下innodb也是先讀索引頁,再讀數據頁,然后

找到數據;hash索引是用B+樹索引的hash為鍵,以B+樹索引的值(指向的頁面)為值的;由于有了hash索引的引入,innodb可以通過計算索引的hash

值就直接定位到數據所在的頁面;所以對于非范圍查找的情況下hash索引這樣的處理方式是有優勢的。

2  要想innodb能用上bash索引還要有幾個條件1、innodb_adaptive_hash_index=1 這樣innodb就會啟用hash索引了;然而這只是完成了一半,

innodb并不是為表中的所有行建立hash索引的,只是表中頻繁訪問的行才會為它建立hash索引,為冷數據建立hash索引是一種浪費;

innodb_adaptive_hash_index_parts 可以設置hash索引的分區,這種可以提升并發度。

四、redo log buffer:

redo log buffer 中的內容會被定期的刷新到磁盤,如果redo log buffer 設置的比較大它有利于mysql對大事務的處理,原因在于在大事務的處理中

可以把redo 寫入到redo log buffer 而不是寫入到磁盤,由于內存比磁盤快,所以大事務的處理速度上也會比較快;也就是說redo log buffer 比較大

的情況下在commit 之前可以減少一些沒有必要的刷磁盤操作。

五、系統表空間:

1  innodb 系統表空間中包涵如下內容:innodb 數據字典,一些存儲區域如 doublewrite\changebuffer\undolog ,如果innodb_file_per_table

沒有打開那么那么用戶建的表就會保存到這個系統表空間中,這種情況下系統表空間也就可以看面它包涵共享表空間了。

六、

----

總結

以上是生活随笔為你收集整理的mysql必须的组件_mysql innodb的重要组件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。