mysql数据库 调优

mysql调优
硬件配置
网络带宽
mysql运行参数
慢查询日志
网络架构
多实例(一台服务器上运行多个数据库服务)
分库
分表

当一台数据库服务器处理客户端的请求慢时,
可能是哪些原因造成?

硬件配置低:(内存 cpu 硬盘i/o )
查看硬件使用情况
free -m
top

网络带宽:
测试带宽(扩展带宽)

提供数据库服务软件的版本太低:
vim /etc/my.cnf
[mysqld]
选项-值(不选就是默认的)
/etc/init.d/mysql restart
数据库服务器处理查询请求的过程:连接池》sql接口》分析器》优化》存储引擎》文件系统》管理工具
接收到查询请求时,现在查询缓存里查找记录,如果有,直接回给客户端,
如果没有,到表里去找,找到后先将结果存储到查询缓存里,再回数据给客户端。

查看服务运行的参数值
mysql> show variables like "%关键字%";(查看)
mysql> set global 变量名=值;(修改)

并发连接数
mysql> show variables like "%connect%";(查看链接)
max_connections=151(默认151)
mysql> set global max_connections=200;(改为200)
mysql> show global status like "%connect%"; max_used_connections;(查看最大连接次数)
并发量最优公式:max_used_connections/max_connections = 0.85*100%=85%

链接超时时间
mysql> show variables like "%timeout%";(查看超时时间)
建立连接时的超时时间connect_timeout=10 默认10秒
建立连接后,等待sql命令的超时时间wait_timeout=28800 默认28800秒

查询缓存大小
mysql> show variables like "%cache%";(查看查询)
mysql> show variables like "%query_cache%";(查看查询大小)
query_cache_size=1048576 大于1048576这个数,不让存进去

查看查询缓存的统计信息
mysql> show global status like "%qcache%";
Qcache_hits(在查询缓存找一次+1)
Qcache_inserts(查询总数)

可重复使用的线程数量
可以保存在内存里,可以重复使用的线程的数量
mysql> show variables like "%thread%";
thread_cache_size=9 默认9个

所有线程打开表的总数
mysql> mysql> show variables like "%table%";
table_open_cache=2000 默认2000
key-buffer-size:用于myisam引擎的关键索引缓存大小
sort-buffer-size:为每个要排序的线程分配此大小的缓存空间
read-buffer-size:为顺序读取表记录保留的缓存大小
thread-cache-size: 允许保存在缓存中被重用的线程数量

程序猿编写提取数据的sql命令太复杂:
查看记录
单表 多表 嵌套 连接
解决:启用慢查询日志,记录客户端连接后
超过指定时间显示查询结果的sql命令
mysql服务的日志类型:
错误日志:默认启用,记录的服务在启动和运行过程中的错误信息
binlg日志:默认没有启用,记录客户端连接服务器后,执行的除查询之外的sql命令
慢查询日志:默认没有启用,记录客户端连接后,超过指定时间显示查询结果的sql命令
查询日志:默认没有启用,记录客户端链接后,执行的所有sql命令

慢查询日志的使用:
vim /etc/my.cnf
slow-query-log(日志存储位置,默认在数据库目录下,主机名-slow.log)
long-query-time=5(超时时间,默认10秒)
/etc/init.d/mysql restart(重启服务)
[[email protected] mysql]# mysqldumpslow /var/lib/mysql/158-slow.log > /opt/sql.txt(把超时的查询语句重定向到文件里)

查询日志的使用:
vim /etc/my.cnf
general-log(日志存储位置,默认在数据库目录下,主机名.log)
[[email protected] mysql]# cat 158.log

网络架构有问题:
重新规划网络

——————————————————————————————————————————————————————————————————————————————————————————

时间: 2024-08-01 22:45:03

mysql数据库 调优的相关文章

MySQL数据库调优经验

?RDS for MySQL 由亚洲唯一WebScaleSQL团队维护内核源码,结合阿里巴巴多年MySQL数据库调优经验,从数据库源码层及数据库参数进行了性能优化,在相近规格配置下,RDS for MySQL性能值能达到自建数据库性能的3倍以上. RDS for MySQL针对通用的场景,在内核做了一系列的优化: 1. 改进了InnoDB redo组提交功能,多线程并发写入的情况下能有10%以上的速度提升. 2. 优化锁,对一些会引起串行化的大锁进行了拆分,能够有效避免长时间的读锁等待,提升数据

mysql数据库调优

最近新到项目上,算是帮忙,遇见性能测试. 测试要求其实不高,现在是单mysql数据库,未分表,四千万数据,四百毫秒,上的压力是一千一百多tps,但是,动态的只占到了百分之二十左右,也就是两百左右的tps吧.服务器还是比较牛逼的,我看到了十几个cpu线程,估计超过一百G内存吧. 大体情况如上. 鄙人之前没优化过mysql,其实,是没调优过sql,只读过部分sql执行的原理,数据库的结构啥的,平常写sql和设计表的时候有些注意,实战调优经验为零,以前就算调了,没测试过,也白搭,这次算是逮到便宜了.

Mysql数据库调优和性能优化

1. 简介 在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响.MySQL是目前使用最多的开源数据库,但是mysql数据库的默认设置性能非常的差,仅仅是一个玩具数据库.因此在产品中使用MySQL数据库必须进行必要的优化. 优化是一个复杂的任务,本文描述MySQL相关的数据库设计和查询优化,服务器端优化,存储引擎优化. 2. 数据库设计和查询优化 在MySQL Server性能调优中,首先要考虑的就是Database Schema设计,和

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

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

数据库服务器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性能调优与架构设计——第10章 MySQL数据库Schema设计的性能优化

第10章 MySQL Server性能优化 前言: 本章主要通过针对MySQL Server(mysqld)相关实现机制的分析,得到一些相应的优化建议.主要涉及MySQL的安装以及相关参数设置的优化,但不包括mysqld之外的比如存储引擎相关的参数优化,存储引擎的相关参数设置建议将主要在下一章“常用存储引擎的优化”中进行说明. 10.1 MySQL 安装优化 选择合适的发行版本 1. 二进制发行版(包括RPM等包装好的特定二进制版本) 由于MySQL开源的特性,不仅仅MySQL AB提供了多个平

MySQL面试必考知识点:揭秘亿级高并发数据库调优与最佳实践法则

做业务,要懂基本的SQL语句: 做性能优化,要懂索引,懂引擎: 做分库分表,要懂主从,懂读写分离... 数据库的使用,是开发人员的基本功,对它掌握越清晰越深入,你能做的事情就越多. 今天我们用10分钟,重点梳理一遍以下几方面: 数据库知识点汇总: 数据库事务特性和隔离级别: 详解关系型数据库.索引与锁机制: 数据库调优与最佳实践: 面试考察点及加分项. 知识点汇总 一.数据库的不同类型 1.常用的关系型数据库 Oracle:功能强大,主要缺点就是贵 MySQL:互联网行业中最流行的数据库,这不仅

[转]10分钟梳理MySQL知识点:揭秘亿级高并发数据库调优与最佳实践法则

转:https://mp.weixin.qq.com/s/RYIiHAHHStIMftQT6lQSgA 做业务,要懂基本的SQL语句: 做性能优化,要懂索引,懂引擎: 做分库分表,要懂主从,懂读写分离... 数据库的使用,是开发人员的基本功,对它掌握越清晰越深入,你能做的事情就越多. 今天我们用10分钟,重点梳理一遍以下几方面: 数据库知识点汇总: 数据库事务特性和隔离级别: 详解关系型数据库.索引与锁机制: 数据库调优与最佳实践: 面试考察点及加分项. 一.数据库的不同类型 1.常用的关系型数

数据库调优分层思想

数据库调优分层思想 1.调优策略 1)*号的处理(只提取必要字段,减少流量) 最好是用,有用的字段,减少流量. 表结构会改变,增加或者减少某列,如果*号全部查询出来 会造成代码逻辑错误. 2)大SQL(拆分,逐步缩小结果集) 大SQL执行起来非常耗时, where 后面带子句,或者读表联合查询. 或者临时表 暂时存储结果集 3)合理的索引(where子句后面的条件) 4)类型转换(‘’符号的使用) 在进行查询操作的时候把  ‘’带上 5)尽量不要用范围查询,或者缩小检索范围(程序逻辑update