当前位置:网站首页>2022-07-30 mysql8执行慢SQL-Q17分析
2022-07-30 mysql8执行慢SQL-Q17分析
2022-08-02 02:08:00 【帝尊悟世】
摘要:
以mysql8.0.28执行Q17慢SQL,作为分析对比
环境信息:
- 内存: 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

热力图:

边栏推荐
- From 2023 onwards, these regions will be able to obtain a certificate with a score lower than 45 in the soft examination.
- Fly propeller power space future PIE - Engine Engine build earth science
- 2023年起,这些地区软考成绩低于45分也能拿证
- nacos启动报错,已配置数据库,单机启动
- swift项目,sqlcipher3 -&gt; 4,无法打开旧版数据库有办法解决吗
- Chengdu openGauss user group recruit!
- 记录一次数组转集合出现错误的坑点,尽量使用包装类型数组进行转换
- 云和恩墨:让商业数据库时代的价值在openGauss生态上持续繁荣
- 6-24 exploit-vnc password cracking
- HSDC is related to Independent Spanning Tree
猜你喜欢

Record the pits where an error occurs when an array is converted to a collection, and try to use an array of packaging types for conversion

电子制造仓储条码管理系统解决方案

typeof in typescript32-ts

3 Month Tester Readme: 4 Important Skills That Impacted My Career
![[ORB_SLAM2] void Frame::ComputeImageBounds(const cv::Mat & imLeft)](/img/ed/ffced88c9d23c20ccf380494051381.jpg)
[ORB_SLAM2] void Frame::ComputeImageBounds(const cv::Mat & imLeft)

Golang分布式应用之定时任务

2023年起,这些地区软考成绩低于45分也能拿证

Check if IP or port is blocked

『网易实习』周记(三)

Some insights from 5 years of automated testing experience: UI automation must overcome these 10 pits
随机推荐
From 2023 onwards, these regions will be able to obtain a certificate with a score lower than 45 in the soft examination.
使用百度EasyDL实现厂区工人抽烟行为识别
to-be-read list
力扣 1161. 最大层内元素和
哈希冲突和一致性哈希
Garbage Collector CMS and G1
LeetCode brushing diary: 33. Search and rotate sorted array
Hash collisions and consistent hashing
Multi-Party Threshold Private Set Intersection with Sublinear Communication-2021: Interpretation
Day115.尚医通:后台用户管理:用户锁定解锁、详情、认证列表审批
YGG Guild Development Plan Season 1 Summary
『网易实习』周记(二)
飞桨助力航天宏图PIE-Engine地球科学引擎构建
成都openGauss用户组招募啦!
Speed up your programs with bitwise operations
When paying attention to the "Internet +" model, you usually only focus on the "Internet +" model itself
LeetCode brush diary: LCP 03. Machine's adventure
LeetCode刷题日记: 33、搜索旋转排序数组
LeetCode brushing diary: 53, the largest sub-array and
LeetCode刷题日记:34、 在排序数组中查找元素的第一个和最后一个位置