mysql在删除数据时是不是生成了一些空闲的空间?既删除了大量数据时,数据文件大小并没有减小,当这些空间存在时,再继续插入数据,insert是先利用这部分空间,还是从不利用这部分空间??

解决方案 »

  1.   

    为什么不做个试验来验证一下自己的猜想?这个试验应该很简单啊。
    create table test (.......) engine=myisam;然后 insert 10000 记录,到操作系统中去看一下这个 test.myd 的文件大小是多少,记录下来
    然后再 delete from test where id<5000 删除一半数据。 记录下 test.myd的文件大小。
    再 insert 1000 条记录看看  test.myd的文件大小。做完这些,结论你自己就应该有了。
      

  2.   

    贴出我的测试结果功400万记录,删除200万后,在将这200万导回去
    删除前:-rw-rw---- 1 mysql mysql      9546 02-11 16:10 topicmsg5.frm
    -rw-rw---- 1 mysql mysql 528286744 02-11 16:59 topicmsg5.MYD
    -rw-rw---- 1 mysql mysql 448553984 02-11 16:37 topicmsg5.MYI
    删除后:
    -rw-rw---- 1 mysql mysql      9546 02-11 16:10 topicmsg5.frm
    -rw-rw---- 1 mysql mysql 528286744 02-11 16:59 topicmsg5.MYD
    -rw-rw---- 1 mysql mysql 448553984 02-11 16:37 topicmsg5.MYI导入后:
    -rw-rw---- 1 mysql mysql      9546 02-11 16:10 topicmsg5.frm
    -rw-rw---- 1 mysql mysql 572349420 02-11 17:40 topicmsg5.MYD
    -rw-rw---- 1 mysql mysql 567853056 02-11 17:41 topicmsg5.MYI我想知道结论是什么呢 ?好像是用了空闲的部分 ,但是并没有完全用.
      

  3.   

    结论是MYISAM 会利用已删除记录的空间。