文档章节

MySQL性能指标

o
 osc_n6euf5h6
发布于 2019/03/19 22:45
字数 2245
阅读 11
收藏 0

精选30+云产品,助力企业轻松上云!>>>

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

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
版权声明:本文为博主原创文章,转载请附上博文链接!

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

2020最新微信域名防封技术 微信域名防封系统是如何操作的

相信很多朋友在运营自己产品的网站或者是推广链接的时候,经常会发现运行的好好的网站链接突然就被封了,有一部分因为可能是网站的内容触犯了微信的规则,但是还有很大的一部分被同行恶意投诉...

戚馨逸
30分钟前
11
0
mysql 为什么 SQL 语句不要过多的 join?

第一部分 Linux上查看内存的使用情况该用什么命令 free -mh 可以看到内存或者缓存情况 total 总内存 used 已用内存 free 空闲内存 buff/cache 已使用的缓存 avaiable 可用内存 怎么清理已使...

edison_kwok
30分钟前
17
0
芒果TV的金融野心从未停止

来源|WEMONEY研究室 作者|林小林 芒果TV是真的会讲故事,《乘风破浪的姐姐》不仅是生活的故事更是资本的故事,30位姐姐让一款节目累计播放量飙升10亿,同时让背后的上市公司芒果超媒市值站...

镭射财经
42分钟前
4
0
找到的程序集的清单定义与程序集引用不匹配

问题: I am trying to run some unit tests in a C# Windows Forms application (Visual Studio 2005), and I get the following error: 我试图在C#Windows窗体应用程序(Visual Studio 2......

法国红酒甜
43分钟前
16
0
渗透测试的概念和实战

目录 1. 前言 2. 常见web安全漏洞 3. 思路 3.1渗透测试思路 3.2黑客攻击思路 4. 暴力破解 4.1谷歌黑语法 4.1.1 黑语法inurl:搜索url包含指定字符串 4.1.2 黑语法intitle:搜索网页中的标题名...

六道木
58分钟前
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部