MySQL 性能优化之骨灰级,高阶神技 !
每天早晨,干货准时奉上!
本文作者 | 惨绿少年
链接 | https://clsn.io/clsn/lx287.html
一、前言
MySQL调优对于很多程序员而言,都是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰。在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。
今天给大家讲解MySQL的优化实战,助你高薪之路顺畅!
![](/assets/blank.gif)
二、优化的哲学
1、优化可能带来的问题
2、优化的需求
3、优化由谁参与
三、优化思路
1、优化什么
2、优化的范围有哪些
3、优化维度
硬件>系统配置>数据库表结构>SQL及索引
硬件<系统配置<数据库表结构<SQL及索引
四、优化工具有啥?
1、数据库层面
mysql
msyqladmin mysql客户端,可进行管理操作
mysqlshow 功能强大的查看shell命令
show [SESSION | GLOBAL] variables 查看数据库参数信息
SHOW [SESSION | GLOBAL] STATUS 查看数据库的状态信息
information_schema 获取元数据的方法
SHOW ENGINE INNODB STATUS Innodb引擎的所有状态
SHOW PROCESSLIST 查看当前所有连接session状态
explain 获取查询语句的执行计划
show index 查看表的索引信息
slow-log 记录慢查询语句
mysqldumpslow 分析slowlog文件的
zabbix 监控主机、系统、数据库(部署zabbix监控平台)
pt-query-digest 分析慢日志
mysqlslap 分析慢日志
sysbench 压力测试工具
mysql profiling 统计数据库整体状态工具
Performance Schema mysql性能状态统计的数据
workbench 管理、备份、监控、分析、优化工具(比较费资源)
2、数据库层面问题解决思路
1、show processlist 2、explain select id ,name from stu where name='clsn'; # ALL id name age sex select id,name from stu where id=2-1 函数 结果集>30; show index from table; 3、通过执行计划判断,索引问题(有没有、合不合理)或者语句本身问题 4、show status like '%lock%'; # 查询锁状态 kill SESSION_ID; # 杀掉有问题的session
3、系统层面
4、系统层面问题解决办法
五、基础优化
1、优化思路
2、硬件优化
3、服务器硬件优化
4、系统优化
/proc/sys/vm/swappiness的内容改成0(临时),/etc/sysctl.conf上添加vm.swappiness=0(永久)
vi /boot/grub/grub.conf
更改到如下内容:
kernel /boot/vmlinuz-2.6.18-8.el5 ro root=LABEL=/ elevator=deadline rhgb quiet
5、系统参数调整
vim /etc/sysctl.conf net.ipv4.ip_local_port_range = 1024 65535 # 用户端口范围 net.ipv4.tcp_max_syn_backlog = 4096 net.ipv4.tcp_fin_timeout = 30 fs.file-max=65535 # 系统最大文件句柄,控制的是能打开文件最大数量
vim /etc/security/limits.conf * soft nproc 65535 * hard nproc 65535 * soft nofile 65535 * hard nofile 65535
6、应用优化
chkconfig --level 23456 acpid off
chkconfig --level 23456 anacron off
chkconfig --level 23456 autofs off
chkconfig --level 23456 avahi-daemon off
chkconfig --level 23456 bluetooth off
chkconfig --level 23456 cups off
chkconfig --level 23456 firstboot off
chkconfig --level 23456 haldaemon off
chkconfig --level 23456 hplip off
chkconfig --level 23456 ip6tables off
chkconfig --level 23456 iptables off
chkconfig --level 23456 isdn off
chkconfig --level 23456 pcscd off
chkconfig --level 23456 sendmail off
chkconfig --level 23456 yum-updatesd off
安装图形界面的服务器不要启动图形界面 runlevel 3,另外,思考将来我们的业务是否真的需要MySQL,还是使用其他种类的数据库。用数据库的最高境界就是不用数据库。
六、数据库优化
SQL优化方向:
执行计划、索引、SQL改写
架构优化方向:
高可用架构、高性能架构、分库分表
1、数据库参数优化
调整:
实例整体(高级优化,扩展)
thread_concurrency # 并发线程数量个数
sort_buffer_size # 排序缓存
read_buffer_size # 顺序读取缓存
read_rnd_buffer_size # 随机读取缓存
key_buffer_size # 索引缓存
thread_cache_size # (1G—>8, 2G—>16, 3G—>32, >3G—>64)
max_connections # 最大连接数,看交易笔数设置
max_connect_errors # 最大错误连接数,能大则大
connect_timeout # 连接超时
max_user_connections # 最大用户连接数
skip-name-resolve # 跳过域名解析
wait_timeout # 等待超时
back_log # 可以在堆栈中的连接数量
SQL层(基础优化)
querycachesize:查询缓存-->>>OLAP类型数据库,需要重点加大此内存缓存.
1) 但是一般不会超过GB.
2) 对于经常被修改的数据,缓存会立马失效。
3) 我们可以实用内存数据库(redis、memecache),替代他的功能。
2、存储引擎层(innodb基础优化参数)
default-storage-engine
innodb_buffer_pool_size # 没有固定大小,50%测试值,看看情况再微调。但是尽量设置不要超过物理内存70%
innodb_file_per_table=(1,0)
innodb_flush_log_at_trx_commit=(0,1,2) # 1是最安全的,0是性能最高,2折中
binlog_sync
Innodb_flush_method=(O_DIRECT, fdatasync)
innodb_log_buffer_size # 100M以下
innodb_log_file_size # 100M 以下
innodb_log_files_in_group # 5个成员以下,一般2-3个够用(iblogfile0-N)
innodb_max_dirty_pages_pct # 达到百分之75的时候刷写 内存脏页到磁盘。
log_bin
max_binlog_cache_size # 可以不设置
max_binlog_size # 可以不设置
innodb_additional_mem_pool_size #小于2G内存的机器,推荐值是20M。32G内存以上100M
![](/assets/blank.gif)
- | 更多精彩文章 -
-资源助手-
![](/assets/blank.gif)
![](/assets/blank.gif)
MySQL 性能优化之骨灰级,高阶神技 !相关推荐
- MySQL 性能优化之高阶神技
一.前言 MySQL调优对于很多程序员而言,都是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰. 在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询 ...
- 《MySQL性能优化和高可用架构实践》阅读总结
文章目录 介绍 第1章 MySQL架构介绍 1.1 MySQL简介 1.2 MySQL主流的分支版本 1.3 MySQL存储引擎 1.4 MySQL逻辑架构 1.5 MySQL物理文件体系结构 第2章 ...
- 《MySQL性能优化和高可用架构实践》简介与推荐序
#好书推荐##好书奇遇季#<MySQL性能优化和高可用架构实践>,京东当当天猫都有发售.腾讯云架构师宋立桓倾情奉献,定价59元,网店打折销售其实没多少钱. 互联网公司里面几乎很少有公司不用 ...
- Mysql 性能优化——必胜之道
mysql的性能优化是运维和DBA们常常面对的问题,也是各大公司招聘人才时看中的要点之一.性能优化听上去很难,似乎只有大神才能做,然而,mysql的性能优化绝不是运维独自一个能完成的,DBA.开发.架 ...
- Mysql性能优化方案
2019独角兽企业重金招聘Python工程师标准>>> 内容简介:这是一篇关于mysql 性能优化的文章.网上有不少mysql 性能优化方案,不过,mysql的优化同sql serv ...
- 记一次mysql性能优化过程
2019独角兽企业重金招聘Python工程师标准>>> 转发自:记一次mysql性能优化过程 由于配置是运行过那么长时间,很稳定,基本上不考虑,所以本次主要是sql的优化,并且集中在 ...
- MySQL性能优化速记
MySQL性能优化速记http://www.bieryun.com/3064.html 总结自<MySQL 5.7从入门到精通(视频教学版)>刘增杰编著. 优化简介 MySQL数据库优化是 ...
- MySQL 性能优化技巧
原文地址:MySQL 性能优化技巧 博客地址:www.extlight.com 一.背景 最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久.原因是新功能用到旧功能的接口,而这些旧接口的 S ...
- MySQL · 性能优化· InnoDB buffer pool flush策略漫谈
MySQL · 性能优化· InnoDB buffer pool flush策略漫谈 背景 我们知道InnoDB使用buffer pool来缓存从磁盘读取到内存的数据页.buffer pool通常由数 ...
最新文章
- 高可用MySQL_Mysql高可用架构
- C语言----求解N以内的素数的两种典型方法以及其优化
- CodeBlcoks插件
- 性能测试(03)-JDBC Request
- 常用Jquery前端操作
- 201521123057 《Java程序设计》第12周学习总结
- Python GUI界面编程初步 05- GUI框架PyQt的运用 - 01 PyQt的详细安装和基本使用
- 题解报告:hdu1205吃糖果(插空法)
- 西电计科院微机原理与系统设计课程笔记(车向泉版)
- Visual FoxPro权威指南pdf
- 上海黑马python培训
- pyltp的基本用法和语义角色标注
- 科大讯飞,百度,思必驰,云知声四款识别引擎降噪算法性能对比
- U盘插上后在“安全删除硬件”中不显示的解决方案
- Java 监控线程池所有任务是否执行完毕
- MyBatis知识汇总(第四篇)分页:LIMT(SQL方式),RowBounds(Java对象方式)
- Java集合框架中隐藏的设计套路
- 搜索凑单页大促显示延迟方案设计
- java calendar 比较大小_关于Java日期加减,并且比较大小的方法
- imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Corrupt JPEG data: 1 extraneous bytes be
热门文章
- 建筑工程量计算机构,一套完整的工程量计算实例含建筑结构图.doc
- python tkinter游戏界面_python tkinter游戏开发
- 【QT】word文档操作实例——根据word模板生成word报表
- Linux中wait()函数
- 电脑如何处理手机上的文件
- 浅拷贝和深拷贝的区别?
- Windows 安装 box2d-kengz报错解决方案
- 彩虹之眼文化集团整体方案设计
- cts游戏手机版_cts游戏手机版下载-cts游戏手机版下载中文版v1.6-完全实况
- 基于python的自媒体和官媒数据爬取、对比可视化分析及云词图提取关键词