最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL數(shù)據(jù)庫自帶系統(tǒng)數(shù)據(jù)庫功能超詳細介紹

 更新時間:2026年05月15日 09:10:02   作者:五老新  
MySQL能夠存儲和管理大量的結(jié)構(gòu)化數(shù)據(jù),支持多種數(shù)據(jù)類型,下面這篇文章主要介紹了MySQL數(shù)據(jù)庫自帶系統(tǒng)數(shù)據(jù)庫功能的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言

MySQL自帶的系統(tǒng)數(shù)據(jù)庫是數(shù)據(jù)庫管理的核心組成部分,主要包含mysql、information_schemaperformance_schema、sys,它們不用于存儲業(yè)務(wù)數(shù)據(jù),而是用于存儲系統(tǒng)元數(shù)據(jù)、權(quán)限信息和性能監(jiān)控數(shù)據(jù)。這些系統(tǒng)數(shù)據(jù)庫是MySQL正常運行和高效管理的關(guān)鍵。

一、mysql

mysql是 MySQL 的核心系統(tǒng)數(shù)據(jù)庫,它是 MySQL 服務(wù)器運行的"大腦"。這個數(shù)據(jù)庫存儲了所有與用戶權(quán)限、系統(tǒng)配置元數(shù)據(jù)相關(guān)的信息,是 MySQL 正常運行的關(guān)鍵。

1. 核心特性

  • 用戶權(quán)限管理:存儲所有用戶賬戶信息、權(quán)限分配及角色定義,是數(shù)據(jù)庫安全控制的核心。
  • 系統(tǒng)配置存儲:保存數(shù)據(jù)庫的全局配置參數(shù),如服務(wù)器變量、存儲引擎設(shè)置等。
  • 元數(shù)據(jù)維護:記錄數(shù)據(jù)庫對象(如表、視圖、存儲過程等)的創(chuàng)建信息及關(guān)聯(lián)關(guān)系。

2. 核心表

表分類表名用途說明
用戶權(quán)限管理user存儲全局用戶賬戶及權(quán)限信息包含用戶名、主機名、加密密碼、全局權(quán)限(如SELECT_priv、INSERT_priv)等字段,是數(shù)據(jù)庫安全控制的核心
數(shù)據(jù)庫級權(quán)限db管理數(shù)據(jù)庫級別的訪問權(quán)限指定用戶對特定數(shù)據(jù)庫的操作權(quán)限(如CREATE、DROP),權(quán)限粒度細化到數(shù)據(jù)庫級別
表級權(quán)限tables_priv控制表級別的操作權(quán)限記錄用戶對具體表的權(quán)限(如UPDATE、DELETE),支持更細粒度的權(quán)限管理
列級權(quán)限columns_priv實現(xiàn)列級別的訪問控制定義用戶對表中特定列的權(quán)限(如僅允許修改某列數(shù)據(jù)),實現(xiàn)精細化權(quán)限管理
程序?qū)ο髾?quán)限procs_priv管理存儲過程/函數(shù)權(quán)限存儲用戶對存儲過程和函數(shù)的執(zhí)行權(quán)限,控制程序?qū)ο蟮脑L問
代理權(quán)限proxies_priv管理代理用戶權(quán)限允許一個用戶以另一個用戶身份執(zhí)行操作,支持權(quán)限代理機制
服務(wù)器配置servers存儲服務(wù)器配置信息記錄MySQL服務(wù)器實例的配置參數(shù),如服務(wù)器地址、端口等
事件調(diào)度器event管理事件調(diào)度器信息包含事件名稱、執(zhí)行時間表達式、狀態(tài)(ENABLED/DISABLED)等,用于定時任務(wù)管理
時區(qū)信息time_zone存儲時區(qū)配置包含時區(qū)名稱、時區(qū)偏移量、是否啟用等信息,支持多時區(qū)應(yīng)用
時區(qū)轉(zhuǎn)換time_zone_leap_second記錄閏秒信息存儲閏秒發(fā)生時間及調(diào)整值,確保時間計算的準確性
時區(qū)名稱映射time_zone_name時區(qū)名稱與ID映射關(guān)聯(lián)時區(qū)名稱與內(nèi)部標識符,方便時區(qū)查詢
時區(qū)偏移time_zone_transition時區(qū)轉(zhuǎn)換歷史記錄時區(qū)偏移量的歷史變化,支持時間相關(guān)計算
插件管理plugin存儲已安裝插件信息包含插件名稱、狀態(tài)(ACTIVE/INACTIVE)、版本、描述等,支持插件擴展
服務(wù)器變量global_variables存儲全局服務(wù)器變量包含變量名(如max_connections)、當前值、默認值等,影響服務(wù)器行為
會話變量session_variables存儲會話級變量與全局變量類似,但僅影響當前會話,支持個性化配置
幫助信息help_topic存儲幫助主題信息包含幫助主題ID、名稱、描述等,支持內(nèi)置幫助系統(tǒng)
幫助內(nèi)容help_relation關(guān)聯(lián)幫助主題與內(nèi)容映射幫助主題與詳細內(nèi)容的關(guān)聯(lián)關(guān)系,構(gòu)建幫助系統(tǒng)框架
幫助類別help_category管理幫助分類定義幫助信息的分類體系,方便用戶按類別查詢幫助
慢查詢?nèi)罩?/td>slow_log記錄慢查詢信息存儲執(zhí)行時間超過閾值的SQL語句,用于性能分析(需啟用慢查詢?nèi)罩竟δ埽?/td>

3. 權(quán)限管理說明

3.1. 權(quán)限層次結(jié)構(gòu)

MySQL 的權(quán)限是分層管理的,從高到低依次為:

  • 全局權(quán)限user表):影響整個服務(wù)器。
  • 數(shù)據(jù)庫級別權(quán)限db表):影響特定數(shù)據(jù)庫。
  • 表級別權(quán)限tables_priv表):影響特定表。
  • 列級別權(quán)限columns_priv表):影響特定列。

3.2. 權(quán)限類型

權(quán)限類型說明作用范圍
SELECT查詢數(shù)據(jù)全局、數(shù)據(jù)庫、表、列
INSERT插入數(shù)據(jù)全局、數(shù)據(jù)庫、表、列
UPDATE更新數(shù)據(jù)全局、數(shù)據(jù)庫、表、列
DELETE刪除數(shù)據(jù)全局、數(shù)據(jù)庫、表、列
CREATE創(chuàng)建數(shù)據(jù)庫/表全局、數(shù)據(jù)庫
DROP刪除數(shù)據(jù)庫/表全局、數(shù)據(jù)庫
GRANT OPTION授予權(quán)限全局、數(shù)據(jù)庫
CREATE TEMPORARY TABLES創(chuàng)建臨時表全局、數(shù)據(jù)庫
LOCK TABLES鎖定表全局、數(shù)據(jù)庫
CREATE VIEW創(chuàng)建視圖全局、數(shù)據(jù)庫
SHOW VIEW查看視圖全局、數(shù)據(jù)庫
EXECUTE執(zhí)行存儲過程全局、數(shù)據(jù)庫、表

4. 常用操作

4.1. 查看所有用戶

SELECT User, Host FROM mysql.user;

4.2. 授予權(quán)限

-- 授予用戶對test數(shù)據(jù)庫的SELECT權(quán)限
GRANT SELECT ON test.* TO 'user'@'localhost';

-- 授予用戶對所有數(shù)據(jù)庫的SELECT權(quán)限
GRANT SELECT ON *.* TO 'user'@'localhost';

-- 授予用戶對特定表的權(quán)限
GRANT SELECT, INSERT ON test.users TO 'user'@'localhost';

-- 授予用戶對特定列的權(quán)限
GRANT SELECT (name, email) ON test.users TO 'user'@'localhost';

4.3. 查看特定用戶的權(quán)限

-- 查看用戶權(quán)限
SHOW GRANTS FOR 'user'@'localhost';

-- 查看用戶權(quán)限的詳細信息
SELECT * FROM mysql.user WHERE User = 'user' AND Host = 'localhost';

4.4. 修改權(quán)限

-- 修改用戶密碼
ALTER USER 'user'@'localhost' IDENTIFIED BY 'new_password';

-- 重置密碼
SET PASSWORD FOR 'user'@'localhost' = PASSWORD('new_password');

-- 刷新權(quán)限
FLUSH PRIVILEGES;

4.5. 刪除用戶權(quán)限

-- 刪除用戶權(quán)限
REVOKE SELECT ON test.* FROM 'user'@'localhost';

-- 刪除用戶
DROP USER 'user'@'localhost';

5. 常見問題

5.1. 無法登錄

  • 檢查user表中的用戶和密碼
  • 確認Host字段是否匹配連接IP
  • 使用FLUSH PRIVILEGES刷新權(quán)限

5.2. 權(quán)限不生效

  • 確認是否執(zhí)行了FLUSH PRIVILEGES
  • 檢查權(quán)限是否在正確的表中(如db表 vs user表)

5.3. 密碼重置

-- 停止MySQL服務(wù)
sudo systemctl stop mysql

-- 以跳過權(quán)限檢查的方式啟動
sudo mysqld_safe --skip-grant-tables &

-- 登錄MySQL
mysql -u root

-- 重置密碼
USE mysql;
UPDATE user SET authentication_string = PASSWORD('new_password') WHERE User = 'root';

-- 重啟MySQL服務(wù)
sudo systemctl restart mysql

二、information_schema

information_schema是 MySQL 的核心系統(tǒng)數(shù)據(jù)庫,它提供了一個虛擬數(shù)據(jù)庫,其中包含所有數(shù)據(jù)庫的元數(shù)據(jù)信息。這個數(shù)據(jù)庫不存儲實際業(yè)務(wù)數(shù)據(jù),而是提供關(guān)于數(shù)據(jù)庫結(jié)構(gòu)、表、列、索引、視圖等的描述性信息。

1. 核心特性

  • 標準系統(tǒng)數(shù)據(jù)庫:所有 MySQL 版本都支持。
  • 只讀視圖:不能直接修改數(shù)據(jù),只能查詢。
  • 動態(tài)生成的虛擬數(shù)據(jù)庫:數(shù)據(jù)不存儲在磁盤上,而是內(nèi)部動態(tài)生成。
  • 元數(shù)據(jù)查詢中心:數(shù)據(jù)庫管理員和開發(fā)人員的"數(shù)據(jù)庫百科全書"。
  • 標準 SQL 兼容:使用標準 SQL 查詢獲取元數(shù)據(jù)。

2. 核心視圖

視圖分類視圖名稱用途說明
數(shù)據(jù)庫元數(shù)據(jù)SCHEMATA查看數(shù)據(jù)庫列表及屬性包含所有數(shù)據(jù)庫名稱、默認字符集、排序規(guī)則等信息
表元數(shù)據(jù)TABLES查看表及視圖基本信息包含表所屬數(shù)據(jù)庫、表名、存儲引擎、創(chuàng)建時間、更新時間等
列元數(shù)據(jù)COLUMNS查看表列詳細信息包含列所屬表、列名、數(shù)據(jù)類型、是否允許NULL、默認值、字符最大長度等
索引元數(shù)據(jù)STATISTICS查看表索引信息包含索引所屬表、索引名、列名、索引順序、索引類型(如BTREE)等
權(quán)限管理USER_PRIVILEGES查看用戶全局權(quán)限包含用戶賬號、權(quán)限類型(如SELECT)、是否可授權(quán)等
存儲過程/函數(shù)ROUTINES查看存儲過程和函數(shù)包含名稱、類型(PROCEDURE/FUNCTION)、所屬數(shù)據(jù)庫、創(chuàng)建時間等
觸發(fā)器TRIGGERS查看觸發(fā)器信息包含觸發(fā)器所屬表、事件類型(INSERT/UPDATE/DELETE)、觸發(fā)時機(BEFORE/AFTER)等
事件調(diào)度器EVENTS查看事件調(diào)度器信息包含事件名稱、所屬數(shù)據(jù)庫、執(zhí)行時間表達式、狀態(tài)(ENABLED/DISABLED)等
字符集與排序CHARACTER_SETS查看支持的字符集包含字符集名稱、默認排序規(guī)則、描述等
排序規(guī)則COLLATIONS查看排序規(guī)則信息包含排序規(guī)則名稱、字符集、是否區(qū)分大小寫、是否區(qū)分重音等
表約束KEY_COLUMN_USAGE查看表約束關(guān)系包含約束類型(PRIMARY KEY/FOREIGN KEY)、關(guān)聯(lián)表、關(guān)聯(lián)列等
分區(qū)表PARTITIONS查看分區(qū)表信息包含表名、分區(qū)名、分區(qū)方法(RANGE/HASH)、分區(qū)表達式等
插件管理PLUGINS查看已安裝插件包含插件名稱、狀態(tài)(ACTIVE/INACTIVE)、版本、描述等
服務(wù)器參數(shù)GLOBAL_VARIABLES查看全局服務(wù)器變量包含變量名(如max_connections)、當前值、默認值等
會話參數(shù)SESSION_VARIABLES查看會話級變量與GLOBAL_VARIABLES類似,但針對當前會話
引擎信息ENGINES查看存儲引擎支持情況包含引擎名稱(如InnoDB)、支持狀態(tài)(DEFAULT/YES/NO)、描述等
表空間TABLESPACES查看表空間信息包含表空間名稱、引擎、文件路徑、空間大小等
鎖信息TABLE_CONSTRAINTS查看表約束類型包含表名、約束類型(PRIMARY KEY/UNIQUE/FOREIGN KEY)等
外鍵關(guān)系REFERENTIAL_CONSTRAINTS查看外鍵關(guān)聯(lián)關(guān)系包含父表、子表、關(guān)聯(lián)列、更新/刪除規(guī)則等
視圖定義VIEWS查看視圖定義詳情包含視圖所屬數(shù)據(jù)庫、視圖名、定義SQL語句、是否可更新等

3. 常用操作

3.1. 查詢所有數(shù)據(jù)庫

SELECT SCHEMA_NAME AS `Database`
FROM information_schema.SCHEMATA;

3.2. 查詢特定數(shù)據(jù)庫的所有表

SELECT TABLE_NAME AS `Table`
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'your_database_name';

3.3. 查詢表結(jié)構(gòu)

SELECT 
    COLUMN_NAME AS `Column`,
    DATA_TYPE AS `Type`,
    IS_NULLABLE AS `Nullable`,
    COLUMN_KEY AS `Key`,
    COLUMN_DEFAULT AS `Default`,
    EXTRA AS `Extra`
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'your_database_name'
AND TABLE_NAME = 'your_table_name';

3.4. 查詢索引信息

SELECT 
    INDEX_NAME AS `Index`,
    COLUMN_NAME AS `Column`,
    SEQ_IN_INDEX AS `Seq`,
    NON_UNIQUE AS `NonUnique`
FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = 'your_database_name'
AND TABLE_NAME = 'your_table_name';

3.5. 查詢外鍵關(guān)系

SELECT 
    CONSTRAINT_NAME AS `Constraint`,
    REFERENCED_TABLE_NAME AS `Referenced Table`,
    REFERENCED_COLUMN_NAME AS `Referenced Column`
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = 'your_database_name'
AND TABLE_NAME = 'your_table_name'
AND REFERENCED_TABLE_NAME IS NOT NULL;

3.6. 查詢視圖定義

SELECT 
    TABLE_NAME AS `View`,
    VIEW_DEFINITION AS `Definition`
FROM information_schema.VIEWS
WHERE TABLE_SCHEMA = 'your_database_name';

3.7. 數(shù)據(jù)庫結(jié)構(gòu)比較

-- 比較兩個數(shù)據(jù)庫的表結(jié)構(gòu)差異
SELECT 
    TABLE_NAME,
    COLUMN_NAME,
    DATA_TYPE AS source_type,
    (SELECT DATA_TYPE 
     FROM information_schema.COLUMNS 
     WHERE TABLE_SCHEMA = 'target_db' 
     AND TABLE_NAME = source.TABLE_NAME 
     AND COLUMN_NAME = source.COLUMN_NAME) AS target_type
FROM information_schema.COLUMNS source
WHERE TABLE_SCHEMA = 'source_db'
AND (SELECT DATA_TYPE 
     FROM information_schema.COLUMNS 
     WHERE TABLE_SCHEMA = 'target_db' 
     AND TABLE_NAME = source.TABLE_NAME 
     AND COLUMN_NAME = source.COLUMN_NAME) IS NULL
OR (SELECT DATA_TYPE 
    FROM information_schema.COLUMNS 
    WHERE TABLE_SCHEMA = 'target_db' 
    AND TABLE_NAME = source.TABLE_NAME 
    AND COLUMN_NAME = source.COLUMN_NAME) <> source.DATA_TYPE;

三、performance_schema

performance_schema是 MySQL 5.5 版本引入的核心性能監(jiān)控工具,用于收集 MySQL 服務(wù)器運行時的底層事件信息。它也是一個虛擬數(shù)據(jù)庫,數(shù)據(jù)存儲在內(nèi)存中,重啟后會丟失。它和慢查詢?nèi)罩静煌?,它提供的?strong>實時、細粒度的性能數(shù)據(jù),而不是事后分析的慢查詢記錄。

1. 核心特性

  • 低開銷設(shè)計:采用輕量級檢測點機制,默認配置下對性能影響小于5%,但啟用大量監(jiān)控項時可能增加開銷。
  • 內(nèi)存存儲:所有數(shù)據(jù)保存在內(nèi)存中,重啟后數(shù)據(jù)丟失,不占用磁盤空間。
  • 事件驅(qū)動:以“事件”為單位記錄資源消耗(如時間、次數(shù)),涵蓋線程、語句、鎖、I/O等關(guān)鍵指標。
  • 細粒度監(jiān)控:比慢查詢?nèi)罩咎峁└敿毜男阅軘?shù)據(jù)。
  • 實時性:可以實時監(jiān)控數(shù)據(jù)庫運行狀態(tài)。
  • 可配置性:按需選擇監(jiān)控哪些事件。
  • 標準化SQL:數(shù)據(jù)存儲在標準 MySQL 表中,便于使用 SQL 分析。

2. 核心運行機制

  • 事件分類與采集
    performance_schema通過“檢測點”捕獲服務(wù)器內(nèi)部事件,事件類型包括:

    • 語句事件:SQL語句的執(zhí)行(如解析、排序、執(zhí)行)。
    • 等待事件:資源等待(如鎖、I/O、線程同步)。
    • 階段事件:SQL執(zhí)行各階段(如解析、優(yōu)化、執(zhí)行)。
    • 事務(wù)事件:事務(wù)的啟動、提交、回滾。
    • 內(nèi)存事件:內(nèi)存分配與釋放。
  • 存儲引擎與表結(jié)構(gòu)
    performance_schema使用專用存儲引擎,表結(jié)構(gòu)按功能分類:

    • 當前事件表(如events_statements_current):記錄當前活躍事件。
    • 歷史事件表(如events_statements_history):記錄最近完成的事件(線程級)。
    • 長歷史事件表(如events_statements_history_long):記錄全局歷史事件。
    • 摘要表(如events_statements_summary_by_digest):按語句摘要聚合統(tǒng)計數(shù)據(jù)。
    • 配置表(如setup_instruments、setup_consumers):動態(tài)控制監(jiān)控項與數(shù)據(jù)存儲。
  • 數(shù)據(jù)采集與存儲

    • 事件數(shù)據(jù)通過檢測點實時采集,存儲在內(nèi)存表中,支持SELECT查詢。
    • 配置表(如setup_instruments)可啟用/禁用特定事件采集,減少開銷。

3. 核心表

表分類表名用途說明
語句事件記錄events_statements_current記錄當前執(zhí)行的SQL詳細信息如執(zhí)行時間、掃描行數(shù)、鎖等待等
語句事件記錄events_statements_history記錄最近完成的SQL歷史按線程分組,存儲最近10條執(zhí)行記錄
語句事件記錄events_statements_history_long全局SQL歷史記錄存儲所有線程的SQL執(zhí)行情況,最多10000條
語句事件記錄events_statements_summary_by_digestSQL摘要聚合統(tǒng)計按SQL指紋分組,統(tǒng)計執(zhí)行次數(shù)、總耗時、平均耗時等
等待事件記錄events_waits_current當前資源等待事件如鎖等待、I/O等待、線程同步等
等待事件記錄events_waits_history最近完成的等待事件按線程分組,存儲最近10條等待記錄
等待事件記錄events_waits_history_long全局等待事件歷史存儲所有線程的等待事件,最多10000條
等待事件記錄events_waits_summary_by_event_name按事件名稱聚合統(tǒng)計如鎖等待次數(shù)、總耗時、平均耗時等
階段事件記錄events_stages_current當前SQL執(zhí)行階段如解析、優(yōu)化、執(zhí)行等階段
階段事件記錄events_stages_history歷史階段事件按線程分組,存儲最近10條階段記錄
階段事件記錄events_stages_history_long全局階段事件歷史存儲所有線程的階段事件,最多10000條
階段事件記錄events_stages_summary_by_event_name按階段名稱聚合統(tǒng)計如解析階段耗時、執(zhí)行階段耗時等
事務(wù)事件記錄events_transactions_current當前執(zhí)行的事務(wù)信息如事務(wù)ID、狀態(tài)、開始時間等
事務(wù)事件記錄events_transactions_history最近完成的事務(wù)歷史按線程分組,存儲最近10條事務(wù)記錄
事務(wù)事件記錄events_transactions_history_long全局事務(wù)歷史存儲所有線程的事務(wù)記錄,最多10000條
事務(wù)事件記錄events_transactions_summary_by_transaction事務(wù)級別統(tǒng)計如提交次數(shù)、回滾次數(shù)、事務(wù)耗時等
內(nèi)存事件記錄memory_summary_by_account_by_event_name按賬戶和事件統(tǒng)計內(nèi)存如分配次數(shù)、釋放次數(shù)、內(nèi)存使用量等
內(nèi)存事件記錄memory_summary_by_host_by_event_name按主機和事件統(tǒng)計內(nèi)存如內(nèi)存分配、釋放、使用量等
內(nèi)存事件記錄memory_summary_by_thread_by_event_name按線程和事件統(tǒng)計內(nèi)存如線程內(nèi)存使用情況、內(nèi)存泄漏檢測等
內(nèi)存事件記錄memory_summary_global_by_event_name全局內(nèi)存使用統(tǒng)計如總分配量、總釋放量、當前使用量等
文件I/O事件file_summary_by_event_name按事件統(tǒng)計文件I/O如讀寫次數(shù)、耗時、數(shù)據(jù)量等
文件I/O事件file_summary_by_instance按文件實例統(tǒng)計I/O如文件讀寫次數(shù)、耗時、數(shù)據(jù)量等
文件I/O事件table_io_waits_summary_by_table按表統(tǒng)計I/O等待如表讀寫等待次數(shù)、耗時等
配置表setup_instruments配置事件采集項啟用/禁用特定事件監(jiān)控,如鎖、I/O、SQL執(zhí)行等
配置表setup_consumers配置數(shù)據(jù)存儲目標控制是否記錄歷史、摘要或全局數(shù)據(jù)
配置表setup_timers配置計時器類型如CPU時間、線程時間、墻鐘時間等
配置表setup_actors配置用戶/主機監(jiān)控設(shè)置用戶和主機的監(jiān)控權(quán)限
其他表threads服務(wù)器線程信息如線程ID、類型、狀態(tài)、CPU使用率等
其他表users用戶信息如用戶名、主機、權(quán)限等
其他表variables_by_thread線程變量使用如線程級變量值、默認值、是否修改等
其他表mutex_instances互斥同步對象實例記錄系統(tǒng)中使用互斥量對象的所有記錄,name為wait/synch/mutex/*
其他表rwlock_instances讀寫鎖同步對象實例記錄系統(tǒng)中使用讀寫鎖對象的所有記錄,name為wait/synch/rwlock/*
其他表socket_instances活躍會話對象實例記錄thread_id, socket_id, ip和port,用于關(guān)聯(lián)應(yīng)用與數(shù)據(jù)庫

4. 常用操作

4.1. 檢查是否已啟用

SHOW VARIABLES LIKE 'performance_schema';
-- 默認值為 ON(MySQL 5.7+)

4.2. 開啟特定監(jiān)控項

-- 開啟所有事件的監(jiān)控(謹慎使用,可能影響性能)
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES';

-- 按需開啟特定監(jiān)控(推薦)
UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' 
WHERE NAME LIKE 'events_statements%'; -- 開啟SQL語句監(jiān)控

4.3. 配置監(jiān)控粒度

-- 監(jiān)控所有用戶的SQL語句
UPDATE performance_schema.setup_actors SET ENABLED = 'YES', HISTORY = 'YES' 
WHERE USER = '%';

4.4. 查看最耗時的SQL語句

SELECT 
    DIGEST_TEXT AS 'SQL語句',
    COUNT_STAR AS '執(zhí)行次數(shù)',
    SUM_TIMER_WAIT / 1e9 AS '總耗時(秒)',
    AVG_TIMER_WAIT / 1e9 AS '平均耗時(秒)'
FROM performance_schema.events_statements_summary_by_digest
ORDER BY SUM_TIMER_WAIT DESC
LIMIT 10;

4.5. 查看最近執(zhí)行的SQL詳情

SELECT 
    EVENT_ID,
    SQL_TEXT AS 'SQL語句',
    TIMER_WAIT / 1e9 AS '耗時(秒)',
    LOCK_TIME / 1e9 AS '鎖等待時間(秒)',
    ROWS_EXAMINED AS '掃描行數(shù)',
    ROWS_SENT AS '返回行數(shù)'
FROM performance_schema.events_statements_history
ORDER BY TIMER_WAIT DESC
LIMIT 10;

4.6. 分析I/O瓶頸

SELECT 
    EVENT_NAME AS '事件類型',
    COUNT_STAR AS '次數(shù)',
    SUM_TIMER_WAIT / 1e9 AS '總等待時間(秒)',
    AVG_TIMER_WAIT / 1e9 AS '平均等待時間(秒)'
FROM performance_schema.file_summary_by_event_name
WHERE EVENT_NAME LIKE '%read%'
ORDER BY SUM_TIMER_WAIT DESC;

4.7. 監(jiān)控長期運行事務(wù)

SELECT 
    THREAD_ID,
    EVENT_ID,
    SQL_TEXT,
    TIMER_START,
    TIMER_WAIT / 1e9 AS '已運行時間(秒)'
FROM performance_schema.events_transactions_current
WHERE STATE = 'ACTIVE'
ORDER BY TIMER_WAIT DESC;

四、sys

sys是MySQL 5.7.7+ 引入的一個輔助庫,旨在簡化數(shù)據(jù)庫管理員(DBA)和開發(fā)者的性能監(jiān)控與診斷工作。它基于performance_schema和information_schema,通過視圖、存儲過程和函數(shù)的形式,提供更直觀、易用的數(shù)據(jù)庫性能和元數(shù)據(jù)信息。

sys 是 MySQL 的"性能分析助手",它將復(fù)雜的性能數(shù)據(jù)轉(zhuǎn)換為易于理解的視圖,讓數(shù)據(jù)庫管理員和開發(fā)人員能夠快速識別和解決性能問題。

1. 核心特性

  • 簡化性能監(jiān)控

    • sys庫封裝了performance_schema的復(fù)雜表結(jié)構(gòu),提供預(yù)聚合的視圖,直接展示關(guān)鍵性能指標(如查詢執(zhí)行時間、鎖等待、IO延遲等)。
    • 例如,通過host_summary視圖可快速查看各主機的連接數(shù)、內(nèi)存使用、IO延遲等概覽信息。
  • 快速診斷問題

    • 提供針對慢查詢、熱點表、鎖等待等常見問題的專用視圖,幫助定位性能瓶頸。
    • 例如,statements_with_runtimes_in_95th_percentile視圖可識別執(zhí)行時間最長的查詢。
  • 統(tǒng)一元數(shù)據(jù)查詢

    • 集成information_schema的信息,提供關(guān)于數(shù)據(jù)庫對象(如表、索引、存儲過程)的詳細元數(shù)據(jù)視圖。

2. 主要內(nèi)容

2.1. 視圖(Views)

sys庫包含大量視圖,按功能可分為以下幾類:

  • 性能視圖

    • statement_analysis:查詢執(zhí)行統(tǒng)計(次數(shù)、總延遲、平均延遲等)。
    • innodb_lock_waits:顯示鎖等待鏈,幫助解決死鎖問題。
    • io_by_thread_by_latency:按線程統(tǒng)計IO延遲,識別高負載線程。
  • 元數(shù)據(jù)視圖

    • schema_table_statistics:統(tǒng)計表的增刪改查操作量及IO耗時。
    • schema_unused_indexes:識別未使用的冗余索引,優(yōu)化表結(jié)構(gòu)。
  • 系統(tǒng)狀態(tài)視圖

    • host_summary:主機級性能概覽(連接數(shù)、內(nèi)存使用、IO等)。
    • memory_by_thread_by_current_bytes:按線程統(tǒng)計內(nèi)存使用情況。

視圖命名規(guī)則:大部分視圖成對出現(xiàn),帶x$前綴的視圖顯示原始數(shù)據(jù)(如皮秒單位),不帶前綴的視圖顯示經(jīng)過單位換算的數(shù)據(jù)(如毫秒、秒)。 比如:host_summary_by_file_io(換算后)與x$host_summary_by_file_io(原始數(shù)據(jù))。

2.2. 存儲過程(Procedures)

用于動態(tài)配置performance_schema的監(jiān)控項,例如:

  • ps_setup_enable_instrument('wait'):啟用等待事件監(jiān)控。
  • ps_setup_disable_consumer('history_long'):禁用歷史長事件收集。
  • ps_setup_reset_to_default(TRUE):重置performance_schema為默認配置。

2.3. 函數(shù)(Functions)

提供格式化輸出功能,例如:

  • format_bytes(bytes):將字節(jié)數(shù)轉(zhuǎn)換為易讀的單位(如KB、MB)。
  • format_time(microseconds):將微秒轉(zhuǎn)換為時間字符串(如00:00:01.234)。

3. 常用操作

3.1. 排查慢查詢

-- 查看執(zhí)行時間最長的10個查詢
SELECT * FROM sys.statement_analysis 
ORDER BY total_latency DESC 
LIMIT 10;

3.2. 識別熱點表

-- 查看操作最頻繁的表
SELECT * FROM sys.schema_table_statistics 
ORDER BY rows_fetched + rows_inserted + rows_updated + rows_deleted DESC 
LIMIT 10;

3.3. 分析鎖等待

-- 查看當前鎖等待鏈
SELECT * FROM sys.innodb_lock_waits;

3.4. 監(jiān)控IO性能

-- 按主機統(tǒng)計文件IO延遲
SELECT * FROM sys.host_summary_by_file_io 
ORDER BY io_latency DESC;

3.5. 查看使用臨時表的查詢

SELECT 
    DIGEST_TEXT AS 'SQL語句',
    COUNT_STAR AS '執(zhí)行次數(shù)',
    SUM_CREATED_TMP_DISK_TABLES AS '磁盤臨時表次數(shù)',
    SUM_CREATED_TMP_TABLES AS '臨時表總數(shù)'
FROM sys.statements_with_temp_tables
ORDER BY SUM_CREATED_TMP_TABLES DESC
LIMIT 10;

3.6. 查看當前活動鏈接

SELECT 
    ID, 
    USER, 
    HOST, 
    DB, 
    COMMAND, 
    TIME, 
    STATE, 
    INFO
FROM sys.processlist
ORDER BY TIME DESC;

3.7. 查看內(nèi)存使用情況

SELECT 
    EVENT_NAME AS '內(nèi)存事件',
    COUNT_STAR AS '次數(shù)',
    SUM_NUMBER_OF_BYTES_USED / 1024 / 1024 AS '總內(nèi)存(MB)'
FROM sys.memory_global_by_current_bytes
ORDER BY SUM_NUMBER_OF_BYTES_USED DESC
LIMIT 10;

3.8. 查看索引使用情況

SELECT 
    TABLE_SCHEMA AS '數(shù)據(jù)庫',
    TABLE_NAME AS '表名',
    INDEX_NAME AS '索引名',
    SEQ_IN_INDEX AS '索引順序',
    COLUMN_NAME AS '列名',
    CARDINALITY AS '基數(shù)',
    NON_UNIQUE AS '是否唯一'
FROM sys.schema_index_statistics
ORDER BY TABLE_SCHEMA, TABLE_NAME, INDEX_NAME;

總結(jié) 

到此這篇關(guān)于MySQL數(shù)據(jù)庫自帶系統(tǒng)數(shù)據(jù)庫功能超詳細介紹的文章就介紹到這了,更多相關(guān)MySQL自帶系統(tǒng)數(shù)據(jù)庫功能內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 網(wǎng)上提供的最簡便的MySql數(shù)據(jù)庫備份的方法

    網(wǎng)上提供的最簡便的MySql數(shù)據(jù)庫備份的方法

    網(wǎng)上提供的最簡便的MySql數(shù)據(jù)庫備份的方法...
    2007-02-02
  • 解決MySQL安裝第四步報錯問題(initializing database(may take a long time)

    解決MySQL安裝第四步報錯問題(initializing database(may take&nb

    安裝MySQL時遇到中文計算機名導(dǎo)致的亂碼問題,解決方法是修改my.ini配置文件中的相關(guān)設(shè)置,如果問題仍然存在,需要徹底卸載并刪除所有相關(guān)文件,然后將計算機名改為英文,重新安裝MySQL
    2025-12-12
  • Navicat自動備份MySQL數(shù)據(jù)的流程步驟

    Navicat自動備份MySQL數(shù)據(jù)的流程步驟

    對于從事IT開發(fā)的工程師,數(shù)據(jù)備份我想大家并不陌生,這件工程太重要了!對于比較重要的數(shù)據(jù),我們希望能定期備份,每天備份1次或多次,或者是每周備份1次或多次,所以本文給大家介紹了Navicat自動備份MySQL數(shù)據(jù)的流程步驟,需要的朋友可以參考下
    2024-12-12
  • MySQL中的binary類型使用操作

    MySQL中的binary類型使用操作

    這篇文章主要介紹了MySQL中的binary類型使用操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • MySQL主從同步延遲的原因及解決辦法

    MySQL主從同步延遲的原因及解決辦法

    今天小編就為大家分享一篇關(guān)于MySQL主從同步延遲的原因及解決辦法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • MySQL索引是啥?不懂就問

    MySQL索引是啥?不懂就問

    索引是幫助數(shù)據(jù)庫高效獲取數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu),是基于數(shù)據(jù)表創(chuàng)建的,它包含了一個表中某些列的值以及記錄對應(yīng)的地址,并且把這些值存在一個數(shù)據(jù)結(jié)構(gòu)中,常見的有使用哈希表、B+樹作為索引
    2021-07-07
  • MySQL中關(guān)于case when的用法

    MySQL中關(guān)于case when的用法

    這篇文章主要介紹了MySQL中關(guān)于case when的用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • MySQL 數(shù)據(jù)庫空間使用大小查詢的方法實現(xiàn)

    MySQL 數(shù)據(jù)庫空間使用大小查詢的方法實現(xiàn)

    本文主要介紹了MySQL 數(shù)據(jù)庫空間使用大小查詢的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-07-07
  • 一文解決連接MySQL報錯is?not?allowed?to?connect?to?this?MySQL?server

    一文解決連接MySQL報錯is?not?allowed?to?connect?to?this?MySQL?

    這篇文章主要給大家介紹了關(guān)于如何通過一文解決連接MySQL報錯is?not?allowed?to?connect?to?this?MySQL?server的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • php中如何將圖片儲存在數(shù)據(jù)庫里

    php中如何將圖片儲存在數(shù)據(jù)庫里

    php中如何將圖片儲存在數(shù)據(jù)庫里...
    2007-03-03

最新評論

伊川县| 无为县| 施秉县| 文安县| 古蔺县| 运城市| 彭山县| 邢台市| 高碑店市| 冷水江市| 手游| 武穴市| 利川市| 崇义县| 梅河口市| 长沙县| 玉龙| 柘荣县| 犍为县| 黑山县| 苗栗市| 绿春县| 扶绥县| 长泰县| 洛川县| 平湖市| 卢龙县| 奉贤区| 凯里市| 淮南市| 清水河县| 济南市| 遵义县| 麻栗坡县| 麦盖提县| 磐石市| 阜新市| 兴海县| 定边县| 福建省| 济源市|