Chinaunix首页 | 论坛 | 博客
  • 博客访问: 170616
  • 博文数量: 20
  • 博客积分: 542
  • 博客等级: 中士
  • 技术积分: 240
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-23 09:44
文章分类

全部博文(20)

文章存档

2012年(3)

2011年(17)

分类: LINUX

2011-08-26 15:32:46

今儿看到有人问一个问题,说mysql 执行delete删除语句之后,.MYD文件的大小没有发生变化---  数据库的存储引擎是 MyISAM,数据存放格式为静态(FIXED)固定长度,很纠结的一个问题,有意思,翻了翻书,未果,请教了下做DBA的朋友,给出以下结果

DELETE只是将数据标识为删除,并没有整理数据文件,当插入新数据后,会再次使用这些被置为删除标识的记录空间。(当DELETE后面跟条件的时候 是这种情况,不跟条件直接delete的时候,则不会有这种情况)如
delete from table_name和delete from table_name where 不带条件的语句清空了表,myd文件大小为0;但是带条件的删除了整个表以后,myd和文件的大小不变。


解决办法:
1.扩充单表容量
  先查看表的状态:show table status like 'table_name',然后修改表的容量:alter table_name   max_rows=2000000000000,avg_low_length=500000。

2.释放表空间
  执行   SHOW   TABLE   STATUS    
  返回的记录中有一个   Date_free   字段.它显示的是   MyISAM   的表浪费空间.    
   
  使用   OPTIMIZE   TABLE   指令可以优化它.



贴出来 分享之
阅读(2728) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~