《葉問》第6期


2018年7月26日,週四

專訪黃炎:MySQL中間件的性能測試和常規業務性能測試相比有什麼不同?

性能測試的方法論基本都一樣, 以“觀察-分析-改進-再觀察”這個循環進行。

常規業務由於業務交互複雜、技術棧龐雜、性能瓶頸通常集中於業務, 性能測試使用的分析方法比較簡單, 通過診斷業務通常可以低成本地找到性能瓶頸。

MySQL中間件的應用場景比較簡單、技術棧穩定、性能瓶頸通常集中於架構和環境, 性能測試使用的分析方法比較多, 對性能瓶頸的分析通常成本比較高. 另外在這一方面的現有知識積累並不很成體系, 也是成本較高的原因之一。



2018年8月2日,週四

《全方位認識SYS系統庫》公開課精彩互動問答:

1、爲什麼我用root用戶調用call ps_setup_enable_instrument('wait');報錯說存儲過程不存在?

答:sys schema是從MySQL 5.7之後才默認支持,請確保你的數據庫版本正確,且先使用use語句切換默認數據庫,否則請帶上 sys.庫名稱限定前綴。

2、myisam鎖如何查詢?

答:MyISAM 不支持事務,所以不存在事務鎖,但可以查詢表級鎖(例如:MDL鎖),通常表級鎖是Server層添加的鎖,與具體的存儲引擎無關,所以與InnoDB存儲引擎查詢方法一致,建議多多嘗試即可得出答案。

3、爲什麼我查詢session系統表,當前正在執行SQL的會話的progress爲 NULL 呢?

答:對於progress信息,僅支持stages事件(performance_schema.setup_instruments表的name字段以stages開頭的採集項),其他事件類型不支持,且就算是stages類型事件,也不是所有的採集項都支持,可以通過觀察performance_schema.events_stages_current表的WORK_COMPLETED和WORK_ESTIMATED字段,需要不爲NULL值,progress信息就是根據這些不爲NULL的值進行計算的

注意:要成功採集stages性能數據,必須打開stages事件相關的instruments和consumers

如果不滿足以上條件,session視圖查詢到的progress字段就會顯示NULL。

4、線上數據庫,開啓ps和關閉ps功能,mysqld使用的內存會相差20G,可以判斷ps會用到很多主機內存。怎麼判斷ps功能回來多少內存?怎麼進行優化ps對內存的使用?

答:ps的整體功能無法動態開關,必須在數據庫啓動之前就設置好,能夠動態開關的只是ps的具體的instruments採集項和consumers存儲表,對於查詢ps使用的內存總量,可以使用語句 select sys.format_bytes(sum(current_alloc)) from sys.x$memory_global_by_current_bytes where event_name like 'memory/performance_schema%'; 查詢,對於ps內存使用的優化,MySQL 提供了一系列performance_schema打頭的系統變量來進行靈活配置,請根據需要自行調整,默認情況下不建議調整,除非你真的需求,否則就會浪費內存空間。





2018年8月7日,週二

在MySQL中如果發現亂碼的情況該如何判斷原因及應對?

1、直接修改法. alter或者pt-osc等其他工具直接對數據進行修改。

2、備份修改法. 利用mysqldump或者其他邏輯備份進行備份,備份的結果集再利用iconv進行轉換

3、跳過字符集備份.利用mysqldump備份的時候跳過字符集-t --skip-set-charset。在恢復的時候指定表的字符集。

那麼應該如何避免亂碼呢?

1、首先要從應用端到MySQL,採用統一編碼格式。

2、在MySQL的配置中,指定編碼格式。

3、在上線或者導入SQL的時候,要注意本地的編碼集。


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