MYSQL问题_请教

[复制链接]
查看11 | 回复2 | 2010-11-22 13:44:49 | 显示全部楼层 |阅读模式
1、版本:MYSQL5.0.67 类型:MYISAM
2、表tab_XXX
id
--integer 自增--主键
commitDate--datatime
--日期
...
3、问题描述:
有15W条数据平均分布在3个日期。
delete 其中一个日期的数据 物理表大小不变。
delete 全部
物理表大小不变。
truncate
物理表大小清空。
4、问题原因:
现在由于每天都会自动清除一个月前的数据。使用的都是delete
造成,物理表越来越大。已经4G左右。实际上数据量只在10W左右。
5、问题补充:
是因为delete有记录日志用来回滚操作什么的而让他变大?(我并不需要回滚)
是因为id自增的问题?(id一直在累加)
6、您要回答:
A:如何能清除一部分数据而有让物理表会同步缩小!
B:如可以解释5,请一起说明!

请各位大侠指点,小弟谢过!
--------------------------------------------------------
To ylongshao1987:
谢谢你的回答,你的这种方式之前我用过。但是不太适合。
数据多,现在转移的是我想要的。但在我要改表名的时候可能又有新的数据写入了。
容易造成了数据丢失。
---------------------------------------------------------
To yLongShao1987:
虽然没用上你说的方式,还是谢谢你的回答,加分ing。
To HotDigger
谢谢你的关注,最终我采用了修复表的方式。
不过数据量大速度比较慢,做好心理准备。

回复

使用道具 举报

千问 | 2010-11-22 13:44:49 | 显示全部楼层
请明白三种清楚表中数据的区别delete :只是删除数据,不会回收已经使用过的空间truncate:清空数据,回收空间到initial,但不删除表结构drop:清空数据,回收所有空间,删除表结构如果想清除一部分,而让表同步变小,我想的办法是新建一个表接收你不删除的,然后drop掉该表,再把新表重命名为原来那个表名字。如create table tt select id,name,value from ss where id>10;drop table ss;alter table s rename to ss;建表的时候需要Tablespace,Data有Data的Tablespace,Index有Index的T
回复

使用道具 举报

千问 | 2010-11-22 13:44:49 | 显示全部楼层
有同样的问题.关注中.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行