当前位置:网站首页>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

热力图:

边栏推荐
- Use baidu EasyDL implement factory workers smoking behavior recognition
- Shell入门终章
- Ask God to answer, how should this kind of sql be written?
- Software testing Interface automation testing Pytest framework encapsulates requests library Encapsulates unified request and multiple base path processing Interface association encapsulation Test cas
- typescript37-class的构造函数实例方法继承(extends)
- 2023年起,这些地区软考成绩低于45分也能拿证
- YGG Guild Development Plan Season 1 Summary
- 飞桨助力航天宏图PIE-Engine地球科学引擎构建
- LeetCode刷题日记:53、最大子数组和
- Redis Persistence - RDB and AOF
猜你喜欢

数据链路层的数据传输

Win Go开发包安装配置、GoLand配置

【服务器数据恢复】服务器Raid5阵列mdisk磁盘离线的数据恢复案例

【Brush the title】Family robbery
![[ORB_SLAM2] void Frame::ComputeImageBounds(const cv::Mat & imLeft)](/img/ed/ffced88c9d23c20ccf380494051381.jpg)
[ORB_SLAM2] void Frame::ComputeImageBounds(const cv::Mat & imLeft)

『网易实习』周记(一)

Pcie the inbound and outbound

记录一次数组转集合出现错误的坑点,尽量使用包装类型数组进行转换
![[LeetCode Daily Question] - 103. Zigzag Level Order Traversal of Binary Tree](/img/b9/35813ae2972375fa728e3c11fab5d3.png)
[LeetCode Daily Question] - 103. Zigzag Level Order Traversal of Binary Tree

Use baidu EasyDL implement factory workers smoking behavior recognition
随机推荐
YGG Guild Development Plan Season 1 Summary
CodeTon Round 2 D. Magical Array
LeetCode brushing diary: 33. Search and rotate sorted array
6-25 Vulnerability Exploitation - irc Backdoor Exploitation
力扣(LeetCode)213. 打家劫舍 II(2022.08.01)
【Brush the title】Family robbery
Software testing Interface automation testing Pytest framework encapsulates requests library Encapsulates unified request and multiple base path processing Interface association encapsulation Test cas
Pcie the inbound and outbound
hash table
Typescript31 - any type
【LeetCode Daily Question】——704. Binary Search
¶ Backtop back to the top is not effective
3 Month Tester Readme: 4 Important Skills That Impacted My Career
to-be-read list
PHP uses PHPRedis and Predis
Redis Subscription and Redis Stream
超大规模的产业实用语义分割数据集PSSL与预训练模型开源啦!
【服务器数据恢复】服务器Raid5阵列mdisk磁盘离线的数据恢复案例
Constructor instance method inheritance of typescript38-class (implement)
成都openGauss用户组招募啦!