mysql性能优化学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
mysql性能优化
硬件对数据库的影响
CPU资源和可用内存大小

服务器硬件对mysql性能的影响
我们的应用是CPU密集型?
我们的应用的并发量如何?
数量比频率更好
64位使用32位的服务器版本
32位不能使用超过4G的内容,因此选择的时候需要注意。
myisam
innodb

磁盘的配置和选择

机械硬盘:
存储容量
传输速度
访问时间
主轴转速
物理尺寸
使用RAID增加传统机器硬盘的性能
RAID:一系列小磁盘组成大磁盘,数据冗余
RAID 0 :成本最低,但是没有数据冗余会造成数据丢失。
RAID 1 :磁盘镜像,一个磁盘的数据镜像到另外一个磁盘。数据冗余性好,读性能好。
RAID 5 :分布式奇偶校验磁盘阵列。如果单一一块磁盘损坏可以通过其余磁盘值进行恢复,如果同时两块损坏则无法恢复。写比较慢。读比较快。
RAID 10 :是数据库最好的选择。又称为分片镜像。
使用固态存储SSD或PCIe卡
相比传统机械硬盘有更好的随机读写性能
有更好的并发支持
但固态磁盘更容易损坏

适用于大量随机IO的情况
使用解决单线程IO负载的IO瓶颈
如果只有一个ssd硬盘,应该使用在从服务器上确保数据的安全。

使用网络存储SAN和NAS
SAN设备通过光纤连接到服务器上,设备通过块接口访问。服务器可以当作硬盘使用。

可以使用大量的顺序读写
随机访问和随机写比较慢

NAS是通过网络访问协议进行访问,有网络访问的延迟。

使用场景:
不适用于数据库存储
适用于数据库备份

** CPU **
> * 64位的CPU运行64位的系统
> * 高并发的场景,cpu数量比频率重要
> * CPU密集型的场景和复杂sql则频率越高越好

** 内存 **

采用主板能使用的最高频率的内存
内存尽可能大
** I/O **

PCIe > SSD > Raid > 机械硬盘 > 网络存储(SAN)
操作系统对性能的影响-MySQL适合的操作系统
选择服务器版本,而不是桌面版本。
CentOS系统参数优化

内核相关参数(/etc/sysctl.conf)

网络性能设置

端口监听队列:net.core.somaxconn=65535
接受数据的速率:net.core.netdev_max_backlog=65535
未获得连接的请求和保存在内存中的数量,超过时会被丢弃:net.ipv4.tcp_max_sync_backlog=65535

上述三个应该同时调大
tcp连接处理等待时间:net.ipv4.tcp_fin_timeout=10
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
上述三个主要加快网络连接的回收。
net.core.wmem_default=87380
net.core.wmem_max=16777216
net.core.rmem_default=87380
net.core.rmem_max=16777216
缓冲区接受和发送数据大小的最大值和默认值
探测的时间间隔(s): net.ipv4.tcp_keepalive_time=120
消息重发时的时间间隔(s): net.ipv4.tcp_keepalive_intvl=30
tcp连接超时前最多发送几次: net.ipv4.tcp_keepalive_probes=3
内存
kernel.shmmax = 4292967295
这个参数应该设置得足够大,以便于在一个共享内存段中容纳下整个Innodb缓冲池的大小
这个值的大小对于64位linux系统,可以取内存最大值-1byte,建议大于物理内存的一半。一般大于Innodb缓冲池的大小即可。
vm.swappiness = 0 :当内存不足时会对系统性能产生比较大的影响。

Linux系统内存交换区(swap):

vm.swapppiness = 0

    当系统内存不足时会将一些虚拟内存写入磁盘交换区(swap)中。

    由于使用swap会对mysql性能产生灾难性的影响。因此对mysql服务器是否使用swap分区存在一些争议。

    如果禁用swap分区也会带来一些影响:
降低操作系统的性能
容易造成内存溢出、崩溃或者被操作系统kill掉
    就上述影响而言,保留swap分区还是必要。

vm.swapppiness是告诉操作系统,除非内存完全满了,否则不使用swap。
增加系统资源限制(/etc/security/limit.conf)

打开文件数量的限制,加到/etc/security/limit.conf末尾即可:
    * soft nofile 65535
    * hard nofile 65535
*表示对所有用户有效
soft表示当前系统生效的配置
hard表示系统中能设置的最大值
nofile表示所限制的资源是打开文件的最大数量
65535限制的数量
磁盘调度策略(/sys/block/devname/queue/scheduler)

cat /sys/block/devname/queue/scheduler
noop anticipatory deadline [cfq]   # 完全公平队列,一般用于桌面系统

noop:电梯式调度,饿死读满足写
deadline:截至时间策略,`数据库类型最好的选择`
anticipatory:和deadline一样,只是最后一次读操作后要等待6毫秒。合并多次写为一次写,适合于文件服务器,对数据库服务器表现很差。

将磁盘调度策略改为deadline
echo deadline > /sys/block/devname/queue/scheduler
文件系统对性能的影响

ext3、ext4、xfs(性能更高),上诉都具备日志功能,对数据安全性较好。

ext3、ext4系统挂载参数(/etcc/fstab)
data=writeback(Innodb最好的选择)|ordered|journal
noatime,访问时间
nodiratime,目录访问时间
/dev/sda1/ext4 noatime,nodiratime,data=writeback 1 1










本文转自秋楓博客园博客,原文链接:http://www.cnblogs.com/rwxwsblog/p/5785376.html,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
60
分享
相关文章
MySQL索引学习笔记
本文深入探讨了MySQL数据库中慢查询分析的关键概念和技术手段。
344 80
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
243 6
mysql的性能优化
在数据库设计中,应选择合适的存储引擎(如MyISAM或InnoDB)、字段类型(如char、varchar、tinyint),并遵循范式(1NF、2NF、3NF)。功能上,可以通过索引优化、缓存和分库分表来提升性能。架构上,采用主从复制、读写分离和负载均衡可进一步提高系统稳定性和扩展性。
73 9
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
MySQL中用于数据检索的`fetchone()`, `fetchmany()`, `fetchall()`函数的功能、SQL语句示例和应用场景。
173 3
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
139 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
1011 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
108 1
MySQL性能优化实践指南
【10月更文挑战第16天】MySQL性能优化实践指南
523 0
MySQL性能优化指南
【10月更文挑战第16天】MySQL性能优化指南
719 0