返回顶部
首页 > 资讯 > 数据库 >MySQL优化案例的初步思路是什么
  • 422
分享到

MySQL优化案例的初步思路是什么

2024-04-02 19:04:59 422人浏览 薄情痞子
摘要

这期内容当中小编将会给大家带来有关Mysql优化案例的初步思路是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 今天想起这件同事处理的一

这期内容当中小编将会给大家带来有关Mysql优化案例的初步思路是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

今天想起这件同事处理的一个性能优化案例,当时虽然解决了,但是还是留下了几个未解的问题,和大家一起讨论一下。
首先,这个问题是根据反馈sql响应很慢,已经开始影响前端应用的登录了。稍后DBA介入,发现是由于CPU使用率过高导致,为了能够延缓问题和进一步分析,因为数据库中的数据量不大,直接就迁移到了另外一台配置不错的服务器上,但是迁移之后,CPU配置好了很多,问题依旧,同时也在进行问题的诊断和分析。
得到的慢日志如下,发现大多数的响应时间都耗费在了两个SQL上,其实出自同一个存储过程。
1、慢日志
# Profile
# Rank Query ID           Response time   Calls R/Call  V/M   Item
# ==== ================== =============== ===== ======= ===== ============
#    1 0x26EEFEA86049462C 7667.3733 44.3%   189 40.5681  6.88 CALL p_reGISter_check_1021e
#    2 0x6D5C3CEFC40B5E28 7518.4182 43.5%   189 39.7800  6.10 UPDATE push_list_s

两个查询的统计信息如下:
# Query 1: 0.30 QPS, 12.15x concurrency, ID 0x26EEFEA86049462C at byte 976472

# This item is included in the report because it matches --limit.

# Scores: V/M = 6.88

# Time range: 2015-11-02 21:41:53 to 21:52:24

# Attribute    pct   total     min     max     avg     95%  stddev  median

# ============ === ======= ======= ======= ======= ======= ======= =======

# Count          3     189

# Exec time     44   7667s      1s     90s     41s     57s     17s     45s

# Query 2: 0.30 QPS, 11.92x concurrency, ID 0x6D5C3CEFC40B5E28 at byte 1397182

# This item is included in the report because it matches --limit.

# Scores: V/M = 6.10

# Time range: 2015-11-02 21:41:53 to 21:52:24

# Attribute    pct   total     min     max     avg     95%  stddev  median

# ============ === ======= ======= ======= ======= ======= ======= =======

# Count          3     189

# Exec time     43   7518s      1s     77s     40s     57s     16s     45s

# Lock time     30     65s    13us     19s   343ms    21us      2s    18us


相关的SQL语句如下

# Converted for EXPLaiN

# EXPLAIN

select  APNS_PUSH_ID = `ID` from push_list_s where  APNS_PUSH_ID =  NAME_CONST('i_apnsPushId',_utf8'eb43f3f09940de7228a780f69d05eab0a9df98083c701e23D11c7494a980b351' COLLATE 'utf8_general_ci')\G

涉及的表只有一个,表结构如下:

Create Table: CREATE TABLE `push_list_s` (

  `ID` int(10) NOT NULL AUTO_INCREMENT,

  `SN_LIST_ID` int(10) NOT NULL DEFAULT '0',

  。。。

  `APNS_PUSH_ID` varchar(64) CHARACTER SET latin1 NOT NULL DEFAULT '""',

 。。。

  PRIMARY KEY (`ID`),

  UNIQUE KEY `INDEX_SN_LIST_ID` (`SN_LIST_ID`),

  UNIQUE KEY `APNS_PUSH_ID` (`APNS_PUSH_ID`),

  KEY `INDEX_CABLE_PUSH_ID` (`CABLE_PUSH_ID`)

) ENGINE=InnoDB AUTO_INCREMENT=2181938 DEFAULT CHARSET=utf8


整个调用过程的要点如下,里面有一个update操作,字段APNS_PUSH_ID为varchar

     IF (LENGTH(i_apnsPushId)=64) THEN

        UPDATE push_list_s SET APNS_PUSH_ID = `ID` WHERE APNS_PUSH_ID = i_apnsPushId;

     END IF;

运行的语句类似下面的形式:
UPDATE push_list_s SET APNS_PUSH_ID = `ID` WHERE APNS_PUSH_ID =  'eb43f3f09940de7228a780f69d05eab0a9df98083c701e23d11c7494a980b351';
初步的分析怀疑是由于索引为字符过长导致,所以根据表的结构信息,其实就是转换到了数字类型的字段上。
修改后的部分如下:
IF (LENGTH(i_apnsPushId)=64) THEN

        select ID into v_id from  push_list_s WHERE APNS_PUSH_ID = i_apnsPushId;

        IF (v_id > 0) THEN

            UPDATE push_list_s SET APNS_PUSH_ID = v_id WHERE ID = v_id;

        END IF;

     END IF;

这是优化前后的对比效果图:

MySQL优化案例的初步思路是什么

目前对于这个问题的疑问如下:
1.对于字符型字段作为索引,目前来看没有很直接的原因使得字符型索引和数字型索引存在巨大的差别。从后来我单独得到的执行计划和华宁复现情况来看,没有发现存在很巨大的差别。
2.对于慢日志中得到的语句,看到内部已经做了转换。
UPDATE push_list_s SET APNS_PUSH_ID = `ID` WHERE APNS_PUSH_ID =  NAME_CONST('i_apnsPushId',_utf8'eb43f3f09940de7228a780f69d05eab0a9df98083c701e23d11c7494a980b351' COLLATE 'utf8_general_ci')\G
而对于这种转换,可能关注点都在NAME_CONST这个部分,在查看了一些资料之后,发现在其他版本和环境中,主要是和字符集转换有关,但是我查看了当前环境的这些配置信息,没有发现有相匹配的信息
3.关于这个问题,在5.1版本中发现了相应的bug描述,但是目前的环境是在5.6,所以应该也不是相关。
关于这个问题的进一步分析,我希望得到一些确切的信息,能够复现,能够找到一些相关的bug或者相关的解决方案(除了使用数字型字符临时替换的方案)

上述就是小编为大家分享的mysql优化案例的初步思路是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL优化案例的初步思路是什么

本文链接: https://lsjlt.com/news/66534.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL优化案例的初步思路是什么
    这期内容当中小编将会给大家带来有关MySQL优化案例的初步思路是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 今天想起这件同事处理的一...
    99+
    2024-04-02
  • SQL调优的思路是什么
    本篇内容介绍了“SQL调优的思路是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一般来说,需要关注下面...
    99+
    2024-04-02
  • css初始化是什么意思
    这篇文章给大家分享的是有关css初始化是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。CSS初始化是指重设浏览器的样式。不同的浏览器默认的样式可能不尽相同,所以开发时的第一件事可能就是如何把它们统一。如果...
    99+
    2023-06-14
  • Vue初始化是什么意思
    Vue 是一款非常流行的 JavaScript 框架,广泛用于构建现代化的 Web 应用程序。在开始学习 Vue 之前,你需要先了解 Vue 的初始化过程,以便正确地使用 Vue 并创建可重复的代码。初始化 Vue 是指在页面中创建一个 V...
    99+
    2023-05-14
  • MySQL常见优化方案是什么
    MySQL常见优化方案是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。sql优化的几个地方select [字段 优化1]:主要是覆盖索引from []wher&#...
    99+
    2023-06-26
  • 优化JS类和对象的重构思路是什么
    优化JS类和对象的重构思路是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。JavaScript 是一种易于学习的编程语言,编写运行并执...
    99+
    2024-04-02
  • 设计MySQL双主架构方案的思路是什么
    本文主要给大家简单讲讲设计MySQL双主架构方案的思路是什么,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望设计MySQL双主架构方案的思路是什么这篇文章可以...
    99+
    2024-04-02
  • Golang中同步机制的性能优化思路
    在Golang中,有一些性能优化思路可以应用于同步机制:1. 使用无锁数据结构:无锁数据结构可以避免使用锁来实现同步,从而提高性能。...
    99+
    2023-10-08
    Golang
  • mysql数据库优化思路与方向是怎样的
    mysql数据库优化思路与方向是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、基础优化mysql> show status l...
    99+
    2024-04-02
  • 记一次MySQL的优化案例
    一  背景       有赞的每个OLTP数据库实例上会设置一个sql-killer进程用于kill 掉执行时间超过一定阈值的sql。下午开发接收到sql被kill的报错,一起...
    99+
    2022-05-16
    MySQL 优化 MySQL 优化案例
  • mysql同步是什么意思
    本篇内容介绍了“mysql同步是什么意思”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Mysql 的Rep...
    99+
    2024-04-02
  • MySQL查询中分页的思路和优化
    这篇文章主要介绍“MySQL查询中分页的思路和优化”,在日常操作中,相信很多人在MySQL查询中分页的思路和优化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL查询中...
    99+
    2024-04-02
  • MySQL性能优化的案例分析
    这篇文章主要介绍MySQL性能优化的案例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言MySQL索引底层数据结构与算法MySQL性能优化原理-前篇实践(1)--MySQL性能...
    99+
    2024-04-02
  • Mysql的慢SQL优化思路和规范详解
    目录1、索引优化1.1 建表或加索引时,保证表里互相不存在冗余索引。1.2 复合索引1.3 使用短索引1.4 单个表上的索引个数不能超过8个1.5 在多表join的SQL里,保证被驱动表的连接列上有索引,这样join执行...
    99+
    2023-05-16
    Mysql 慢SQL SQL优化思路 SQL规范
  • 关于Execute to Parse %:比例太低的优化思路
    AWR报告中Execute to Parse %:比例太低,如下所示: ...
    99+
    2024-04-02
  • mysql重新初始化的方法是什么
    要重新初始化MySQL,可以按照以下步骤操作: 停止MySQL服务:可以使用以下命令停止MySQL服务: sudo servic...
    99+
    2024-04-09
    mysql
  • 亚马逊服务器网络优化方案是什么意思
    负载均衡:亚马逊负载均衡是一种能够将多个服务器的流量分发到单个服务器上的技术。通过负载均衡,可以确保一个或多个服务器在处理用户请求时更加稳定和高效。 缓存:缓存是一种将数据按需加载的技术,可以提高用户对网站的访问速度和效率。通过缓存,可以...
    99+
    2023-10-27
    亚马逊 服务器 方案
  • MySQL优化的方法是什么
    这篇文章主要介绍“MySQL优化的方法是什么”,在日常操作中,相信很多人在MySQL优化的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL优化的方法是什么”...
    99+
    2024-04-02
  • mysql中的优化器是什么
    这篇文章主要讲解了“mysql中的优化器是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql中的优化器是什么”吧!说明分析器生成的语法树被认为是合法的,由优化器转化为执行计划。在m...
    99+
    2023-06-20
  • 优化MySQL数据库性能的思路有哪些
    今天就跟大家聊聊有关优化MySQL数据库性能的思路有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。小编在这里介绍了提高MySQL 数据库性能的思...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作