mysql sending data状态时间花费太大

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介:

select * from searchzh where modified_date > '2009-09-02 14:45:22';

一条mysql查询语句的性能:sending data 耗时10分钟。。。。

+--------------------------------+-----------+ 
| Status | Duration | 
+--------------------------------+-----------+ 
| (initialization) | 0.000006 | 
| checking query cache for query | 0.000025 | 
| checking permissions | 0.000008 | 
| Opening tables | 0.000148 | 
| System lock | 0.000008 | 
| Table lock | 0.000008 | 
| init | 0.000007 | 
| checking permissions | 0.000045 | 
| optimizing | 0.000016 | 
| statistics | 0.00027 | 
| preparing | 0.000034 | 
| executing | 0.000005 | 
| Sending data | 614.25387 | 
| end | 0.000046 | 
| query end | 0.000012 | 
| freeing items | 0.000017 | 
| closing tables | 0.000008 | 
| logging slow query | 0.000054 | 
+--------------------------------+-----------+ 
18 rows in set (0.01 sec)

产生的原因:

searchzh视图相关的表,update,insert,delete操作频繁。在mysql的表锁定机制中,select语句的优先级比update低。所以此select语句一直在锁队列中等待,后来的update操作会插队到select语句前面。导致| Sending data | 614.25387 |

解决方法有多种,最简单的

select HIGH_PRIORITY * from searchzh where modified_date > '2009-09-02 14:45:22';

指定该select语句具有高优先级。

=======================================

mysql15:21:30> SHOW STATUS LIKE 'Table%'; 
+-----------------------+-----------+ 
| Variable_name | Value | 
+-----------------------+-----------+ 
| Table_locks_immediate | 120977304 | 
| Table_locks_waited | 577 | 
+-----------------------+-----------+

表锁争用现象比较严重。

在频繁更新和查询的情景下,使用innodb也许更好。

转载


本文转自    geekwolf   51CTO博客,原文链接:http://blog.51cto.com/linuxgeek/995243

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 关系型数据库 MySQL
使用阿里云的数据传输服务DTS(Data Transmission Service)进行MySQL 5.6到MySQL 8.0的迁移
使用阿里云的数据传输服务DTS(Data Transmission Service)进行MySQL 5.6到MySQL 8.0的迁移
197 1
|
SQL 关系型数据库 MySQL
解决:MySQL找不到data文件的位置
解决:MySQL找不到data文件的位置
332 0
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表10、数据导入和导出——1、数据导入(LOAD DATA, mysqldump)——2、数据导出(SELECT ... INTO OUTFILE, mysqldump)
MySQL技能完整学习列表10、数据导入和导出——1、数据导入(LOAD DATA, mysqldump)——2、数据导出(SELECT ... INTO OUTFILE, mysqldump)
345 0
|
SQL 关系型数据库 MySQL
MySQL Online DDL(Data Definition Language)
MySQL Online DDL(Data Definition Language)
313 1
|
关系型数据库 MySQL 数据库
使用阿里云的数据传输服务DTS(Data Transmission Service)进行MySQL 5.6到MySQL 8.0的迁移
【2月更文挑战第29天】使用阿里云的数据传输服务DTS(Data Transmission Service)进行MySQL 5.6到MySQL 8.0的迁移
588 2
|
Java 数据库
SpringBoot出现com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect datetime va
SpringBoot出现com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect datetime va
1050 0
|
关系型数据库 MySQL 数据库
MySQL技能完整学习列表——1、数据库基础概念——2、数据库管理系统(DBMS)——3、数据模型(Data Model)
MySQL技能完整学习列表——1、数据库基础概念——2、数据库管理系统(DBMS)——3、数据模型(Data Model)
219 0
|
消息中间件 NoSQL 关系型数据库
MySQL CDC(Change Data Capture)
MySQL CDC(Change Data Capture)是一种用于捕获数据库变更的技术,可以将数据库中的增、删、改操作转换成事件,然后将这些事件发送到其他系统进行处理。以下是在 MySQL 中实现 CDC 增加数据的方法和数据大小限制的解释:
1569 0
|
关系型数据库 MySQL
java202303java学习笔记第四十天mysql安装initialize specified but the data directory has files in it. Aborting
java202303java学习笔记第四十天mysql安装initialize specified but the data directory has files in it. Aborting
498 0
|
存储 关系型数据库 MySQL
MySQL 8 OCP备考--Understand how InnoDB stores data and logs
这个是mysql官方文档上的一个InnoDB的架构图
259 0