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

MySQL數(shù)據(jù),查詢(xún)QPS,TPS數(shù)據(jù)方式

 更新時(shí)間:2025年02月27日 09:29:37   作者:會(huì)飛的土撥鼠呀  
文章詳細(xì)介紹了查詢(xún)MySQL數(shù)據(jù)庫(kù)QPS和TPS的方法和工具,包括直接通過(guò)命令行、PerformanceSchema、mysqladmin、Prometheus、自動(dòng)化腳本等,同時(shí),還提供了優(yōu)化建議,如索引優(yōu)化、SQL調(diào)優(yōu)、事務(wù)控制和配置調(diào)優(yōu)

以下是針對(duì) MySQL 數(shù)據(jù)庫(kù) QPS(Queries Per Second)和 TPS(Transactions Per Second)數(shù)據(jù) 的詳細(xì)查詢(xún)方法和工具推薦,包含具體命令和示例:

一、直接通過(guò) MySQL 命令行查詢(xún)

1. 查詢(xún) QPS

-- 獲取當(dāng)前總查詢(xún)次數(shù)(所有類(lèi)型)
SHOW STATUS LIKE 'Queries';

-- 計(jì)算過(guò)去 N 秒的 QPS(例如 N=5)
SELECT 
    (NOW() - INTERVAL 5 SECOND) AS 時(shí)間差,  
    (SHOW STATUS LIKE 'Queries') - prev_queries AS 當(dāng)前查詢(xún)總數(shù),
    ROUND((當(dāng)前查詢(xún)總數(shù) / 時(shí)間差.total_seconds), 2) AS QPS
FROM 
    (SELECT SHOW STATUS LIKE 'Queries' AS prev_queries) AS subquery,
    (SELECT NOW() - INTERVAL 5 SECOND AS time_diff) AS time_diff;

2. 查詢(xún) TPS

-- 獲取當(dāng)前事務(wù)提交次數(shù)
SHOW STATUS LIKE 'Com_commit';

-- 計(jì)算過(guò)去 N 秒的 TPS(例如 N=5)
SELECT 
    (NOW() - INTERVAL 5 SECOND) AS 時(shí)間差,  
    (SHOW STATUS LIKE 'Com_commit') - prev_commits AS 當(dāng)前提交總數(shù),
    ROUND((當(dāng)前提交總數(shù) / 時(shí)間差.total_seconds), 2) AS TPS
FROM 
    (SELECT SHOW STATUS LIKE 'Com_commit' AS prev_commits) AS subquery,
    (SELECT NOW() - INTERVAL 5 SECOND AS time_diff) AS time_diff;

二、使用 Performance Schema(推薦)

1. 啟用 Performance Schema

-- 檢查是否已啟用
SHOW VARIABLES LIKE 'performance_schema';

-- 若未啟用,在 `my.cnf` 中添加:
[mysqld]
performance_schema = ON

2. 查詢(xún) QPS(按語(yǔ)句類(lèi)型統(tǒng)計(jì))

SELECT 
    event_name       AS 查詢(xún)類(lèi)型,  
    COUNT_STAR        AS 總執(zhí)行次數(shù),  
    AVG_TIMER_WAIT    AS 平均延遲(微秒),  
    SUM_TIMER_WAIT    AS 總延遲(微秒)
FROM 
    performance_schema.events_statements_summary_by_digest
WHERE 
    event_name IN ('SELECT', 'INSERT', 'UPDATE', 'DELETE')
ORDER BY 
    COUNT_STAR DESC;

3. 查詢(xún) TPS(按事務(wù)提交統(tǒng)計(jì))

SELECT 
    event_name       AS 事務(wù)類(lèi)型,  
    COUNT_STAR        AS 提交次數(shù),  
    AVG_TIMER_WAIT    AS 平均延遲(微秒)
FROM 
    performance_schema.events_statements_summary_by_digest
WHERE 
    event_name = 'COMMIT';

三、使用 mysqladmin 工具

1. 查看實(shí)時(shí)狀態(tài)

# 查看所有關(guān)鍵狀態(tài)變量(包含 QPS 和 TPS)
mysqladmin -u root -p status

# 僅查看 QPS、TPS 和連接數(shù)
mysqladmin -u root -p extended-status | grep -E 'Queries|Com_commit|Threads_connected'

四、使用 Prometheus + mysql_exporter

1. 部署 mysql_exporter

# 下載并運(yùn)行 mysql_exporter
wget https://github.com/prometheus/mysqld_exporter/releases/download/v1.16.0/mysqld_exporter-1.16.0.linux-amd64.tar.gz
tar xvfz mysqld_exporter-*.tar.gz
cd mysqld_exporter-*/
./mysqld_exporter

# Prometheus 配置(`prometheus.yml`)
scrape_configs:
  - job_name: 'mysql'
    static_configs:
      - targets: ['localhost:9104']

2. 查詢(xún) QPS 和 TPS

# QPS:所有查詢(xún)速率(每秒執(zhí)行次數(shù))
rate(mysql_statements_total{statement_type=~"SELECT|INSERT|UPDATE|DELETE"}[5m])

# TPS:事務(wù)提交速率(每秒提交次數(shù))
rate(mysql_statements_total{statement_type="COMMIT"}[5m])

3. 可視化儀表盤(pán)

  • 在 Grafana 中添加 MySQL 監(jiān)控面板,展示實(shí)時(shí) QPS、TPS、慢查詢(xún)等指標(biāo)。

五、自動(dòng)化腳本(Python 示例)

import mysql.connector
import time

def get_mysql_stats(host, user, password, db):
    conn = mysql.connector.connect(
        host=host,
        user=user,
        password=password,
        database=db
    )
    cursor = conn.cursor()
    
    # 查詢(xún) QPS
    cursor.execute("SHOW STATUS LIKE 'Queries'")
    queries_total = int(cursor.fetchone()[1])
    
    # 查詢(xún) TPS
    cursor.execute("SHOW STATUS LIKE 'Com_commit'")
    commits_total = int(cursor.fetchone()[1])
    
    cursor.close()
    conn.close()
    return queries_total, commits_total

if __name__ == "__main__":
    host = 'localhost'
    user = 'root'
    password = 'password'
    db = 'test'
    
    prev_queries, prev_commits = get_mysql_stats(host, user, password, db)
    
    while True:
        time.sleep(5)
        current_queries, current_commits = get_mysql_stats(host, user, password, db)
        
        qps = (current_queries - prev_queries) / 5
        tps = (current_commits - prev_commits) / 5
        
        print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] QPS={qps:.2f}, TPS={tps:.2f}")
        
        prev_queries, prev_commits = current_queries, current_commits

六、其他工具

1. Percona Toolkit 的 pt-query-digest

# 分析慢查詢(xún)?nèi)罩静⒔y(tǒng)計(jì) QPS/TPS
pt-query-digest --slow-log=/var/log/mysql/slow.log --output=report

2. MySQL Workbench 的監(jiān)控面板

  • 打開(kāi) Server Status 選項(xiàng)卡,直接查看 Queries per secondTransactions per second。

七、優(yōu)化建議

  1. 索引優(yōu)化:缺失索引會(huì)導(dǎo)致全表掃描,顯著降低 QPS。
  2. SQL 調(diào)優(yōu):避免復(fù)雜子查詢(xún),使用 EXPLAIN 分析執(zhí)行計(jì)劃。
  3. 事務(wù)控制:減少長(zhǎng)事務(wù)占用鎖資源,適當(dāng)調(diào)整隔離級(jí)別。
  4. 配置調(diào)優(yōu):修改 innodb_buffer_pool_size、query_cache_size 等參數(shù)。

總結(jié)

  • 輕量級(jí)監(jiān)控:直接使用 SHOW STATUSmysqladmin。
  • 精細(xì)化分析:?jiǎn)⒂?Performance Schema 或集成 Prometheus。
  • 長(zhǎng)期優(yōu)化:結(jié)合慢查詢(xún)?nèi)罩竞退饕治龉ぞ撸ㄈ?EXPLAIN)提升性能。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySQL學(xué)習(xí)之日期函數(shù)的用法詳解

    MySQL學(xué)習(xí)之日期函數(shù)的用法詳解

    本文將學(xué)習(xí)MySQL的日期函數(shù),在前面章節(jié)的練習(xí)中,我們就利用過(guò)NOW()函數(shù)來(lái)獲取過(guò)當(dāng)前系統(tǒng)時(shí)間,用DATEDIFF函數(shù)來(lái)計(jì)算日期相差的天數(shù),接下來(lái)我們就系統(tǒng)的學(xué)習(xí)一下 日期函數(shù)
    2022-08-08
  • mysql?分組函數(shù)和分組查詢(xún)使用詳解

    mysql?分組函數(shù)和分組查詢(xún)使用詳解

    分組函數(shù)用作統(tǒng)計(jì)使用,又稱(chēng)聚合函數(shù),統(tǒng)計(jì)函數(shù),組函數(shù),這篇文章主要介紹了mysql分組函數(shù)分組查詢(xún)的操作代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01
  • MySQL數(shù)據(jù)庫(kù)遠(yuǎn)程訪(fǎng)問(wèn)權(quán)限設(shè)置方式

    MySQL數(shù)據(jù)庫(kù)遠(yuǎn)程訪(fǎng)問(wèn)權(quán)限設(shè)置方式

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)遠(yuǎn)程訪(fǎng)問(wèn)權(quán)限設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • MySQL中如何計(jì)算同比和環(huán)比

    MySQL中如何計(jì)算同比和環(huán)比

    在工作的過(guò)程中,經(jīng)常會(huì)使用到環(huán)比、同比,下面這篇文章主要給大家介紹了關(guān)于MySQL中如何計(jì)算同比和環(huán)比的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • MySQL分區(qū)之子分區(qū)詳解

    MySQL分區(qū)之子分區(qū)詳解

    子分區(qū)(subpartition)是分區(qū)表中對(duì)每個(gè)分區(qū)的再次分割,又被稱(chēng)為復(fù)合分區(qū),下面這篇文章主要給大家介紹了關(guān)于MySQL分區(qū)之子分區(qū)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • 詳細(xì)分析mysql MDL元數(shù)據(jù)鎖

    詳細(xì)分析mysql MDL元數(shù)據(jù)鎖

    這篇文章主要介紹了mysql MDL元數(shù)據(jù)鎖的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • MySQL使用GROUP?BY使用技巧和注意事項(xiàng)總結(jié)

    MySQL使用GROUP?BY使用技巧和注意事項(xiàng)總結(jié)

    GROUP?BY?子句是?在MySQL?中用于將查詢(xún)結(jié)果按照指定的列或表達(dá)式進(jìn)行分組的關(guān)鍵字,它通常與聚合函數(shù)一起使用,能夠?qū)γ總€(gè)分組進(jìn)行統(tǒng)計(jì)或計(jì)算,本文給大家總結(jié)了MySQL使用GROUP?BY使用技巧和注意事項(xiàng),需要的朋友可以參考下
    2024-05-05
  • 一文帶你學(xué)透SQL語(yǔ)言的核心之DML操作

    一文帶你學(xué)透SQL語(yǔ)言的核心之DML操作

    DML(Data?Manipulation?Language)是SQL語(yǔ)言的核心部分,其主要用于對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行增刪改查,在學(xué)習(xí)數(shù)據(jù)時(shí),學(xué)習(xí)DML操作是必不可少的一部分,本文就帶大家詳細(xì)了解SQL語(yǔ)言的核心DML操作,需要的朋友可以參考下
    2023-06-06
  • centos7中如何利用crontab進(jìn)行mysql定時(shí)備份

    centos7中如何利用crontab進(jìn)行mysql定時(shí)備份

    crontab是一個(gè)命令,常見(jiàn)于Unix和類(lèi)Unix的操作系統(tǒng)之中,用于設(shè)置周期性被執(zhí)行的指令,下面這篇文章主要給大家介紹了關(guān)于centos7中如何利用crontab進(jìn)行mysql定時(shí)備份的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • mysql 5.7.23 安裝配置圖文教程

    mysql 5.7.23 安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.23 安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09

最新評(píng)論

巴东县| 北流市| 英山县| 阿克陶县| 阳东县| 建德市| 英德市| 大埔区| 前郭尔| 金阳县| 枞阳县| 岳阳县| 兴化市| 高要市| 八宿县| 甘孜| 滨海县| 资中县| 延长县| 恭城| 萨嘎县| 施秉县| 汶川县| 卓资县| 巴楚县| 奈曼旗| 肇东市| 海阳市| 抚松县| 皋兰县| 体育| 马尔康县| 安吉县| 新宾| 长宁县| 泸溪县| 哈尔滨市| 河曲县| 保靖县| 理塘县| 怀化市|