当前位置:网站首页>2022-07-30 mysql8 executes slow SQL-Q17 analysis
2022-07-30 mysql8 executes slow SQL-Q17 analysis
2022-08-02 02:08:00 【Emperor Zun Wu Shi】
摘要:
以mysql8.0.28执行Q17慢SQL,as an analytical comparison
环境信息:
- 内存: 8GB
- cpu: 8核心,3.2GHz
- mysql: 8.0.28
执行分析:
DDL:
mysql> show create table lineitem\G
*************************** 1. row ***************************
Table: lineitem
Create Table: CREATE TABLE `lineitem` (
`l_orderkey` int NOT NULL,
`l_partkey` int NOT NULL,
`l_suppkey` int NOT NULL,
`l_linenumber` int NOT NULL,
`l_quantity` decimal(15,2) NOT NULL,
`l_extendedprice` decimal(15,2) NOT NULL,
`l_discount` decimal(15,2) NOT NULL,
`l_tax` decimal(15,2) NOT NULL,
`l_returnflag` char(1) NOT NULL,
`l_linestatus` char(1) NOT NULL,
`l_shipdate` date NOT NULL,
`l_commitdate` date NOT NULL,
`l_receiptdate` date NOT NULL,
`l_shipinstruct` char(25) NOT NULL,
`l_shipmode` char(10) NOT NULL,
`l_comment` varchar(44) NOT NULL,
PRIMARY KEY (`l_orderkey`,`l_linenumber`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql> show create table part\G
*************************** 1. row ***************************
Table: part
Create Table: CREATE TABLE `part` (
`p_partkey` int NOT NULL,
`p_name` varchar(55) NOT NULL,
`p_mfgr` char(25) NOT NULL,
`p_brand` char(10) NOT NULL,
`p_type` varchar(25) NOT NULL,
`p_size` int NOT NULL,
`p_container` char(10) NOT NULL,
`p_retailprice` decimal(15,2) NOT NULL,
`p_comment` varchar(23) NOT NULL,
PRIMARY KEY (`p_partkey`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.02 sec)
SQL:
select
sum(l_extendedprice) / 7.0 as avg_yearly
from
lineitem,
part
where
p_partkey = l_partkey
and p_brand = 'Brand#23'
and p_container = 'MED BOX'
and l_quantity < (
select
0.2 * avg(l_quantity)
from
lineitem
where
l_partkey = p_partkey
);
explain分析:
mysql> explain select
from
lineitem
where
l_partkey = p_partkey
)\G -> sum(l_extendedprice) / 7.0 as avg_yearly
-> from
-> lineitem,
-> part
-> where
-> p_partkey = l_partkey
-> and p_brand = 'Brand#23'
-> and p_container = 'MED BOX'
-> and l_quantity < (
-> select
-> 0.2 * avg(l_quantity)
-> from
-> lineitem
-> where
-> l_partkey = p_partkey
-> )\G
*************************** 1. row ***************************
id: 1
select_type: PRIMARY
table: lineitem
partitions: NULL
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 31751480
filtered: 100.00
Extra: NULL
*************************** 2. row ***************************
id: 1
select_type: PRIMARY
table: part
partitions: NULL
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: tpch.lineitem.l_partkey
rows: 1
filtered: 5.00
Extra: Using where
*************************** 3. row ***************************
id: 2
select_type: DEPENDENT SUBQUERY
table: lineitem
partitions: NULL
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 31751480
filtered: 10.00
Extra: Using where
3 rows in set, 2 warnings (0.01 sec)
id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | |
1 | PRIMARY | lineitem | ALL | 31751480 | 100 | |||||||
1 | PRIMARY | part | eq_ref | PRIMARY | PRIMARY | 4 | tpch.lineitem.l_partkey | 1 | 5 | Using where | ||
2 | DEPENDENT SUBQUERY | lineitem | ALL | 31751480 | 10 | Using where |
耗时分析:
性能分析:
iotop:
top:
[[email protected] ~]# ps -ef | grep mysqld
mysql 19895 1 39 20:21 ? 00:18:16 /usr/libexec/mysqld --basedir=/usr
root 20055 1793 0 21:07 pts/1 00:00:00 grep --color=auto mysqld
[[email protected] ~]#
[[email protected] ~]# top -Hp 19895
热力图:
边栏推荐
- Win Go开发包安装配置、GoLand配置
- LeetCode Review Diary: 153. Find the Minimum Value in a Rotated Sort Array
- [ORB_SLAM2] void Frame::ComputeImageBounds(const cv::Mat & imLeft)
- 2023年起,这些地区软考成绩低于45分也能拿证
- Rust P2P Network Application Combat-1 P2P Network Core Concepts and Ping Program
- LeetCode Brushing Diary: 74. Searching 2D Matrix
- 6-24 exploit-vnc password cracking
- The Paddle Open Source Community Quarterly Report is here, everything you want to know is here
- Hash collisions and consistent hashing
- 密码学的基础:X.690和对应的BER CER DER编码
猜你喜欢
nacos启动报错,已配置数据库,单机启动
MySQL8 下载、启动、配置、验证
6-25 Vulnerability Exploitation - irc Backdoor Exploitation
typescript33-typescript高级概述
【LeetCode每日一题】——704.二分查找
软件测试 接口自动化测试 pytest框架封装 requests库 封装统一请求和多个基础路径处理 接口关联封装 测试用例写在yaml文件中 数据热加载(动态参数) 断言
"NetEase Internship" Weekly Diary (2)
MySQL optimization strategy
Software testing Interface automation testing Pytest framework encapsulates requests library Encapsulates unified request and multiple base path processing Interface association encapsulation Test cas
【轮式里程计】
随机推荐
Understand the big model in seconds | 3 steps to get AI to write a summary
Handwritten Blog Platform ~ Day Two
LeetCode刷题日记: 33、搜索旋转排序数组
LeetCode brushing diary: 53, the largest sub-array and
typescript38-class的构造函数实例方法继承(implement)
bool框架::PosInGrid (const简历:关键点kp, int &posX, int诗句)
力扣 1161. 最大层内元素和
The underlying data structure of Redis
AWR分析报告问题求助:SQL如何可以从哪几个方面优化?
Scheduled tasks for distributed applications in Golang
typescript29-枚举类型的特点和原理
Redis 订阅与 Redis Stream
"NetEase Internship" Weekly Diary (2)
Constructor instance method of typescript36-class
项目后台技术Express
Day116.尚医通:预约挂号详情 ※
PHP uses PHPRedis and Predis
制造企业数字化转型现状分析
typescript30 - any type
【ORB_SLAM2】void Frame::AssignFeaturesToGrid()