- 57
- 0
因为不能用Truncate(因为只是删除其中少部分数据),由于要求此表中的数据只保留当天的数据,所以每当在凌晨的某一时刻当其他程序处理完其中的数据后要删除该表中昨天以及以前的数据,使用delete删除表中的上百万条记录时,MySQL删除速度非常缓慢每一万条记录需要大概4分钟左右,这样删除所有无用数据要达到八个小时以上,这是难以接受的。。
网上搜到此文(http://blog.csdn.net/gao14401...[MSSQL、MySQL 数据库删除大批量千万级百万级数据的优化]
其中说到每次删除记录,数据库都要相应地更新索引,这是很慢的IO操作,而且后面索引碎片越来越多,就更慢。
我采取其提供的删除索引再删除数据再重建索引的方法,并没有发现删除速度有提升,而且时不时还会死锁
我的数据表结构如下:
CREATE TABLE `tbplaylog_copy` (
`Pid` int(11) NOT NULL AUTO_INCREMENT,
`Company_id` int(11) NOT NULL DEFAULT '0' COMMENT '??id',
`uid` int(11) NOT NULL COMMENT '"??ID"',
`Devno` varchar(32) CHARACTER SET utf8 NOT NULL COMMENT '????',
`Ad` int(11) NOT NULL COMMENT '????',
`MakeTime` int(11) NOT NULL COMMENT '????',
`LastTime` int(11) NOT NULL COMMENT '??????',
`StartTime` int(11) NOT NULL COMMENT '???????(0,24*60)',
`EndPoint` int(11) NOT NULL COMMENT '????????(0,24*60)',
`Status` int(11) NOT NULL COMMENT '???1-????0-???',
`Note` varchar(128) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '????',
`Valid` int(11) NOT NULL COMMENT '???',
`Type` int(11) NOT NULL COMMENT '0,???1????2???',
`PlayStartTime` int(11) NOT NULL DEFAULT '0',
`PlayEndTime` int(11) NOT NULL DEFAULT '0',
`DownloadTime` int(11) NOT NULL DEFAULT '0',
`DeleteTime` int(11) NOT NULL DEFAULT '0',
`TemplateId` int(11) NOT NULL DEFAULT '0',
`ad_adnum` int(11) NOT NULL COMMENT '???ad_id',
`length` int(11) NOT NULL,
`DownloadPercent` int(11) NOT NULL DEFAULT '0' COMMENT '???????',
`DownloadSuccess` int(11) NOT NULL DEFAULT '0' COMMENT '\r\n0-??\r\n1-??”',
`Playlist_id` int(11) NOT NULL,
`Delete` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1???',
`Reset` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1???',
`source` int(2) NOT NULL,
`distribute` int(2) NOT NULL DEFAULT '-2' COMMENT '0??-2??',
PRIMARY KEY (`Pid`),
KEY `starttime` (`StartTime`) USING BTREE,
KEY `Devno` (`Devno`),
KEY `playstarttime` (`PlayStartTime`),
KEY `index_playlist_id` (`Playlist_id`),
KEY `ad` (`Ad`),
KEY `company_id` (`Company_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8760113 DEFAULT CHARSET=latin1;
我的删除语句
DELETE * FROM tbplaylog WHERE tbplaylog.StartTime < ? OR tbplaylog.StartTime > ? ORDER BY Pid LIMIT 10000
数据量为1000w条
1
打赏
收藏
点击回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
