mysql操作系统和硬件的优化

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

                 mysql操作系统和硬件的优化


一、CPU 那个更好,更快的CPU还是更多的CPU?、

1
2
3
当遇到CPU密集型的工作时候,mysql通常可以从更快的CPU中获益.
而,备库的话,一般是i/o密集型,因为主库和从库之间是单线程
多CPU在联机事务处理(OLTP)系统中非常有用.

二、平衡内存和磁盘资源

1
2
配置大量内存原因其实不是因为可以在内存中保存大量数据,而最终目的是避免磁盘I/O
当所有数据放到内存中,此时服务器"热"起来,所有的读取操作都会缓存命中,,换句话说,缓存可延迟写入此时便会出现缓存命中率,可以使用CPU利用率来判断缓存命中

三、随机的I/O和顺序的I/O

1
2
顺序操作的执行速度比随机操作的块,无论在内存还是磁盘
所以增加内存是解决随机I/O读取问题的最好办法,如果有足够的内存,就可以完全避免磁盘的读取请求.存储引擎的顺序读比随机读快。

四、  使用固态硬盘(闪存)

1
2
3
4
5
6
7
什么情况下使用闪存?
有着大量随机I/O工作负载场景下,造成大量随机I/O的情况是由于数据大于服务器内存导致的.
优化固态硬盘上的mysql
1,增加innoDB的I/O容量   增加I/O线程数到10-15
2,增加innodb的日志文件,以帮助提升和稳定性能(4G)
3,把一些存储从闪存转移到RAID,并且ibdata1也适合放到raid卷上,而且可以利用percona server 特性使用4kb的块写事务日志,而不是默认的521字节。因为这会匹配大部分的闪存本身的块大小,以获得更好的效果
4,限制插入缓冲大小,innoDB中变更为change buffer,而不是无限增大,并避免ibdata1变得非常大。在MYSQL 5.6会有此变量


五、raid的性能优化:不做过多的记录

1
2
1,raid5 本身的优化已经可以达到raid10的性能。没钱用raid5 有钱用raid10
2,做raid阵列的监控。以便提醒硬盘或者raid卷降级或者失效


六、 优化网络以提升mysql性能

1
2
3
1,DNS配置 尽量使用skip-name-resolve来减少因解析带来的不必要麻烦、
2,检查网络的ping 丢包率、
3,通过优化/etc/sysctl.cnf 中的网络参数,提升性能,以下便是参考值
1
2
3
4
net.ipv4.ip_local_port_range = 1024 65535  改变本地的端口范围
net.ipv4.tcp_max_syn_backlog = 4096   允许更多的连接进入队列
net.ipv4.tcp_fin_timeout = 30    对于只在本地使用的数据库服务器,
可以缩短tcp保持状态的超时时间、默认1分钟


七、选择磁盘队列的调度策略 (noop,deadline,,anticipatory,cfg(默认))

mysql,oracle最好的的选择是deadline

1
2
3
4
5
6
7
[root@mysql-master ~]# cat /sys/block/sda/queue/scheduler 
noop anticipatory deadline [cfq] 
#echo deadline > /sys/block/sda/queue/scheduler   临时修改为deadline
[root@mysql-master ~]# cat /sys/block/sda/queue/scheduler 
noop anticipatory [deadline] cfq 
 
永久修改方式:http://www.2cto.com/os/201307/228389.html

八、线程

1
新版的mysql默认都使用了新的原生的POSIX线程库(NPTL)

九、虚拟机内存

1
虚拟内存是一个很糟糕的问题,可以使用vmstat 来监控内存交换,最好查看si,so,列报告内存的交换I/O活动,太多的内存交换很可能导致操作系统的交换空间溢出。甚至有些人完全禁用交换文件,这样其实不仅降低了操作系统的性能,而且还是很危险,因为禁用了内存交换就相当于给内存设置了一个不可动摇的限制,如果mysql需要很大的一块内存,或者耗内存的进程在同一台机器,mysql可能溢出,奔溃,或者被杀死。所以,操作系统会对内存的I/O进行一些控制,告诉内核,虚拟内存完全满了,否咋不要使用交换分区
1
2
3
4
cat  /proc/sys/vm/swappiness      操作系统默认为0
60
但是对于服务器来说,这个值是很糟糕的,服务器应该设置为 0
echo  0 > /proc/sys/vm/swappiness


十、操作系统的状态

1
2
3
vmstat 可以查看服务器的状态,是CPU密集型还是I/O密集型
CPU密集型  进程队列有等待(R),us ,sy 列有很高的值 
I/O密集型   很多处理器在非中断的休眠(b列),而且wa这一列值很高


 



      本文转自crazy_charles 51CTO博客,原文链接:http://blog.51cto.com/douya/1734631,如需转载请自行联系原作者



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
17天前
|
关系型数据库 MySQL 索引
mysql 分析5语句的优化--索引添加删除
mysql 分析5语句的优化--索引添加删除
13 0
|
18天前
|
Linux 编译器 开发者
Linux设备树解析:桥接硬件与操作系统的关键架构
在探索Linux的庞大和复杂世界时🌌,我们经常会遇到许多关键概念和工具🛠️,它们使得Linux成为了一个强大和灵活的操作系统💪。其中,"设备树"(Device Tree)是一个不可或缺的部分🌲,尤其是在嵌入式系统🖥️和多平台硬件支持方面🔌。让我们深入了解Linux设备树是什么,它的起源,以及为什么Linux需要它🌳。
Linux设备树解析:桥接硬件与操作系统的关键架构
|
22天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
22天前
|
存储 SQL 关系型数据库
轻松入门MySQL:加速进销存!利用MySQL存储过程轻松优化每日销售统计(15)
轻松入门MySQL:加速进销存!利用MySQL存储过程轻松优化每日销售统计(15)
|
22天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:优化进销存管理,掌握MySQL索引,提升系统效率(11)
轻松入门MySQL:优化进销存管理,掌握MySQL索引,提升系统效率(11)
|
17天前
|
SQL 缓存 关系型数据库
mysql性能优化-慢查询分析、优化索引和配置
mysql性能优化-慢查询分析、优化索引和配置
83 1
|
1天前
|
SQL 关系型数据库 MySQL
不允许你不知道的 MySQL 优化实战(一)
不允许你不知道的 MySQL 优化实战(一)
|
2天前
|
存储 缓存 关系型数据库
掌握MySQL数据库这些优化技巧,事半功倍!
掌握MySQL数据库这些优化技巧,事半功倍!
|
2天前
|
缓存 关系型数据库 MySQL
MySQL数据库优化技巧:提升性能的关键策略
索引是提高查询效率的关键。根据查询频率和条件,创建合适的索引能够加快查询速度。但要注意,过多的索引可能会增加写操作的开销,因此需要权衡。
|
2天前
|
SQL Oracle 关系型数据库
下次老板问你MySQL如何优化时,你可以这样说,老板默默给你加工资
现在进入国企或者事业单位做技术的网友越来越多了,随着去O的力度越来越大,很多国企单位都开始从Oracle向MySQL转移,相对于Oracle而言,MySQL最大的问题就是性能,所以,这个时候,在公司如果能够处理好MySQL的性能瓶颈,那么你也就很容易从人群中脱颖而出,受到老板的青睐。
22 1