讀高性能MySQL(第4版)筆記20_Performance Schema和其他

来源:https://www.cnblogs.com/lying7/archive/2023/10/26/17785927.html
-Advertisement-
Play Games

1. 線程 1.1. MySQL服務端是多線程軟體。它的每個組件都使用線程 1.2. 每個線程至少有兩個唯一標識符 1.2.1. 操作系統線程ID 1.2.2. MySQL內部線程ID 2. 對象類型 2.1. OBJECT_TYPE列 2.2. EVENT 2.3. FUNCTION 2.4. P ...


1. 線程

1.1. MySQL服務端是多線程軟體。它的每個組件都使用線程

1.2. 每個線程至少有兩個唯一標識符

1.2.1. 操作系統線程ID

1.2.2. MySQL內部線程ID

2. 對象類型

2.1. OBJECT_TYPE列

2.2. EVENT

2.3. FUNCTION

2.4. PROCEDURE

2.5. TABLE

2.6. TRIGGER

3. Performance Schema

3.1. 一個經常受到批評的特性

3.1.1. 早期版本的MySQL對其的實現不夠理想,導致資源消耗較高

3.2. 提供了有關MySQL伺服器內部運行的操作上的底層指標

3.3. 應該啟用Performance Schema,按需動態地啟用插樁和消費者表,通過它們提供的數據可以解決可能存在的任何問題——查詢性能、鎖定、磁碟I/O、錯誤等

3.4. 充分利用sys schema是解決常見問題的捷徑。這樣做將為你提供一種可以直接從MySQL中測量性能的方法

3.5. 程式插樁(instrument)

3.6. 消費者表(consumer)

3.7. 測量結果存儲在Performance Schema資料庫的多個表中

3.7.1. MySQL 8.0.25社區版的performance_schema中包含110個表

3.8. 摘要是一種通過刪除查詢中的變數來聚合查詢的方法

3.9. 實例表(Instance)

3.9.1. 實例是指對象實例,用於MySQL安裝程式

3.10. 設置表(Setup)

3.10.1. 用於performance_schema的運行時設置

3.11. metadata_locks表保存關於元數據鎖的數據

3.12. Performance Schema收集的數據保存在記憶體中

3.13. 標準MySQL發行版包括一個和performance_schema數據配套使用的sys schema,它全部基於performance_schema上的視圖和存儲常式組成

3.14. 要啟用或禁用Performance Schema,可以將變數performance_schema設置為ON或OFF

3.15. 啟用或禁用performance_schema插樁

3.15.1. 使用setup_instruments表

3.15.1.1. 使用UPDATE語句更改instruments表的對應列值

3.15.2. 調用sys schema中的ps_setup_enable_instrument存儲過程

3.15.2.1. ps_setup_enable_instrument

3.15.2.2. ps_setup_disable_instrument

3.15.3. 使用performance-schema-instrument啟動參數

3.15.3.1. 變數支持performance-schema-instrument='instrument_name=value'這樣的語法

3.16. 啟用或禁用消費者表

3.16.1. 使用Performance Schema中的setup_consumers表

3.16.2. 調用sys     schema中的ps_setup_enable_consumer或ps_setup_disable_consuper存儲過程

3.16.3. 使用performance-schema-consumer啟動參數

3.17. 事務執行期間會一直持有元數據鎖

3.17.1. 要啟用元數據鎖監測,需要啟用wait/lock/meta-data/sql/mdl插樁

4. 升級MySQL

4.1. 新版本和穩定性之間的權衡

4.1.1. MySQL社區的長期成員Stewart Smith創造了著名的dot-20規則

4.1.2. 一款軟體在dot-20版本發佈之前永遠不會真正成熟。

4.2. 進行版本升級是一個有風險的過程

4.2.1. 包括備份所有數據、測試更改,然後運行升級過程

4.3. 大版本的升級可能會讓人望而卻步

4.4. 升級的原因

4.4.1. 安全漏洞

4.4.1.1. 隨著時間的推移,這種可能性會越來越小,但人們仍然有可能在MySQL中發現安全漏洞

4.4.2. 已知的bug

4.4.2.1. 在生產環境中遇到未知或無法解釋的行為時,我們建議你確定當前運行的MySQL版本,然後閱讀後續版本到最新版本的發佈說明

4.4.3. 新功能

4.4.3.1. MySQL並不總是遵循嚴格的主要(major)/次要(minor)/點(point)的版本發佈策略來添加功能

4.4.4. MySQL支持周期的終止

4.4.4.1. 建議保持在受支持的版本內,以便至少仍支持安全修複

4.5. 升級步驟

4.5.1. 制訂一個計劃

4.5.2. 閱讀該版本的發行說明,包括任何微小的更改

4.5.3. 閱讀官方文檔中的升級說明

4.5.4. 對新版本進行測試

4.5.5. 最後執行升級

4.6. 降級

4.6.1. 對於所有主要和次要的版本變更(例如,從8.0降級到5.7或從5.7降級到5.6),降級的唯一方法是恢復升級前的備份

4.6.2. 自從MySQL 8.0以來,不能再降級點發佈版本

4.6.3. 如果你運行的是8.0.25版本,除非導出所有數據並重新導入,否則不能再降級到8.0.24

4.7. 工具

4.7.1. Percona Toolkit提供的工具pt-upgrade

4.8. 最好的使用方法是首先使用慢速查詢日誌或二進位日誌收集最關註的查詢

4.9. 與直接登錄到每台伺服器相比,自動化可以使升級過程易於重覆,並且效率更高,而且因出現拼寫錯誤或者到錯誤的伺服器上執行升級而導致意外停機的概率也更低

5. Kubernetes

5.1. 在Kubernetes技術流行之前,許多公司要麼完全定製技術棧來供應和管理虛擬機和物理伺服器,要麼只完成了將資源生命周期管理一小部分的開源項目黏合在一起

5.2. MySQL不應該是在組織中Kubernetes上運行工作負載的第一個實驗對象


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MDI窗體的相關學習使用 1、設置MDI父窗體 在屬性中找到IsMdiContainer選項,設置為True 2、添加MDI子窗體,在項目中依次選擇添加->窗體,然後一直預設即可 添加後的項目目錄(Form1為父視窗,Form2、Form3為子視窗) 3、在Form1.cs中,創建對應MDI子視窗的 ...
  • 之前學習了一部分的C#基礎,但是感覺會的不多,很多地方依然需要通過做一點小Demo來進行鞏固,那麼這個C#的網路下載器,就來了 原理講解 首先我們編寫代碼之前,我們需要瞭解下網路下載的原理到底是什麼? 學習過C#中IO流部分的知識,或者你有其它的語言的基礎,學習過其它語言的文件IO的基礎,肯定瞭解過 ...
  • 一:背景 1. 講故事 上一篇我們聊到了 Console 為什麼會卡死,讀過那篇文章的朋友相信對 conhost.exe 有了一個大概的瞭解,這一篇更進一步聊一聊視窗的特殊事件 Ctrl+C 底層流轉到底是什麼樣的,為了方便講述,讓 chagtgpt 給我生成一段Ctrl+C 的業務代碼。 clas ...
  • C#棧和隊列的實現 用雙向鏈表實現一個隊列 public class DoubleNode { public int Value; public DoubleNode pre; public DoubleNode next; public DoubleNode(int value) { this.V ...
  • SSL和TLS 瞭解openssl之前,我們首先要瞭解SSL\TLS是什麼。 SSL(Secure Sockets Layer)是一個協議,叫作安全套接層協議。旨在為應用層數據提供加密的傳輸層通道。,即數據從應用層去往傳輸層,會首先被ssl給加密。 但是隨著時間的發展,SSL的繼任者TLS(Tran ...
  • 每次重裝系統後,都要重新安裝軟體,配置環境變數,極為繁瑣。故作環境環境變數備份,常用軟體恢復記錄,前提是你的軟體要安裝在非系統盤,D/E盤等 軟體安裝在非系統盤 開發軟體安裝在非系統盤,建好目錄。重裝系統後,只是重置系統盤,所以這些軟體不需要重新安裝。 譬如 java 相關目錄: PS D:\jav ...
  • 內置參考電壓的使用 應用筆記 前言 CH32V/F 系列單片機能夠在一定的電壓範圍內進行工作,以 CH32V203C8T6 晶元為例,在不使用 USB 外設時,最低工作電壓能夠達到 2.4V。較為寬泛的工作電壓,允許單片機直接使用電池供電,但由於 CH32V203C8T6 晶元沒有獨立的 Vref ...
  • 1、前言 《中庸》有:“九層之台,起於壘土” 之說,那麼對於我們搞技術的人,同樣如此! 對於Linux記憶體管理,你可以說沒有留意過,但是它存在於我們日常開發的方方面面,你所打開的文件,你所創建的變數,你所運行的程式,無不以此為基礎,它可以說是操作系統的基石;只是底層被封裝的太好了,以至於我們在做開發 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...