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’;   //查看最多并发连接数,默认100       mysql>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   //记录没有使用索引查询

[[email protected] ~]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   |  缓存中块的数量

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

时间: 2025-01-05 10:19:20

MySQL性能调优(软调优)的相关文章

【单镜头反光相机】影调、反差、光比、宽容度;光质(硬光、软光)、硬调、软调、高调、低调、中间调

影调: 对摄影作品而言,"影调",又称为照片的基调或调子.指画面的明暗层次.虚实对比和色彩的色相明暗等之间的关系.通过这些关系,使欣赏者感到光的流动与变化. 摄影画面中的线条.形状.色彩等元素是由影调来体现的,如线条是画面上不同影调的分界. 反差:反差又叫密度差,是指负片或照片影像的黑白密度差别.被摄景物明暗差别.明暗对比大,则说明反差大.当反差大时,说明照片是硬调的. 光比:指照明环境下被摄物暗面与亮面的受光比例. 宽容度: 胶片所能正确容纳的景物亮度反差的范围. 光质(硬光.软光)

主从同步、读写分离、mysql性能调优(软优化)

配置mysql主从同步1 主从同步的作用:让slave身份的数据库服务器自动同步 master身份的数据库服务器上的数据. 一.主数据库服务器的配置192.168.4.121 用户授权mysql> grant replication slave on *.* to [email protected]"192.168.4.11" identified by "123456";2 启用binlog日志vim /etc/my.cnf[mysqld]server_id

数据库服务器mysql性能调优

mysql性能调优分为4个方面 一.硬件(CPU   内存   硬盘)监控CPU  内存 硬盘的值.[[email protected] ~]# toptop - 03:58:11 up 10:05,  1 user,  load average: 0.00, 0.00, 0.00Tasks: 121 total,   1 running, 120 sleeping,   0 stopped,   0 zombieCpu(s):  0.0%us,  0.7%sy,  0.0%ni, 99.0%i

MySQL性能调优与架构设计——第12章 可扩展设计的基本原则

第12章 可扩展设计的基本原则 前言: 随着信息量的飞速增加,硬件设备的发展已经慢慢的无法跟上应用系统对处理能力的要求了.此时,我们如何来解决系统对性能的要求?只有一个办法,那就是通过改造系统的架构体系,提升系统的扩展能力,通过组合多个低处理能力的硬件设备来达到一个高处理能力的系统,也就是说,我们必须进行可扩展设计.可扩展设计是一个非常复杂的系统工程,所涉及的各个方面非常的广泛,技术也较为复杂,可能还会带来很多其他方面的问题.但不管我们如何设计,不管遇到哪些问题,有些原则我们还是必须确保的.本章

mysql性能调优与架构设计笔记

1.mysql基本介绍 mysql支持多线程高并发的关系型数据库; 数据库存储引擎InnoDB.MyISAM; mysql快速崛起的原因就是他是开源的; 性能一直是mysql自豪的一大特点; 2.mysql架构组成 麻雀虽小五脏俱全,mysql虽然简单但其内部结构并不简单; mysql物理文件组成之日志文件: 错误日志error log这里记录mysql运行时严重的警告和错误,以及mysql启动和关闭的日志信息 二进制日志 binary log 记录mysql运行时所有的query和query执

MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化

MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化 前言: 很多人都认为性能是在通过编写代码(程序代码或者是数据库代码)的过程中优化出来的,其实这是一个非常大的误区.真正影响性能最大的部分是在设计中就已经产生了的,后期的优化很多时候所能够带来的改善都只是在解决前妻设计所遗留下来的一些问题而已,而且能够解决的问题通常也比较有限.本章将就如何在 MySQL 数据库 Schema 设计的时候保证尽可能的高效,尽可能减少后期的烦恼. 9.1 高效的模型设计 最规范的就一定

MySQL性能调优与架构设计——第1章 MySQL 基本介绍

MySQL性能调优与架构设计——第1章 MySQL 基本介绍 前言:作为最为流行的开源数据库软件之一, MySQL 数据库软件已经是广为人知了. 但是为了照顾对MySQL还不熟悉的读者,这章我们将对 MySQL 做一个简单的介绍.主要内容包括MySQL 各功能模块组成,各模块协同工作原理, Query 处理的流程等. 1.1 MySQLServer 简介 1.1.1 什么是 MySQLMySQL 是由MySQL AB公司(目前已经被SUN公司收归麾下,SUN已经被Oracle收购)自主研发的,目

mysql性能基本调优

innodb_buffer_pool_size 80%(系统缓存池) innodb_log_file_size    4G (mysql5.5中限定的最大数值,redo日志增大提高性能,redo日志小崩溃后恢复更快) \\开始将这个值设置为512M可以拥有1G的的redo日志,会使得拥有充裕的写操作空间 max_connections 151(默认值,需要修改) innodb_file_per_table OFF(默认将所有表的数据和索引存放在共享表空间,值为ON时会为每张表建立一个.ibd文件

MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控

第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一个系统,无论如何设计如何维护,都无法完全避免出现异常的可能,监控系统就是根据系统的各项状态的分析,让我们能够尽可能多的提前预知系统可能会出现的异常状况.即使没有及时发现将要发生的异常,也要在异常出现后的第一时间知道系统已经出现异常,否则之前的设计工作很可能就白费了. 18.1 监控系统设计 系统监控