首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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查询成本不止包括执行成本也包括索引优化和连接优化,一般分为四个步骤:

根据搜索条件,找出所有可能使用的索引

计算全表扫描的代价

计算使用不同索引执行查询的代价

对比各种执行方案的代价,找出成本最低的那一个

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190908A0HZZE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券