1. 程式人生 > >MySQL 分析伺服器狀態

MySQL 分析伺服器狀態

概述  

文章簡單介紹了通過一些查詢命令分析當前伺服器的狀態。

目錄

步驟

獲取伺服器整體的效能狀態

首先對一個數據庫伺服器進行效能優化需要先知道伺服器當前主要的效能問題出現在哪裡,在這點sql server也是類似,sql server首先會分析當前伺服器的等待型別的情況。

我們可以使用show [session|global] status命令來獲取想要的資訊,預設是顯示當前連線的所有統計引數值,還可以直接查詢information_schema資料庫中的session_status表。

show  status;
#或者使用
use information_schema;
select * from SESSION_STATUS;

我當前的mysql版本是5.6.21,總共查詢出了341行引數。

SQL操作計數

接下來我們主要分析裡面的com_引數,com_引數各種SQL對資料庫執行的操作。

show  status like 'com_%';
#或者使用
use information_schema;
select * from SESSION_STATUS WHERE variable_name like 'com_%';

 各種SQL操作計數總共有142個,不同的版本結果不一樣,接下來就來測試一下,表中的alter table的當前連線的操作次數為0,現在我修改一下表看看結果。

ALTER TABLE test ADD Name CHAR(10) NOT NULL;

show  status like 'com_%';

可以看到alter_table計數增加了1。

com_計數裡面有幾個比較重要的引數,其它的一些引數也經常用來做參考。

com_delete:執行delete操作的次數。

com_select:執行select操作的次數。

com_insert:執行insert操作的次數,對應批量插入操作無論裡面迴圈多少次都只算一次。

com_update:執行update操作的次數。

com_commit:執行事務提交的次數。

com_rollback:執行事務回滾的次數。

上面的計數包括所有的儲存引擎,有幾個引數是單獨針對innodb儲存引擎,記錄了read,inserted,updated,deleted每種操作的行數。

show  status like 'innodb_rows%';
#或者使用
use information_schema;
select * from SESSION_STATUS WHERE variable_name like 'innodb_rows%';

定位效率低的SQL語句

1.可以通過慢查詢日誌來定位,慢查詢只能查詢已經執行結束的語句,如果要查詢當前正發生的問題無法做到,這個方法在後面一篇文章介紹mysql日誌會詳細介紹。

由於我將慢查詢的時間設為0.01秒,所以超過這個值的都會記錄下來,上面的截圖就是慢查詢日誌裡面的一條SQL操作記錄,記錄中記錄了在什麼時候執行的操作,執行操作的使用者資訊,執行花了0.19秒,鎖花了0.001秒,返回了0行,查詢了1行。

2.使用show processlist命令查詢當前進行執行緒,該命令經常用來分析當前伺服器的狀況。

 上圖中有後四個欄位需要理解,其中

command:記錄了當前查詢的一個狀態,休眠(sleep),查詢(query),連線(connect)。

Time:持續的時間,單位是秒,經常會使用這個值來做分析操作。

state:當前語句的狀態,這個狀態值很重要,這個狀態值很多,大家可以去了解一下,上圖就是等待表解鎖。

info:記錄操作語句

 3.藉助第三方監控工具

總結

 文章的知識點涉及的內容其實很多,這裡只是簡單的寫了一下,包括伺服器裡的很多狀態都是很重要的,文章只是單單拿出了SQL操作的計數來講,其它的一些包括connections,slow_queries,innodb_data_,innodb_buffer_pool_等等都是非常有用的一些計數,由於太多這裡就沒有全部拿出來分析,文章中也給出了一個連線介紹了其它的一些計數的含義。

備註:

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結,否則保留追究責任的權利。

《歡迎交流討論》

相關推薦

MySQL 分析伺服器狀態

概述   文章簡單介紹了通過一些查詢命令分析當前伺服器的狀態。 目錄 步驟 獲取伺服器整體的效能狀態 首先對一個數據庫伺服器進行效能優化需要先知道伺服器當前主要的效能問題出現在哪裡,在這點sql server也是類似,sql server首先會分析當前伺服器的等待型別的情況。 我們可以使用

MySQL分析數據運行狀態利器【SHOW PROCESSLIST】

說明 ner har table sent pos 意思 schema root 這個博文,將只是簡單的記錄一下,我們的數據庫操作和使用中,加索引加不上去,分析的過程,其實比較簡單,就是看有沒有連接進程還在操作表。有的話,將其停掉(不影響業務的場景下)。 今天的主角是:

MySQL分析數據運行狀態【SHOW PROCESSLIST】

mysql turn init inner same delay real 選項 value 這個博文,將只是簡單的記錄一下,我們的數據庫操作和使用中,加索引加不上去,分析的過程,其實比較簡單,就是看有沒有連接進程還在操作表。有的話,將其停掉(不影響業務的場景下)。 今

Linux 伺服器狀態分析

分析伺服器的狀態,其中常用命令如下: vmstat:用以檢測CPU和記憶體情況 iostat:用於檢測磁碟狀態 netstat:用於檢測頻寬狀態 CPU: 我們在使用vmstat命令時%user和%sys體現CPU的狀態,分別代表

MySQL進階篇(01):基於多個維度,分析伺服器效能

本文原始碼:[GitHub·點這裡](https://github.com/cicadasmile/mysql-data-base) || [GitEE·點這裡](https://gitee.com/cicadasmile/mysql-data-base) # 一、伺服器效能簡介 ## 1、效能定義

監控mysql主從同步狀態是否異常,如果異常,則發生短信或郵寄給管理員

監控mysql主從同步狀態是否異常階段1:開發一個守護進程腳本每30秒實現檢測一次。階段2:如果同步出現如下錯誤號(1158,1159,1008,1007,1062),請跳過錯誤階段3:請使用數組技術實現上述腳本(獲取主從判斷及錯誤號部分)[[email protected]/* */ ~]# m

沒有正常啟動mysql服務的狀態

msql[[email protected]/* */ ~]# mysql ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2)#上述原因是沒有啟

Header信息分析&狀態

ext 訪問 標識 而不是 spa 傳輸 文件類型 gzip you Header信息 (Status-Line):狀態項,包括協議類型,http返回碼和狀態; Cache-control:是否可以被緩存(public可以;pri

Lighttpd1.4.20源代碼分析 筆記 狀態機之錯誤處理和連接關閉

全部 階段 內存 and ces ons keep ren log 這裏所說的錯誤有兩種: 1.http協議規定的錯誤,如404錯誤。 2.server執行過程中的錯誤。如write錯誤。 對於http協議規定的錯誤,這裏的“錯誤”是針對clien

3--Master註冊機制源碼分析狀態改變機制源碼分析

地址 mis 清空 finish accep same properly values pad 這部分直接看源碼會比較直觀!!! [註]本篇是對第二篇中間的Master狀態改變以及註冊機制進行剖析 master註冊機制原理圖如下 , 其實就是將Application信息

監控mysql主從同步狀態

inf http use 監控mysql 編寫 運行時 xxxxx 操作 ast 在高並發網站架構中,MySQL數據庫主從同步是不可或缺的,不過經常會發生由於網絡原因或者操作錯誤,MySQL主從經常會出現不同步的情況,那麽如何監控MySQL主從同步,也變成網站正常運行的重要

利用mysql分析小規模數據

數據 load del 配置 利用 default int class utf 1 獲取數據 示例:(/home/work/data/1.data) 123457,chenli,70 123458,liuyang,71 2 create table CREATE TABL

監控docker容器內mysql主從同步狀態

使用 bin con -i ner 獲取 face ont stdin Docker exec 命令docker exec :在運行的容器中執行命令語法docker exec [OPTIONS] CONTAINER COMMAND [ARG...]OPTIONS說明:-d

一分鐘教你快速建立起MySQL/Mariadb 主從狀態檢測腳本(shell)

watermark 簡單 -h fff adb dev 教你 spin sla 腳本主要實現了網絡檢測和簡單的主從狀態檢測,發現狀態異常即發送郵件報警,在手機上安裝一個易信可實現實時聯動,及時獲取服務器狀態信息,腳本雖簡單卻實用。 #!/bin/bash ##author:

原來mysql伺服器,虛機中是這麼使用的(詳解)

1.以root身份登入到MySQL伺服器中。 $ mysql -u root -p 當驗證提示出現的時候,輸入MySQL的root帳號的密碼。 2.建立一個MySQL使用者 使用如下命令建立一個使用者名稱和密碼分 為”username”和”userpassword”的使用者。

Linux Centos7通過shell指令碼來監控mysql的執行狀態

vim checkmysql.sh #!/bin/sh #create by mingongge at 2018-10-10 port=`netstat -lnt|grep 3306|wc -l` if  [ $post -ne 1 ] ;then    now

mysql根據不同狀態統計出現的次數

// case when 的使用 select userid, sum(case when status =1 then 1 else 0 end) as&nb

MySQL分析函式實現

| MySQL分析函式實現 還好MySQL8.0已經實現了與Oracle相同的分析函式。 1. 實現rownum SET @rn:=0; SELECT @rn:[email protected]+1 AS rownum ,e.* FROM emp e; 或者寫成:

MySQL 主從伺服器配置

在主伺服器Ubuntu上進行備份,執行命令: mysqldump -uroot -p --all-databases --lock-all-tables > ~/master_db.sql -u :使用者名稱 -p :示密碼 --all-databases :匯出所有資料庫 --lock-all-ta

Mysql分析-profile詳解

con 權限 使用 初始 div init received 錯誤 use 一。前言當我們要對某一條sql的性能進行分析時,可以使用它。 Profiling是從 mysql5.0.3版本以後才開放的。啟動profile之後,所有查詢包括錯誤的語句都會記錄在內。關閉會話或者s