mysql性能调优 会话数_MySQL性能调优(软调优)

基于一台普通版的MySQL服务器

目的:加快服务器的响应速度

进程数=进程*线程

1、Mysql的查询过程

1)客户端向服务器发送连接请求

2)服务器端(连接池)开辟线程响应用户请求

3)用户发起sql语句查询数据库select * from db.a;

4)查询缓存:记录用户的sql执行语句和查询结果

2、加快Mysql服务器的运行速度

1)替换有问题的硬件(最有效的方法)

如:CPU、内存、硬盘

2)对Mysql进程的设置进行调优

A、并发数

优化mysql数据库的性能参数:

–max_connections     //服务器允许的并发访问量,默认值100

–max_used_connections

//已经响应的连接数,max_connections * 100% = 99.6% (理想值 ≈ 85%)

–vi /etc/my.cnf       //在配置文件/etc/my.cnf中设置永久生效

[mysqld]

max_connections = 1000

mysql>use mysql;

mysql>show variables like‘max_connections’;//查看最多并发连接数,默认100mysql>show global status like‘max_used_connections’;//当前已连接数

mysql> flush status;                     //刷新

mysql>set global max_connections=200;        //修改参数值,当前生效

B、超时

mysql>show variables like ‘connect_timeout’;  // 连接超时时间,单位为秒,默认10s      mysql>show variables like ‘wait_timeout’;

//客户端与服务器连接时,客户端在28800S没有执行任何操作,服务器端会自动断开连接,在      关闭它之前,在一个连接上等待行动的秒数,默认28800s     mysql>set global connect_timeout=20;  //全局修改前面加global修改

mysql>set wait_timeout=7200;     //不在全局修改,用这条命令

并发数多时,可设置connect_timeout短一些;并发数少时,可设置其长一些

C、索引缓冲区

–key_buffer索引缓冲区大小单位M,默认是16M,显示单位字节

–计算索引未命中缓存的概率公式:Key_reads / Key_read_requests * 100%=值 越小越好

概率高时说明找到的机率小,可在配置文件中适当加大key_buffer的值

-概率低时应适当加大key_buffer的值

mysql>show variables like‘key_buffer_size’;//查看索引缓冲区的大小       mysql>show variables like ‘key_read%’;

//key_read_requests 索引读取请求总数key_reads在内存中没有找到,直接从硬盘中读取索引的数量

vim /etc/my.cnf    //设置

[mysqld]key_buffer = 16M

8bit=1字节,1024字节=1K,1024K=1M ,1024M=1G,1024G=1T

D、其它设置

sort_buffer_size = 512K

–每个需要进行排序的线程分配该大小的缓冲区。增加此值加速order by或group by查询的、  速度,查询显示单位字节

mysql>show variables like ‘sort_buffer_size’;

read_buffer_size = 256K

–从数据表顺序读取数据的读操作保留的缓存区的长度

mysql>show variables like"read_buffer_size%";

read_rnd_buffer_size = 512K

–按某种特定顺序(比如使用了ORDER BY子句的查询)输出的查询结果

mysql>show variables like"read_rnd_buffer_size%";

thread_cache_size = 10

–可以重复使用的保存在缓存中线程的数量 (默认值是0)mysql> show variables like 'thread_cache_size';

mysql> set global thread_cache_size=10;     //指定大小

3)对查询进行优化

A、记录慢查询

vi /etc/my.cnf

[mysqld]

log-slow-queries//启用慢查询日志

log-query-time=5//记录5秒没有显示结果集的查询 默认10秒

log-queries-not-using-indexes//记录没有使用索引查询

[root@localhost ~]mysqldumpslow  mysqld-slow.log //查看慢查询日志的内容

B、服务器关于查询缓存的配置

mysql> show variables like "query_cache%";

+------------------------------+---------+

| Variable_name           | Value  |

+------------------------------+---------+

| query_cache_limit        | 1048576 | 超过此大小的查询将不缓存

| query_cache_min_res_unit   |4096   | 缓存块的最小大小

| query_cache_size        | 0     | 查询缓存大小

| query_cache_type         | ON    | 缓存类型,决定缓存什么样的查询

| query_cache_wlock_invalidate | OFF   | 当有其他客户端正在对MyISAM表进行写操作                                   时,如查询在query cache中,是否返回cache                                  结果,还是等写操作完成再读表获取结果

+------------------------------+---------+

mysql> show global status like "qcache%";

+-------------------------+-------+

| Variable_name       | Value |

+-------------------------+-------+

| Qcache_free_blocks    | 0   | 缓存中相邻内存块个数,数目大说明可能有碎片

| Qcache_free_memory    | 0   | 缓存中的空闲内存

| Qcache_hits         | 0   | 每次查询在缓存中命中时就增大

| Qcache_inserts       | 0   | 每插入一个查询就增大,命中次数/插入数就是不中比

| Qcache_lowmem_prunes   | 0   | 缓存出现内存不足并且必须要进行清理以便为更多查询                              提供空间的次数

| Qcache_not_cached     | 0   | 不适合进行缓存查询的数量

| Qcache_queries_in_cache | 0   | 当前缓存查询(和响应)的数量

| Qcache_total_blocks   | 0   |  缓存中块的数量

+-------------------------+-------+

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值