今天领导安排一个任务,将一张日志表中7月份之前的日志都删除掉。
我查了一下数据量发现,现在总共有190多万的数据,7月份之前有150多万,这要删除大头啊。
开始,我使用delete语句,如下:
delete from log_table where create_time < '2013-07-01';
这时候问题就来了,我等了5分钟了,程序好像死在那里了,没反应。同时,操作系统还设置了超时限制,如果一定时间不操作,系统会自动断开连接(我是远程连接的服务器。
感觉时间有点长,就决定先删一小部分,6月份之前的,不多只有4万多条。但是在删除中报了一个错误。
经过一阵子谷歌(对数据库不熟悉),发现之前对数据操作没有完整执行,需要杀掉原来的执行线程。方法如下:
mysql>show processlist; +----+------+-----------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+-------+------------------+ | 7 | root | localhost | yy | End | 154 | | delete ..... | | 8 | root | localhost | NULL | Query | 0 | NULL | show processlist | +----+------+-----------+------+---------+------+-------+------------------+ 2 rows in set (0.00 sec)
发现id为7的线程是刚才执行的删除语句,已经不再执行了,但是仍然占着表,导致其他删除语句无法执行。
此时,需要杀掉线程。执行如下:
mysql> kill 7; mysql> show processlist; +----+------+-----------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+-------+------------------+ | 8 | root | localhost | NULL | Query | 0 | NULL | show processlist | +----+------+-----------+------+---------+------+-------+------------------+ 1 row in set (0.00 sec)
此时,可以对日志表进行删除操作了。
就在删除过程中发现用delete删除数据特别慢,就用了一个其他的方式:
1.先将日志表结构和7月份及以后数据备份下来,我使用sql文件
mysql> mysqldump -u root -p dataname --add-drop-table --where="create_time > '2013-07-01' tablename > /home/root/log.sql
2.删除整个日志表
mysql> drop table table_name;
3.将第一步备份数据恢复回去
mysql> source /home/root/log.sql
至此完成数据的删除任务,使用最后的办法只需要几分钟,如果使用delete语句不知道需要多长时间。
-------------------------------------------------留作备忘--------------------------------------------
文中杀掉线程方式引用:http://blog.sina.com.cn/s/blog_56fd58ab0100q61s.html
相关推荐
本文介绍了两个针对大量数据删除的SQL脚本。通过合理的设计和实现,这些脚本能够有效地处理重复数据,同时保持系统的稳定性和数据的安全性。在实际应用中,还需要根据具体情况调整脚本,并采取必要的安全措施。希望...
Oracle 表删除大量数据后查询变慢问题分析 在 Oracle 数据库中,如果删除了大量数据(千万级别),可能会出现查询变慢的问题。下面我们将分析这个问题的原因,并提供解决方案。 问题的原因主要有两个方面: 1. 表...
Oracle 表删除大量数据后,即使表中只有几行记录,但用select count(*) from table 来查询发觉都不会马上出来,原因是该表的空间大了
标题与描述均提到了“多线程同步大量数据转录”的概念,这涉及到在计算机科学领域中的并发编程技术,特别是如何有效地处理大规模数据集的转录工作。在现代软件开发中,多线程同步机制是优化性能、提高系统吞吐量的...
控件功能:具有datagrid的编辑功能和msflexgrid的显示功能,主要用于大量数据显示和编辑(包括添加,删除,修改功能) 代码编写:王新良 编写时间:2002-12-5 修改时间:2002-12-18
连续运行9天以后,删除一天的数据大概需要3个半小时(环境:128G, 32核,4T硬盘),而这是不能接受的。当然如果要整个表删除,毋庸置疑用 TRUNCATE TABLE就好。 最初的方案(因为未预料到删除会如此慢),代码如下...
这种技术特别适用于需要处理大量数据的企业级环境中,不仅减少了存储成本,还提升了数据传输速度。本文档将详细介绍如何在NetBackup 7.1及以上版本中配置重复数据删除功能。 #### 前期工作 - **环境描述**:本配置...
这表明我们将要探讨的是如何通过扩展库EntityFramework-Plus来增强EF的基础功能,特别是针对大量数据进行高效的批量修改和删除操作。EntityFramework-Plus提供了许多EF原生不支持或效率较低的功能,提高了开发效率和...
### 基于MD5算法的重复数据删除技术的研究与改进 #### 一、引言 随着信息技术的迅速发展,企业对于数据的需求日益增长。在信息化时代,数据被视为企业的核心资产,不仅对于日常运营至关重要,同时也是企业进行战略...
3. **性能考虑**:在大型数据库中执行删除操作时,应考虑其对系统性能的影响,尤其是在删除大量数据的情况下。 通过以上介绍,我们可以看到SQL中的`DELETE`语句是非常强大且灵活的工具,能够满足各种数据删除需求。...
- 用户交互:在大量数据删除时,为了防止程序无响应,可以考虑添加进度条或者提示信息,让用户知道操作正在进行。 - 数据备份:如果列表框中的数据很重要,可以考虑在执行删除操作前备份,以防误删。 在压缩包内的...
批量删除或同时删除多条数据是数据库管理中的常见需求,特别是在处理大量数据时。这个场景通常出现在数据清理、更新或优化的过程中。以下将详细介绍批量删除这一概念及其在实际应用中的相关知识点。 批量删除是指在...
### 数据库删除数据太慢:提高数据删除速度的思路 在数据库管理中,删除操作是一项基本但又极其重要的功能。然而,在处理大量数据时,删除操作可能会变得异常缓慢,这不仅影响了系统的性能,还可能导致用户体验下降...
- **综合评价**:根据本次测试结果,飞康FDS在重复数据删除能力方面表现出色,尤其适用于需要高效处理大量数据的场景。 - **用户建议**:建议用户在选择重复数据删除产品时,不仅要考虑产品性能指标,还应该综合考量...
在IT行业中,大存储数据检索删除工具是一种至关重要的软件应用,尤其对于那些处理大量数据的行业,如监控视频分析和医疗存储。这类工具通常具备高效的数据处理能力,以应对日益增长的数据规模。"大存储数据检索删除...
这是因为`DELETE`语句不仅会删除数据,还会记录这些操作的日志,这在大数据量的情况下会消耗大量的时间和资源。为了解决这个问题,文中提到了两种高效的方法。 第一种方法是利用`IMPORT`命令配合一个空文件来清空表...
本技术在云计算、备份、归档等领域广泛应用,尤其对于处理大量数据的场景,其效果尤为显著。本文将深入探讨使用C语言实现的重复数据删除技术,主要基于提供的1.4.1版本源代码。 1. **基本概念**:重复数据删除是...
在数据库管理中,有时我们需要对大量数据进行清理或更新,这时使用SQL语句删除批量数据就显得尤为重要。本文将深入探讨如何有效地利用SQL语句来完成这个任务。 首先,我们来了解一下SQL(Structured Query Language...