目录
【日积月累】Mysql性能优化
- 1.前言
- 2.MySql性能优化的主要方面
- 2.1硬件和操作系统成面优化
- 2.2架构设计层优化(表结构)
- 2.3程序配置优化
- 2.5表结构及索引优化
- 2.4sql执行优化
- 3.总结
- 4.参考
文章所属专区 积月累
1.前言
MySQL是一种常用的开源关系型数据库管理系统,广泛应用于各种应用场景。但随着数据规模的增长和复杂查询的增多,MySQL性能优化变得尤为重要。本篇文章将探讨一些提高MySQL性能的关键策略和技巧,为读者提供有效的优化建议。无论是通过调整服务器硬件配置、优化查询语句、合理设计索引或者使用缓存技术,我们都将尽力介绍最佳实践。通过细致深入地了解MySQL的各个方面,希望读者能够提高数据库的响应速度,提升系统的整体性能,实现高效稳定的数据管理。
2.MySql性能优化的主要方面
第一个是硬件和操作系统成面优化,第二个是架构设计层优化,第三个是程序配置优化,第四个是sql执行优化。
2.1硬件和操作系统成面优化
从硬件层面来讲,影响Mysql性能的因素主要是1.cpu可用内存代销2.磁盘读写速度3.网络带宽
从操作系统层面来讲,主要是文件句柄数,以及操作系统的网络配置都会影响Mysql的性能,这一块主要就是运维人员或者DBA负责处理,根据实际业务体量,做出相适应的配置,避免造成资源过剩,浪费。
2.2架构设计层优化(表结构)
我们知道Mysql是一个磁盘io访问非常频繁的关系型数据库,在高并发和高性能的场景中Mysql必然会承担巨大的压力,在这一块可以做出优化
1.搭建主从集群,如果是单个Mysql服务器的话,一旦服务器宕机,会导致所有依赖于Mysql的响应。而使用了主从集群或者主主集群的方式搭建Mysql可以保证高可用性。
2.针对热点数据可以引入高效的分布式数据库,Redis,MongoDB,他们可以很好缓解数据库的访问压力,同时还能提升检索的性能。
2.3程序配置优化
以Mysql 5.7版本为例
1.在my.cnf中修改最大连接数(默认151)
2.在my.cnf中修改binlog(默认不开启)
3.在my.cnf中修改Bufferpool配置开启缓存池
这一块也是根据实际的业务场景由使用者或者DBA,运维人员去配置,Mysql只是提供一些默认配置。
2.5表结构及索引优化
1.读写分离,在读多写少的场景中可以通过读写分离避免读写冲突导致的性能问题。
2.分库分表,分库可以减少服务器的一个io压力,通过分表可以降低单表数据量从而提升sql查询效率
3.为字段选择合适的数据类型
4.为查询数据增加必要的索引
2.4sql执行优化
1.避免使用 * 查询(全表查询),写清楚需要查询的字段,这种方式性能开销非常大,并且失去了覆盖索引的能力。
2.小数据集驱动大数据集,用 in 不要用exists。
3.最好是一条sql操作一张表,避免其中某张表查询慢。
4.批量插入代替循环插入,用Mybatis批量处理insertBach(list)。
5.用limit限制返回条数,避免内存溢出。
6.用limit分页查询时pageNo不断增大,应该在查询语句前面川 lastMaxId(前端传)
7.查询时,缩小数据集的查询条件放前面
3.总结
MySQL是一款广泛使用的开源关系型数据库管理系统,它在许多应用场景中发挥着重要作用。然而,随着数据规模的增长和复杂查询的增多,MySQL的性能优化变得尤为重要。
4.参考
B站视频1
一文搞定MySQL性能调优
添MySQL性能调优的10个方法
关于MySQL数据库性能优化方法,看这一篇文章就够了
Mysql官方文档
4款 MySQL 调优工具
给个三连吧 谢谢谢谢谢谢了