91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MYSQL內存機制分析和監控

發布時間:2021-09-16 10:54:52 來源:億速云 閱讀:138 作者:chen 欄目:大數據

本篇內容介紹了“MYSQL內存機制分析和監控”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

1 為什么要有buffer pool 或者內存,緩存在MYSQL 數據庫中到底是為了什么?

估計很多人很快的回答,性能。是的內存在數據庫中其實就是為了性能,試想如果磁盤的速度和內存一樣快,還需要內存,buffer pool ,緩存嗎?

2 Buffer pool 緩存,內存,到底在MYSQL 中起到了什么作用?

首先所有的數據處理和變化都是在內存中,磁盤中的數據僅僅是為了持久化而,所以最復雜的處理關系,類似于死鎖,block ,互斥,數據字典,bulabula 等等都存在于內存中。所以一問道死鎖,千萬別和別人說是因為磁盤慢了之類的 ,因為他不發生在磁盤,而是在內存中。

3 磁盤的數據page 和 內存的數據page 有關嗎?

是的是有關系的,磁盤的數據頁面是要映射到內存中去的,這也就牽扯到另外一件事情,就是page頁面的大小,在PG 中磁盤的頁面大小是可以調整的,MYSQL 默認是16KB ,ORACLE 是 8 KB, SQL SERVER 也是 8KB。換句話也就是說,有些數據庫的頁面大小是可以調整的,有些是不可以的,同時他們的磁盤的頁面會直接映射到內存中。

4 頁面的大小對數據庫的性能有什么影響?

這個問題其實我也是一直在書籍和,google中去找尋,但一直沒有一個答案或者可以讓人信服的答案,這里就嘗試自己分析一下,以MYSQL的頁面16KB為為例,如果一次讀入的數據是8KB,那16KB只能使用其中一半,如果后期有在讀入8KB的數據,可以在使用另外一半的內存,但是如果讀入的是4KB的數據,則可能會浪費 4KB的cache,所以分配的頁面太大會有浪費的情況,那有人說,8KB的比16KB的要小,所以浪費的空間少,但從另一個角度來分析,如果一次我要讀入12KB的數據呢,那是不是要分成兩個page?效率上是否比一個頁面能承載的數據在處理上要麻煩,并且一個數據頁分成兩個,是否還有其他需要進行的事情,例如連接 等等?

所以一個數據頁的大小,見仁見智,不是非黑即白,需要根據具體的問題具體分析,如果你的MYSQL使用的是壓縮頁面,16KB 或更大的頁面或許會更好。所以有的時候,數據庫的頁面可以被調整,根據業務或者根據某種特性來進行設置,會保證更好的性能,而類似 SQL SERVER  ,ORACLE 這樣的數據庫是不可以調整的。

5 內存中的數據是否有退出機制?

回答是一定的,任何數據庫的內存的數據都有退出的機制,否則內存難道要和數據的大小一致,在目前的硬件技術上,這是不大可能的,所以內存必須有退出的機制。從另外一個事情上,也反應出硬件的變化,其實對數據庫的軟件設計是有聯動性或者部分決定性的。

6 內存中涉及管理內存頁的是怎么做的

MYSQL 中的內存管理主要使用的是 LRU 算法(變種),Least Recently Used,在MYSQL 的 BUFFER POOL 中是包含 New SUBLIST 和  Old Sublist

MYSQL內存機制分析和監控

上面的圖大家都看見了,大致LRU (進化)的算法, 新讀入內存的都放入到 young 區域 5/8 buffer pool ,而經常被調用的頁面則會在一個算法后從5/8 放入到 3/8中,具體其實如果讀過 ORACLE 的內存管理,其中有一段和MYSQL 是大致相同的,都是隊列的概念+頻繁提取的數據提前。

當然數據頁中的數據是變化的,也就是說變化的數據頁就是臟頁,而臟頁就要刷入到磁盤中進行合并,進行永久化,當然這個過程可以單獨寫一篇甚至多篇文字,這里就不展開了。

這里提出一個問題,如果數據頁變化了,我在去讀這個數據頁怎么辦?

這里大概率是你要去讀change buffer ,(insert buffer replacement),而不會等待你的臟頁刷新到磁盤,在讀到內存,在進行后續的工作。

那如何查詢這些內存的信息,就對系統的性能變得尤為重要了

查看當然可以被收集的內存 ITEM 信息

SELECT * FROM performance_schema.setup_instruments
      WHERE NAME LIKE '%memory/innodb%'

對某些不進行收集的內存信息進行收集

update performance_schema.setup_instruments set enabled = 'yes' where name like  'memory/innodb/buf_buf_pool'  

同時通過語句可以獲得,內存在MYSQL 中的分配信息

MYSQL內存機制分析和監控

其實關于MYSQL的內存管理,當然我們也可以通過另外的方法去訪問,見下圖,當然這應該是最基本的應該被掌握的。怎么查看 Do you get it ?

MYSQL內存機制分析和監控

“MYSQL內存機制分析和監控”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

甘德县| 伊宁市| 米易县| 宕昌县| 胶南市| 贵州省| 阿拉尔市| 习水县| 建平县| 临沧市| 宿松县| 安国市| 宜阳县| 林甸县| 贺州市| 长岭县| 长宁县| 白朗县| 潞城市| 浦东新区| 嘉禾县| 汉中市| 高台县| 台湾省| 育儿| 威宁| 辽中县| 宜兰市| 鹤峰县| 新源县| 无锡市| 赤城县| 梁平县| 蒲江县| 隆化县| 巩留县| 衢州市| 弥渡县| 昆山市| 襄城县| 紫阳县|