Mysql删除数据特别慢及解决方法 | 您所在的位置:网站首页 › 卸载速度太慢 › Mysql删除数据特别慢及解决方法 |
Mysql删除数据特别慢及解决方法
1.前言
笔者的mysql表数据量大概是1亿条,然后直接删除某一批次数据的时候,删除操作极其缓慢,执行了很久之后都不能删除成功。我就终止这个操作了。 2.问题但是再次执行删除操作,但是是根据分区执行的时候,遇到的问题是:刚开始删除特别快,但是越删越慢。执行过程如下: mysql> delete from fact_sales_temp where process_id = 181017201954166180 and pay_feed_back_date_Key = 20180523; Query OK, 15640 rows affected (1.09 sec) mysql> delete from fact_sales_temp where process_id = 181017201954166180 and pay_feed_back_date_Key = 20180524; Query OK, 15534 rows affected (1.08 sec) mysql> delete from fact_sales_temp where process_id = 181017201954166180 and pay_feed_back_date_Key = 20180525; Query OK, 18189 rows affected (1.90 sec) mysql> delete from fact_sales_temp where process_id = 181017201954166180 and pay_feed_back_date_Key = 20180526; Query OK, 21520 rows affected (1.42 sec) mysql> delete from fact_sales_temp where process_id = 181017201954166180 and pay_feed_back_date_Key = 20180527; Query OK, 18468 rows affected (1.47 sec) mysql> delete from fact_sales_temp where process_id = 181017201954166180 and pay_feed_back_date_Key = 20180528; Query OK, 15444 rows affected (6.64 sec) mysql> delete from fact_sales_temp where process_id = 181017201954166180 and pay_feed_back_date_Key = 20180529; Query OK, 16111 rows affected (58.20 sec) mysql> delete from fact_sales_temp where process_id = 181017201954166180 and pay_feed_back_date_Key = 20180530; Query OK, 16402 rows affected (59.01 sec) mysql> delete from fact_sales_temp where process_id = 181017201954166180 and pay_feed_back_date_Key = 20180531; Query OK, 17129 rows affected (1 min 5.24 sec)其中的pay_feed_back_date_Key字段是fact_sales_temp这个表的分区字段。 3.原因为什么都是执行删除相同分区的操作,而且数据量的分布大致相同,但是得到的结果却是不一样的呢? 我的个人猜测如下: 虽然直接使用delete操作没有执行成功,但是数据库已经将部分满足条件的数据拿到了缓冲区里。导致删除这部分的数据的时候就执行的非常快。相反,后面的一些数据没有加入到缓冲区中,导致执行删除操作的时候就非常慢了。 4.解决办法 根据分区删除数据根据索引删除数据 |
CopyRight 2018-2019 实验室设备网 版权所有 |