MySQL性能指標

https://blog.csdn.net/achiberx/article/details/71514862?utm_source=blogkpcl11mysql

1. MySQL Connections
數據庫鏈接數分爲Max Connections, Max Used Connections 和 Connections
即:最大鏈接數, 最近期間使用的最大鏈接數 和 當前實時鏈接數!
在使用MySQL數據庫的時候,常常會遇到這麼一個問題,就是「Can not connect to MySQL server. Too many connections」-mysql 1040錯誤,這是由於訪問MySQL且還未釋放的鏈接數目已經達到MySQL的上限。一般,msql的最大連數默認是151(ubuntu), 100(windows)。

mysql>mysql -u  user -p  password(命令行登陸MySQL)
mysql>show variables like 'max_connections';(查能夠看當前的最大鏈接數)
msyql>set global max_connections=1000;(設置最大鏈接數爲1000,能夠再次查看是否設置成功)
mysql>exit(推出)

    1
    2
    3
    4

這種方式有個問題,就是設置的最大鏈接數只在mysql當前服務進程有效,一旦mysql重啓,又會恢復到初始狀態。由於mysql啓動後的初始化工做是從其配置文件中讀取數據的,而這種方式沒有對其配置文件作更改。

問題:MySQL的最大鏈接數設置爲多少比較合適?這個值是否是越大越好?

這個參數的大小要綜合不少因素來考慮,好比使用的平臺所支持的線程庫數量(windows只能支持到2048)、服務器的配置(特別是內存大小)、每一個鏈接佔用資源(內存和負載)的多少、系統須要的響應時間等。能夠在global或session範圍內修改這個參數。鏈接數的增長會帶來不少連鎖反應,須要在實際中避免由此引起的負面影響。
詳細參考:MySQL最大鏈接數設置

ubuntu設置mysql的最大鏈接數:
cd /etc/mysql/mysql.conf.d 修改mysqld.cnf文件,在[mysqld]中添加或修改

cd /etc/mysql/mysql.conf.d
vi mysqld.cnf
max_connections=99

    1
    2
    3

而後從新啓動mysql
[root@localhost ~]# service mysql restart //重啓mysql

查看當前系統下MySQL設置的最大鏈接數

[root@localhost ~]# /usr/bin/mysqladmin -u root  -p  variables | grep  max_connections
| max_connections                 | 99   

    1
    2

2. MySQL Active Threads
Threads Connected , Thread Running 即鏈接的線程數和運行的線程數。
能夠用多線程去測試!

    MySQL Questions
    4. MySQL Thread Cache
        Thread Cache Size
        Thread Cached
        Thread Ctreated
        MySQL服務器的線程數查看方法:

mysql> show  global status like 'Thread%';

    1

Variable_name     Values     meaning
Threads_cached     57     The number of threads in the thread cache
Threads_connected     1268     The number of currently open connections.
Threads_created     31715     The number of threads created to handle connections.
Threads_running     1     The number of threads that are not sleeping.

thread_cache_size的意義:每創建一個鏈接,都須要一個線程來與之匹配,此參數用來緩存空閒的線程,以致不被銷燬,若是線程緩存中有空閒線程,這時候若是創建新鏈接,MYSQL就會很快的響應鏈接請求。
mysql創建鏈接很是消耗資源,因此就有了thread_cache,當已有鏈接再也不使用以後,mysql server不是直接斷開鏈接,而是將已有鏈接轉入到thread_cache中,以便下次在有create thread的需求時,能夠在cache中複用,提升性能,下降資源消耗。
threads_cached :表明當前此時此刻線程緩存中有多少空閒線程。
Threads_connected :表明當前已創建鏈接的數量,由於一個鏈接就須要一個線程,因此也能夠當作當前被使用的線程數。
Threads_created :表明從最近一次服務啓動,已建立線程的數量。
Threads_running :表明當前激活的(非睡眠狀態)線程數。並非表明正在使用的線程數,有時候鏈接已創建,可是鏈接處於sleep狀態,這裏相對應的線程也是sleep狀態。
四者之間的關係:
running和其餘三個狀態關係不大,但確定不會超過thread_connected
(new_con-old_con)=create+(old_cache-new_cache)
從上面公式能夠看出,若是create等於0,那麼thread_connected減小的和thread_cached增長的相等,thread_connected增長的和thread_cached減小的相等。(其實這也就是thread_cached存在的意義,資源能夠複用)
咱們來看眼影響thread_cached的參數thread_cache_size:
How many threads the server should cache for reuse. When a client disconnects, the client’s threads are put in the cache if there are fewer than thread_cache_size threads there. Requests for threads are satisfied by reusing threads taken from the cache if possible, and only when the cache is empty is a new thread created. This variable can be increased to improve performance if you have a lot of new connections. Normally, this does not provide a notable performance improvement if you have a good thread implementation. However, if your server sees hundreds of connections per second you should normally set thread_cache_size high enough so that most new connections use cached threads. By examining the difference between the Connections and Threads_created status variables, you can see how efficient the thread cache is. For details, see Section 5.1.6, 「Server Status Variables」.
參考:MySQL之thread cache
ubuntu修改thread_cache_size

cd /etc/mysql/mysql.conf.d
sudo vi mysqld.cnf
thread_cache_size = 48 //修改成48

    1
    2
    3

    MySQL Temporary Objects
        Create Tmp Tables
        Create Tmp Disk Tables
        Create Tmp Files
    MySQL Select Types
        Select Scan:經過對第一個數據表進行全表掃描而完成的多數據表聯接操做的次數.
        Select Range Check:該變量記錄了在聯接時,對每一行數據從新檢查索引的查詢計劃的數量,它的開銷很大.若是該值較高或正在增長,說明一些查詢沒有找到好索引.
        Select Range:利用第一個數據表上的某個區間而完成的多數據表聯接操做的次數.
        Select Full Range Join:利用一個輔助性的參照表(reference table)上的區間搜索
        (range search)操做而完成的多數據表聯接操做的次數.該值表示使用了範圍查詢聯接表的次數.
        Select Full Join:沒有使用索引而完成的多表聯接操做的次數.這種狀況是性能殺手,最好去優化sql.
    MySQL Sorts
        Sort Scan:利用一次全表掃做而完成的排序操做的次數
        Sort Merge Passes:查詢致使了文件排序的次數.能夠優化sql或者適當增長sort_buffer_size變量
        Sort Range:利用一個區間進行的排序操做的次數
        Sort Rows:對多少行排序
    MySQL Slow Queries
        Slow Queries:慢查詢的次數(執行時間超過long_query_time值) 參考連接
    MySQL Aborted Connections
        Aborted Connects (attempts)
        Aborted Clients (timeout)
    MySQL Table Locks
        Table Locks Immediate:無需等待就可以馬上獲得知足的數據表鎖定請求的個數
        Table Locks Waited:顯示了有多少表被鎖住了而且致使服務器級的鎖等待(存儲引擎級的鎖,如InnoDB行級鎖,不會使該變量增長).若是這個值比較高或者正在增長,那麼代表存在嚴重的併發瓶頸.
    MySQL Network Traffic
        OutBound
        Inbound
    MySQL Internal Memory Overview
        System Memory :操做系統總內存
        Query Cache Size :mysql配置文件設置的大小
        Key Buffer Size :mysql配置文件設置大小。
        InnoDB Log Buffer Size
        InnoDB Buffer Pool Data
    Top Command Counters

show session status like 'com_delete';
show session status like 'com_insert';
show session status like 'com_update';
show session status like 'com_select';

    1
    2
    3
    4

com_insert、com_delete,com_update分別是查詢本次會話中「增刪改」 了多少次.
com_select的一種解釋爲com_select 變量記錄的是無緩存的查詢次數+錯誤查詢+權限檢查查詢。若是select有緩存,數值不增長,若是命中緩存,緩存命中的次數加1,也就是Qcache_hits變量的值加1.

    MySQL Handlers
        read_rnd_next:讀取下一個數據行的請求的個數.若是這個數字很高,就說明有不少語句須要經過全表掃描才能完成或有不少查詢沒有使用適當的索引
        write:向數據表裏插入一個數據行的請求的個數
        external_lock
        read_key:根據一個索引值而讀取一個數據行的請求的個數
        update:對數據表裏的一個數據行進行修改的請求的個數
        read_rnd:根據某個數據行的位置而讀取該數據行的請求的個數
        read_prev:按索引逆序讀取前一個數據行的請求的個數
        read_next:按索引順序讀取下一個數據行的請求的個數
        read_last
        read_first:讀取索引中第一個索引項的請求的個數
        mrr_init
        discover
        delete:從數據表刪除一個數據行的請求的個數
    MySQL Transaction Handlers
    commit :提交一個事務的請求的個數
    prepare
    rollback :回滾一個事務的請求的個數
    savepoint :建立一個事務保存點的請求個數
    savepoint_rollback :回滾到一個事務保存點的請求的個數
    Process States
    Top Process States Hoursly
    MySQL Query Cache Memory
        Query Cache Size
        Free Memory
    MySQL Query Cache Activity
        Not Cached
        Queries in Cache
        Prunes
        Inserts
        Hits
    MySQL File Openings
        Openings
    MySQL Open Files
        Open Files 打開的文件數
        Open Files Limits 文件的上限
        InnoDB Open File InnoDB打開的文件數
    MySQL Table Open Status
        Hits
        Misses
        Opennings
        Misses due to Overflows
        Table Open Cache Hit Ratio
    MySQL Open Tables
        Table Open Cache
        Open Tables
    MySQL Table Definition Cache
        Table Definitions Cache Size
        Open Table Definitions
        Opened Table Definitions
        參考:MySQL監控模板說明
---------------------
做者:acceptedwwh
來源:CSDN
原文:https://blog.csdn.net/achiberx/article/details/71514862
版權聲明:本文爲博主原創文章,轉載請附上博文連接!sql

相關文章
相關標籤/搜索