MySQL查询成本

CPU、内存、磁盘IO、网络作为性能优化的四大天王,但MySQL中一条查询语句的执行成本是由磁盘IO和CPU成本决定的:

I/O成本

我们的表经常使用的MyISAM、InnoDB存储引擎都是将数据和索引都存储到磁盘上的,当我们想查询表中的记录时,需要先把数据或者索引加载到内存中然后再操作。这个从磁盘到内存这个加载的过程损耗的时间称之为I/O成本。

CPU成本

读取以及检测记录是否满足对应的搜索条件、对结果集进行排序等这些操作损耗的时间称之为CPU成本。

没有大数据量的查询,一般I/O成本还好。当然代码中也不允许一次查询上万条数据,如果需要导数据可以走从库和延时从库。其实在我们工作当中,应用程序从数据库查询数据,最多出现的是频繁调用,sql频繁调用很大程度是消耗的CPU,出现这种问题怎么办呢?

进入MySQL使用show processlist, 查看当前 MySQL使用频繁的 sql 语句,反复调用此命令,就能把循环调用的sql,如果开发这样在主库上做的话,一定要拉出去祭天。database被大量的循环调用,会消耗大量的CPU。

当然我们也不能把锅全部甩给硬件,你自己做到了“勿以善小而不为,勿以恶小而为之”了吗?SQL查询成本不止包括执行成本也包括索引优化和连接优化,一般分为四个步骤:

  1. 根据搜索条件,找出所有可能使用的索引
  2. 计算全表扫描的代价
  3. 计算使用不同索引执行查询的代价
  4. 对比各种执行方案的代价,找出成本最低的那一个

总之,MySQL的查询成本是多方面,要想做到高性能MySQL,需要运维,开发,DBA一起努力。


每周一句|记得,当你被现实痛苦的攻击,请问自己,我想要什么?然后盯紧你的梦想,而不是你的敌人!

本文分享自微信公众号 - 只喝牛奶的杀手(killerhub),作者:只喝牛奶的杀手

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 开发应该知道的Linux系统分析

    一谈到Linux系统分析,大多数开发觉得不了解也没有关系,但是了解了可以帮你走的更远。从开发的角度了解CPU,MEMORY,IO,NETWORK。在日常工作中我...

    只喝牛奶的杀手
  • 开发应该知道的Linux系统分析-CPU篇

    /proc/cpuinfo是可以获取系统CPU信息比如物理CPU的个数 每个CPU的物理核心数量 CPU的型号和主频等信息。

    只喝牛奶的杀手
  • 消息驱动-生产消费模式

    在spring boot 应用中我们通常会用rabbitMQ或是kafka来做消息中间件,应用中均需代码实现具体消息中间件的通信细节。

    只喝牛奶的杀手
  • Linux Scheduling Domains

    Scheduling Domains 是现代硬件技术尤其是多 CPU 多核技术发展的产物。现在,一个复杂的高端系统由上到下可以这样构成:

    jeff xie
  • 关于成本到底是怎么回事

    科学计算是指利用计算机再现、预测和发现客观世界运动规律和演化特征的全过程。科学计算为解决科学和工程中的数学问题利用计算机进行的数值计算。

    matinal
  • 建立高效的工作方式

    2020 年的工作正式开启,大多数开发者的开工方式是云办公。对开发者来说,云办公意味着什么?如何开始云办公?云办公的发展趋势会怎样?基于此,云加社区联手知乎科技...

    云加社区专栏
  • 性能优化:B*Tree 索引中的数据块分配(五)

    黄玮(Fuyuncat) 资深Oracle DBA,个人网www.HelloDBA.com,致力于数据库底层技术的研究,其作品获得广大同行的高度评价. 编辑手记...

    数据和云
  • hash 算法原理及应用漫谈

    ? 本文作者:jeffhe,腾讯 IEG 开发工程师 提到hash,相信大多数同学都不会陌生,之前很火现在也依旧很火的技术区块链背后的底层原理之一就是hash...

    腾讯技术工程官方号
  • 重学算法:Hash 算法原理及应用漫谈

    Hash也称散列、哈希,对应的英文都是Hash。基本原理就是把任意长度的输入,通过Hash算法变成固定长度的输出。这个映射的规则就是对应的Hash算法,而原始数...

    五分钟学算法
  • token jwt配置

    老梁

扫码关注云+社区

领取腾讯云代金券