最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

环球快资讯丨MySQL——性能优化的关注点

来源:博客园


(相关资料图)

mysql 性能优化的关注点

其实,mysql 性能优化不是简单的知道和使用 explain和show profile就天下无敌了,这两个只是重要的方面,何况作为资深的CRUD工程师还未必经常使用,任何的知识都是了解->熟悉->精通,当真正的了解原理或者系统的掌握才是真正的悟道。接下来开始进入正题,mysql又能优化主要为4个方面:

  • 硬件资源和操作系统方面的优化
  • 架构设计方面的优化
  • mysql服务配置项的优化
  • sql执行层面的优化

一、 硬件和操作系统方面的优化

硬件和操作系统就是指mysql服务所运行的服务器硬件资源情况,影响mysql性能的主要因素分为 cpu 、内存大小、磁盘读写速度、网络带宽,硬件是指操作系统的网络配置和系统文件句柄数设置(linux 系统中,一切皆文件,了解过ES搭建的同学都知道,ES的搭建就需要修改系统最大打开的文件数) ,这部分的优化一般由运维工程师和DBA联合完成,在项目开发伊始,可以根据业务需要承载的数据量和 TPS 要求根据经验,考虑后续的业务扩展性,选择与业务相适配的mysql服务。

二、 架构设计方面的优化

mysql是一个磁盘io访问频繁的关系型数据库,在高并发和高性能的应用场景中会承受巨大的压力,可以采取以下措施来应对:

  1. 搭建mysql主从集群,单个mysql服务一旦宕机,将会导致依赖mysql服务的应用无法响应导致服务不可用,可以采用采用主从集群或者主主集群避免单点故障,保障mysql服务的高可用性。
  2. 读写分离设计,在读多写少的场景中,可以采用读写分离的方案避免读写冲突导致的性能问题。
  3. 采用分库分表的设计。通过分库可以降低单个mysql服务器的io压力,通过分表的机制可以降低单表数据量,提高sql的查询效率。
  4. 热点数据引入Nosql。引入Redis或者MongoDB等非关系型数据库,可以缓解mysql的访问压力,提升数据的检索性能。

三、 mysql 程序配置优化。

mysql配置文件的优化,一般通过 mysql配置文件my.cnf来设置。配置项一般包括:

mysql的最大连接数max_connections(注意这里说的不是项目中设置的数据库连接池的连接数)最大的传输包(max_allowed_packet = 16M)开启 bin log(默认不开启,主要用在 mysql 同步的场景中)general log(通用日志记录 sql 的执行记录)来记录日志还有就是缓冲区(buffer pool), 包括: 关联查询缓冲区 join_buffer_size=128M, 读数据缓冲区read_buffer_size=16M,随机读缓冲区read_rnd_buffer_size=32M,排序数据缓冲区 sort_buffer_size=32M, innodb 数据缓冲区innodb_buffer_pool_size=4G。这些参数的配置一般和服务器的资源和使用场景有关,需要根据实际情况来设置。配置项的修改需要关注两个点,一是配置的作用范围,分为会话级别和全局范围,全局参数对已经存在的会话不会生效,会话参数设置只在当前会话生效,会话结束则配置失效,全局类的配置放在默认的配置文件中,否则服务重启将会失效。第二是否支持热加载

四、 sql 执行层面优化

sql执行层面优化的要点如下:

1 慢sql查询分析,通过慢sql查询日志和慢sql查询分析工具来定位有问题的sql列表2 执行计划。通过explain 关键字 + 慢 sql查看当前sql的执行计划,需要重点关注select_type、type、 key、 rows、 filterd、 possible_keys来分析 sql 慢的原因.3 使用show profile工具来分析,该工具是mysql提供的分析当前会话中sql语句资源消耗情况的工具,可以用于sql调优的测量,当前会话中默认是关闭的状态,需要根据情况打开,默认保存最近 15 次的分析结果,针对慢sql可以通过show profile工具来进行详细分析,得到整个过程中所以资源的开销情况,比如io开销cpu开销和内存开销等情况

关键词: 操作系统 配置文件 硬件资源