• 售前

  • 售后

热门帖子
入门百科

关于MySQL中的查询开销检察方法详解

[复制链接]
123457776 显示全部楼层 发表于 2021-10-26 13:55:19 |阅读模式 打印 上一主题 下一主题
MySQL逻辑架构
如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。

MySQL逻辑架构,来自:高性能MySQL

MySQL逻辑架构团体分为三层,最上层为客户端层,并非MySQL所独有,诸如:连接处理、授权认证、安全等功能均在这一层处理。
MySQL大多数核心服务均在中间这一层,包罗查询剖析、分析、优化、缓存、内置函数(比如:时间、数学、加密等函数)。全部的跨存储引擎的功能也在这一层实现:存储过程、触发器、视图等。
最下层为存储引擎,其负责MySQL中的数据存储和提取。和Linux下的文件系统类似,每种存储引擎都有其上风和劣势。中间的服务层通过API与存储引擎通信,这些API接口屏蔽了不同存储引擎间的差异。
MySQL利用基于资本的优化器,它实行预测一个查询利用某种实行筹划时的资本,并选择此中资本最小的一个。在MySQL可以通过查询当前会话的last_query_cost的值来得到其计算当前查询的资本。
示例代码
  1. mysql> select * from t_message limit 10;
  2. ...省略结果集
  3. mysql> show status like 'last_query_cost';
  4. +-----------------+-------------+
  5. | Variable_name | Value |
  6. +-----------------+-------------+
  7. | Last_query_cost | 6391.799000 |
  8. +-----------------+-------------+
复制代码
示例中的结果表现优化器以为大概必要做6391个数据页的随机查找才气完成上面的查询。这个结果是根据一些列的统计信息计算得来的,这些统计信息包罗:每张表或者索引的页面个数、索引的基数、索引和数据行的长度、索引的分布环境等等。
有非常多的缘故起因会导致MySQL选择错误的实行筹划,比如统计信息不精确、不会考虑不受其控制的操作资本(用户自界说函数、存储过程)、MySQL以为的最优跟我们想的不一样(我们盼望实行时间尽大概短,但MySQL值选择它以为资本小的,但资本小并不意味着实行时间短)等等。
这里last_query_cost的值是io_cost和cpu_cost的开销总和,它通常也是我们评价一个查询的实行效率的一个常用指标。
(1)它是作为比力各个查询之间的开销的一个依据。
(2)它只能检测比力简朴的查询开销,对于包罗子查询和union的查询是测试不出来的。
(3)当我们实行查询的时间,MySQL会自动天生一个实行筹划,也就是query  plan,而且通常有许多种不同的实现方式,它会选择最低的那一个,而这个cost值就是开销最低的那一个。
(4)它对于比力我们的开销黑白常有效的,特殊是我们有好几种查询方式可选的时间。
总结
以上就是这篇文章的全部内容了,盼望本文的内容对大家的学习或者工作具有一定的参考学习代价,如果有疑问大家可以留言交换,谢谢大家对脚本之家的支持。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作