mysql關於performance schema實現的一些引用和說明

mysql關於performance schema實現的一些引用說明

本文章在學習mysql源代碼時,摘抄自網絡的一些學習資料,記錄一下,以備以後進行相應的查詢:
本文部分資料來源地址:https://blog.csdn.net/u010220902/article/details/53364284

performance_schema數據庫接口設計的一些實現思路:

performance_schema是一種內省服務端運行時內部執行情況的辦法,INFORMATION_SCHEMA主要用來觀察數據庫元信息的,而他專注於數據庫的表現信息。
對於用戶來說他的表現形勢就是一個專用的數據庫,叫做PERFORMANCE_SCHEMA,其中的表可以查到服務器內部的狀態或事改變他的配置。performance_schema記錄mysql內部服務器的狀態或事件等的下數據庫引擎。對於實現來說,它是一個專注收集服務器端測量信息的存儲引擎

performance_schema對於不同的需求、不同的組件其暴露的接口也是不同的。

peformance_schema的實現原則是:其檢測目標服務器的運行情況,而且本息的行爲不能影響到目錄服務器的運行。
這些影響主要包括:
1.不能影響編譯器,也就是不能增加SQL的種類、語法等
2.所有的實現函數必須返回void並且不能有任何異常影響程序的執行)
3.所有實現類不能佔用任何搶佔資源例如鎖、信號量
4.不能在程序開始之後分配任何資源,必須在MySQL的主流程之情把資源都分配好(看了這條約束,之前爲什麼要有pre_initialize_performance_schema這個方法,而且寫在所有啓動程序前面,並且幾乎都是全局的變量、數組就可以理解了。)

主要實現

mysql默認的主要實現方式有兩個層次的實現:
1.暴露了performance schema儀器類原始測量函數的底層接口(ABI)。代碼主要在mysql/psi/psi.h裏面。
2.一個抽象過的API層,提供了很多封裝之後的測量函數。代碼主要在mysql/psi/mutex_mutex.h和mysql/psi/mutex_file.h中。前者主要是測量互斥鎖、讀寫鎖和信號量,後者主要是測量文件IO的。
而每個儀器的測量點的API編程模式通常是首選通知performance schema開始測量了,接着執行測量的代碼,最後告訴performance schema測量完成

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章