[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- ...
随机推荐
- hdu 3072
强连通分量——tarjin 算法 这道题和前面那道hdu 2767唯一不同就是,2767需要找出最小数量的边使图成为连通分量,而这个题需要一点点贪心的思想在里面,它需要求出代价最小的边使图成为连通分量 ...
- 为网站添加一个图标icon
<link rel="icon" href="/favicon.ico" type="image/x-icon"/> <l ...
- leetcode面试准备: Substring with Concatenation of All Words
leetcode面试准备: Substring with Concatenation of All Words 1 题目 You are given a string, s, and a list o ...
- Leetcode解题思想总结篇:双指针
Leetcode解题思想总结篇:双指针 1概念 双指针:快慢指针. 快指针在每一步走的步长要比慢指针一步走的步长要多.快指针通常的步速是慢指针的2倍. 在循环中的指针移动通常为: faster = f ...
- hadoop伪分布安装
解压 将安装包hadoop-2.2.0.tar.gz存放到/home/haozhulin/install/目录下,并解压 #将hadoop解压到/home/haozhulin/install路径下,定 ...
- Oracle core02_数据块
数据更改 oracle core完成了oracle的核心功能,recovery,读一致性等. 深入的了解oracle的机制,就从一个最简单的更新开始.对于oracle来说,最大的一个特性就是写了两次数 ...
- XSS跨站脚本攻击在Java开发中防范的方法
1. 防堵跨站漏洞,阻止攻击者利用在被攻击网站上发布跨站攻击语句不可以信任用户提交的任何内容,首先代码里对用户输入的地方和变量都需要仔细检查长度和对”<”,”>”,”;”,”’”等字符做过 ...
- selenium webdriver 环境搭建--java
selenium java环境的安装可以分为三个部分:jdk.eclipse和selenium. jdk jdk(java development kit)是sun公司针对java开发人员的产品,是整 ...
- 有7g和2g的砝码各一个,怎样称可以3次把140g东西分为50g和90g???????
第一次:等分 50和90为 70 70 2. 7g 和2g ,取出一个70中的9g , 61 70 3.利用 9g和2g砝码,取出61中的11克,前面的9 和 11 都放进70
- [SAM4N学习笔记]LED点灯程序
一.准备工作: 将上一节搭建的工程模板复制一份,命名为"1.blink",这作为我们开发的第一个程序. 二.程序编写: 板子上只有一个可控制的LED,就是LED ...