[MySQL 5.6] 初识5.6的optimizer trace
mysql> set session optimizer_trace=’enabled=on';
| | select * from sbtest1 order by k limit 3 | {
“steps”: [
{
“join_preparation”: {
“select#”: 1,
“steps”: [
{
“expanded_query”: “/* select#1 */ select `sbtest1`.`id` AS `id`,`sbtest1`.`k` AS `k`,`sbtest1`.`c` AS `c`,
`sbtest1`.`pad` AS `pad` from `sbtest1` order by `sbtest1`.`k` limit 3″
}
]
}
},
{
“join_optimization”: {
“select#”: 1,
“steps”: [
{
“table_dependencies”: [
{
“table”: “`sbtest1`”,
“row_may_be_null”: false,
“map_bit”: 0,
“depends_on_map_bits”: [
]
}
]
},
{
“rows_estimation”: [
{
“table”: “`sbtest1`”,
“table_scan”: {
“rows”: 986400,
“cost”: 13741
}
}
]
},
{
“considered_execution_plans”: [
{
“plan_prefix”: [
],
“table”: “`sbtest1`”,
“best_access_path”: {
“considered_access_paths”: [
{
“access_type”: “scan”,
“rows”: 986400,
“cost”: 211021,
“chosen”: true
}
]
},
“cost_for_plan”: 211021,
“rows_for_plan”: 986400,
“chosen”: true
}
]
},
{
“attaching_conditions_to_tables”: {
“original_condition”: null,
“attached_conditions_computation”: [
],
“attached_conditions_summary”: [
{
“table”: “`sbtest1`”,
“attached”: null
}
]
}
},
{
“clause_processing”: {
“clause”: “ORDER BY”,
“original_clause”: “`sbtest1`.`k`”,
“items”: [
{
“item”: “`sbtest1`.`k`”
}
],
“resulting_clause_is_simple”: true,
“resulting_clause”: “`sbtest1`.`k`”
}
},
{
“refine_plan”: [
{
“table”: “`sbtest1`”,
“access_type”: “table_scan”
}
]
},
{
“reconsidering_access_paths_for_index_ordering”: {
“clause”: “ORDER BY”,
“index_order_summary”: {
“table”: “`sbtest1`”,
“index_provides_order”: true,
“order_direction”: “asc”,
“index”: “k”,
“plan_changed”: true,
“access_type”: “index_scan”
}
}
}
]
}
},
{
“join_execution”: {
“select#”: 1,
“steps”: [
]
}
}
]
}
|
###############################################################
主要分为三个部分 join_preparation:SQL的准备阶段,sql被格式化
对应函数 JOIN::prepare
例如 * 被扩展开来
join_optimization:SQL优化阶段
对应函数JOIN::optimize
join_execution:SQL执行阶段
对应函数:JOIN::exec
|
optimizer_trace有两个字段:
offset=-5,limit=5 将最近的5次trace打印出来
当offset小于0时,则会显示最新的-offset开始的limit个trace,也就是说,只显示新的trace
注意重设变量会导致trace被清空
mysql> show variables like ‘optimizer_trace_features';
原创文章,转载请注明: 转载自Simple Life
文章的脚注信息由WordPress的wp-posturl插件自动生成
[MySQL 5.6] 初识5.6的optimizer trace的更多相关文章
- 100% 展示 MySQL 语句执行的神器-Optimizer Trace
在上一篇文章<用Explain 命令分析 MySQL 的 SQL 执行>中,我们讲解了 Explain 命令的详细使用.但是它只能展示 SQL 语句的执行计划,无法展示为什么一些其他的执行 ...
- [转]细说MySQL Explain和Optimizer Trace简介
在开发过程中,对每个上线的SQL查询指纹(query figerprint)的质量都应有估算:而估算DB查询质量最直接的方法,就是分析其查询执行计划( Query Execution Plan ,即Q ...
- 【MySQL】使用 Optimizer Trace 观察SQL执行过程
Optimizer Trace 是MySQL 5.6.3里新加的一个特性,可以把MySQL Optimizer的决策和执行过程输出成文本.输出使用JSON格式,便于程序分析和人类阅读. 使用方法 1) ...
- MYSQL之数据库初识、安装详解、sql语句基本操作
目录 MYSQL之数据库初识及安装详解 1.什么是数据库? 1.什么是数据?(data) 2.什么是数据库?(databases,简称DB) 2.为什要用数据库? 3.什么是数据库管理系统?(Data ...
- Linux(5)- MariaDB、mysql主从复制、初识redis
一.MYSQL(mariadb) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可. 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL ...
- MySql系列之初识
数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运 ...
- MySQL数据库1初识MySQL
目录 Mysql 一.数据库是什么? 二.为啥使用数据库?(*****) 三.数据库的分类(*****) 1.关系型数据库 2.非关系型数据库 3.关系型与非关系型区别: 四.数据库MySQL的架构 ...
- MySQL使用入门--初识数据库
MySQL使用入门 数据库概述 数据库是存放数据的仓库.在应用的开发中总是离不开数据的查询.处理.存储,例如图书管理系统就需要操纵和存储大量的数据.没有数据库之前我们使用文件存储数据,但是文件存储有很 ...
- mysql 8.0 初识
1 下载并安装mysql 8.0官网下载比较慢,这里选择163的镜像http://mirrors.163.com/mysql/Downloads/MySQL-8.0/下载版本mysql-8.0.14- ...
随机推荐
- Jsop入门程序
package com.baidu; import java.io.IOException; import org.jsoup.Jsoup;import org.jsoup.nodes.Documen ...
- python类的继承
继承一个类 如果已经定义了Person类,需要定义新的Student和Teacher类时,可以直接从Person类继承: class Person(object): def __init__(self ...
- zImage和uImage的区别
http://blog.csdn.net/maojudong/article/details/4178118 zImage和uImage的区别 一.vmlinuz vmlinuz是可引导的.压缩的内核 ...
- zookeeper如何永久监听
转自:http://www.cnblogs.com/viviman/archive/2013/03/11/2954118.html 一 回调基础知识 znode 可以被监控,包括这个目录节点中存储的数 ...
- 【Xamarin挖墙脚系列:典型的业务程序的结构搭建】
原文:[Xamarin挖墙脚系列:典型的业务程序的结构搭建] 其实app就是客户端.在现代的程序中,都是典型的C/S结构.当然,一些离线的小游戏,功能性应用除外,如:电话本,通信录,短信查看等等 这个 ...
- 【HDOJ】2707 Steganography
简单字符串,读懂题,很容易AC. #include <stdio.h> #include <string.h> ], line[], des[]; int main() { i ...
- bzoj2125 3047
仙人掌上的最短路,这里有详细的题解http://pan.baidu.com/s/1wzCpC我觉得讲的很清楚,不懂的见代码注释吧 type node=record po,next,num:longin ...
- 如何在多线程中调用winform窗体控件
由于 Windows 窗体控件本质上不是线程安全的.因此如果有两个或多个线程适度操作某一控件的状态(set value),则可能会迫使该控件进入一种不一致的状态.还可能出现其他与线程相关的 bug,包 ...
- (转载)1248 - Every derived table must have its own alias
(转载)http://hi.baidu.com/lylegend13/item/a79f17eb51f5dff7e0a5d43b 1. select count(distinct CName) fro ...
- (转载)javascript转自世纪流年blog
(转载)http://www.cnblogs.com/tfe/articles/164205.html 础知识 2005年5月2日22:25星期一 [ Dhtml ] 有些时候你精通一门语言,但是会发 ...