前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL查询成本

MySQL查询成本

作者头像
只喝牛奶的杀手
发布2019-09-10 15:23:14
1.2K0
发布2019-09-10 15:23:14
举报

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一起努力。


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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 只喝牛奶的杀手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档