mysql优化

91 阅读2分钟

一.硬件和操作系统层面优化

从硬件来说影响mysql性能的主要有cpu,可用内存,网络带宽,磁盘读写速度,从操作系统层面来说是应用文件句柄数,操作系统的网络配置,这些都会影响到mysql的性能。

根据服务本身所承载的体量,合理的指标要求,避免出现资源浪费的一个现象进行一个配置

二.架构设计层面优化

mysql是一个磁盘io访问非常频繁的关系型数据库,在高并发和高性能的场景中,mysql数据库必然会承受巨大的并发压力。

在此我们的优化方式可以通过几个方面

单个mysql实例容易导致单点故障,一旦发生故障或者宕机,依赖该数据库的服务就不可用。

1.搭建主从集群,或主主集群保证其高可用性

2.读写分离设计,避免因为读写的冲突影响其性能问题

3.引入分库分表机制,通过分库可以降低单个服务器节点的io压力,通过sharding-jdbc、mycat分表的方式可以降低单表数据量,从而去提升sql查询效率,针对热点数据可以引入高效的分布式数据库,比如redis,es,mongodb,它们可以很好的降低mysql的访问压力,同时还能提升数据检索的效率。

三.mysql程序配置优化

因为mysql在部署前都会有默认的配置属性,比如默认的最大连接数是151个,binglog日志默认不开启,缓存池buffpool 的默认大小配置等,都可以通过my.cnf进行使用人员的使用用场景和安装环境的实际情况进行合理配置。

四.sql执行优化

sql优化分为3个步骤

1.慢sql的定位和排查,可以通过慢查询日志,和慢查询日志工具分析得到有问题的sql列表

2.执行计划的分析,针对慢的sql可以使用关键字explain来去查看当前sql的执行计划,可以重点关注type key rows filterd等字段从而去定位执行慢的根本原因。

3.使用show profile工具,这个工具是mysql提供的,可以用来分析当前绘会话中,sql语句资源消耗情况的工具,可以进行sql调优的测量,在当前会话中show profile是关闭状态,打开之后会保存最近15次的运行结果,针对运行慢的sql可以用profile工具进行详细分析,可以得到sql执行过程中所有资源的开销情况,比如io开销,cpu开销,内存开销等等