Mysql服务优化
- 硬件层面优化
- 操作系统层面优化
- Mysql数据库层面优化
- 网站集群架构层面优化
- 安全优化
- 流程、制度控制优化
- CPU 64CPU,至少2-4颗cpu,L2越大越好
- MEMORY 96-128G跑3-4个实例;32-64,跑1-2个实例
- DISK SAS机械盘,数量越多越好
- RAID RAID0> RAID10(推荐)> RAID5(少用)
- NETWORK 多网卡bond,buffer,tcp优化
- 数据库服务器数据IO密集型服务,尽量不要使用虚拟化
- 一定选择x86_64位系统,推荐使用CentOS6.8,关闭NUMA特性
- 将操作系统喝数据分区分开
- 避免使用swap交换分区
- 避免使用软件磁盘阵列
- 避免使用LVM逻辑卷
- 删除服务器上未使用的安装包和守护进程
- 调整磁盘Cache mode
- 启用WCE=1(write cache Enable)RCD=0(Read cache Disable)模式 命令:sdparm -s WCE=1,RCD=0 -S /dev/sdb
- 采用Linux I/O scheuler算法deadline
- 采用deadline I/O调度起
- deadline调度参数,对于Centos 建议:
- 业务量很大建议采用xfs文件系统,业务量不是很大可采用ext4
- mount挂载文件系统增加:async、noatime、nodiratime、nobarrier(不使用raid卡电池)等选项
- 将vm.swappiness设置为0.10
- 将vm.dirty_background_ratio设置为5-10,将vm.dirty_ratio设置为它的两倍左右,以确保能持续将脏数据刷新到磁盘,避免瞬间I/O写入,产生严重等待
- 优化tcp协议栈,
- 减少TIME_WAIT,提高tcp效率
- 减少处于FIN0Await-2连接状态等时间,是系统可以处理更多的连接
- 减少TCP KeepAlive连接侦测时间,是系统可以处理更多的连接
- 提高系统支持的最大SYN半连接数(默认1024)
- 减少系统SYN连接重试次数(默认5)
- 优化系统套接字缓冲区
- 优化TCP接受/发送缓冲区
- 优化网络设备接收队列
- 其他优化
- 如果使用MyISAM引擎,需要key_buffer_size调大
- 建议设置default-storage-engine=InnoDB,强烈建议不要再使用MyISAM引擎。
- 调整innodb_buffer_pool_size的大小,如果是单实例且绝大多数是InnoDB引擎表的话,可考虑设置为物理内存的50% -70%左右。
- 设置innodb_file_per_table = 1,使用独立表空间。
- 调整innodb_data_file_path = ibdata1:1G:autoextend,不要用默认的10M,在高并发场景下,性能会有很大提升。
- 设置innodb_log_file_size=256M,设置innodb_log_files_in_group=2,基本可以满足大多数应用场景。
- 调整max_connection(最大连接数)、max_connection_error(最大错误数)设置,根据业务量大小进行设置。
- 另外,open_files_limit、innodb_open_files、table_open_cache、table_definition_cache可以设置大约为max_connection的10倍左右大小。
- key_buffer_size建议调小,32M左右即可
- 建议关闭query cache功能或降低设置不要超过512M(前端使用redis或memcached)
- mp_table_size、max_heap_table_size、sort_buffer_size、join_buffer_size、read_buffer_size、read_rnd_buffer_size等设置也不要过大。
- 白名单机制-百度,项目开发,DAB参与,减少上线后的慢sql数量
- 抓出慢sql:配置my.cnf
- 定时分析慢查询,发到核心开封,DBA分析及高级韵味,CTO邮箱
- 定期使用pt-duplicate-key-checker检查并删除重复的索引
- 定期使用pt-index-usage工具检查并删除使用频率低低索引
- 使用pt-online-schema-change来完成达标的online ddl需求
- 搜索功能:like %baidu%,一般不要用Mysql数据主库
- 避免在整表上使用count(*),他有可能导致锁表
- 使用连接join来代替子查询
- 多表连接查询时,把结果集笑的表作为驱动表
- 多表连接并且有排序时,排序字段必须时驱动表例的,否则排序列无法用到索引
- 使用explain及set profile优化sql语句
- 慢查询sql语句方法(紧急处理)
- 记录并分析慢查询日志(日常处理)
- explain语句检查索引执行情况
- 服务器上跑多实例,2-4个
- 主从复制一主五从,采用mixed模式,尽量不要夸机房同步(尽量远程写本地读)
- 定期pt-table-checksum、pt-table-sync来检查并修复mysql主从复制的数据差异
- 业务拆分:搜索功能一般不要用Mysql数据库,某些业务应用应使用nosql持久化存储,如memcached、redis、ttserver等
- 数据库前端必须加cache
- 动态的数据静态化(整个文件静态化,而非文件中的片段静态化)
- 数据库集群与读写分离。
- 选择从库进行备份
- 对数据库进行分库分表备份
Mysql服务优化的更多相关文章
- MySQL服务优化参数设置参考
l 通用类: key_buffer_size 含义:用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写). 影响:对于MyISAM表的影响不是很大,MyISAM会使用系统的缓存来存储 ...
- mysql学习(2)-MySQL服务器优化
调优思路: 1.数据库设计与规划--以后再修该很麻烦,估计数据量,使用什么存储引擎 2.数据的应用--怎样取数据,sql语句的优化 3.mysql服务优化--内存的使用,磁盘的使用 4.操作系统的优化 ...
- Mysql服务配置优化
mysql服务器优化包含 硬件优化.操作系统配置优化(cpu调度.网络.内存.虚拟内存.磁盘io).Mysql服务配置优化(最大连接数.表缓存等.存储引擎).表结构优化.索引优化 总共5个方面. 本片 ...
- Mysql性能优化三(分表、增量备份、还原)
接上篇Mysql性能优化二 对表进行水平划分 如果一个表的记录数太多了,比如上千万条,而且需要经常检索,那么我们就有必要化整为零了.如果我拆成100个表,那么每个表只有10万条记录.当然这需要数据在逻 ...
- mysql 性能优化方向
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- MySQL性能优化总结
一.MySQL的主要适用场景 1.Web网站系统 2.日志记录系统 3.数据仓库系统 4.嵌入式系统 二.MySQL架构图: 三.MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎 ...
- MYSQL性能优化的最佳20+条经验
MYSQL性能优化的最佳20+条经验 2009年11月27日 陈皓 评论 148 条评论 131,702 人阅读 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数 ...
- mysql 性能优化方案
网 上有不少MySQL 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果 ...
- mysql 性能优化方案1
网 上有不少mysql 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果 ...
随机推荐
- windows多线程(二) 等待线程返回
多线程编程中,有时我们需要等待某一线程完成了特定的操作后再继续做其他事情,要实现这个目的,可以使用Windows API函数WaitForSingleObject,或者WaitForMultipleO ...
- [华商韬略] 拉里·埃里森(Larry Elison) 的传奇人生
拉里·埃里森(Larry Elison) 的传奇人生 开战机.玩游艇.盖皇宫,挑战比尔·盖茨,干掉50多家硅谷豪强……全世界比拉里·埃里森更有钱的只有5个,像他这样的硅谷“坏孩子”却是唯一. 19 ...
- rocketmq 主机负载异常飙高问题的解决
最近在部署rocketmq到物理机时, 发现并解决了一个主机Load异常飙高的问题, 觉得有必要记录一下. 我们采用了rocketmq(https://github.com/alibaba/Rocke ...
- 如何规范 CSS 的命名和书写
我开始学前端的时候也是对于规范问题头疼,后来看了网易的NEC规范,惊呼牛逼 NEC : 更好的CSS样式解决方案 只遵循横向顺序即可,先显示定位布局类属性,后盒模型等自身属性,最后是文本类及修饰类属性 ...
- C# 抽签小程序
设计背景 设置一个Excel名单表,对名单进行随机抽取. 设计思路 使用Timer定时器,运行定时器进行名单随机滚动,停止定时器获得抽签结果 相关技术 随机数 Excel读取/导出 XML文档读写 相 ...
- 【Java并发编程】之九:死锁
当线程需要同时持有多个锁时,有可能产生死锁.考虑如下情形: 线程A当前持有互斥所锁lock1,线程B当前持有互斥锁lock2.接下来,当线程A仍然持有lock1时,它试图获取lock2,因为线程B ...
- CentOS 7 上安装(LAMP)服务 Linux,Apache,MySQL,PHP
介绍 LAMP 是现在非常流行的 WEB 环境, 是 Linux,Apache,MySQL,PHP 的缩写.数据存储在 MySQL 中,动态内容由 PHP 处理. 在本指南中,我们将演示如何在 Cen ...
- Vivian's Problem UVA - 1323(梅林素数+状压二进制)
借鉴:https://blog.csdn.net/miku23736748/article/details/52135932 https://blog.csdn.net/acm_cxlove/arti ...
- maven简单理解
前言: maven项目也是一个项目,类似于javaProject,javaWebProject,就是多了些功能,其他也没啥,所以大家接触的时候不要害怕! 1 . 帮你下载jar包 maven项目会有一 ...
- MT【147】又见最大最小
(2018浙江省赛12题)设$a\in R$,且对任意的实数$b$均有$\max\limits_{x\in[0,1]}|x^2+ax+b|\ge1$求$a$的范围_____解答:由题意$\min\li ...