用delete 删除过的记录还能恢复吗?

jzlzk 2003-07-25 05:29:43
用delete 删除过的记录还能恢复吗?
...全文
505 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuixin13 2003-07-30
  • 打赏
  • 举报
回复
呵呵,也不是说文件会越来越大,

如果你删除一条记录,
它的空间的确是没有被释放,
但是当你再重新插入一条记录时,
先前删除记录的空间就会被利用了,

你用
SHOW TABLE STATUS
语句就会发现有一个 Data_free 列,
它就是你删除记录后的空闲空间了,


另一个查看 MySQL 删除操作是如何执行的办法是
1:新建一个表
2:按 ID 顺序插入几个记录
3:SELECT 查看结果
+-------+---------
| ID |
+-------+---------
| 1 |
| 2 |
| 3 |
| 4 |
+-----------------
4: DELETE ... WHERE ID = 2
5: INSERT INTO ... SET ID = 5
6: SELECT 查看结果
+-------+---------
| ID |
+-------+---------
| 1 |
| 5 |
| 3 |
| 4 |
+-----------------

呵呵,新插入的 ID = 5 使用了先前删除记录的位置

哪可能有朋友要问这样不是不舒服嘛,
可以让它恢复成原有的排序吗??

可以! 对表进行优化一下就可以了!!!!
lxf_1976 2003-07-30
  • 打赏
  • 举报
回复
是的,如果不进行其它方法干预,文件确实会越来越大!:-)

http://expert.csdn.net/Expert/topic/1864/1864396.xml?temp=.4476282
jxbicestare 2003-07-30
  • 打赏
  • 举报
回复
"……MySQL 在对记录进行删除时,
只是对其一个标志位设为 删除 状态.……"

斑竹,按照这个逻辑那不是MySQL表文件会越来越大?
删除之后数据还在,那我要真正删除怎么办?
shuixin13 2003-07-30
  • 打赏
  • 举报
回复
呵呵,

MySQL 在对记录进行删除时,
只是对其一个标志位设为 删除 状态,

所以说在理论上是可以恢复的,
但是由于 MySQL 中并未给出相应的解决方案,
也没有给出数据文件的格式,

:)

那怎么办呢,
我们只能通过一个十六进制编辑器将其表的数据文件打开,
然后人工查找到这条记录,
将记录内容记下来,
然后写插入语句吧!!


^_*


可别打我,
就此办法了,

:(
lxf_1976 2003-07-30
  • 打赏
  • 举报
回复
呵呵,学习!
eminena 2003-07-30
  • 打赏
  • 举报
回复
无法恢复!
我曾经找过 微软!
jxbicestare 2003-07-30
  • 打赏
  • 举报
回复
明白
kkk3k3k 2003-07-29
  • 打赏
  • 举报
回复
mycon 为连接
表必须是idb 不能是myisam ,版本 4。0以上
myquery(mycon ,"startangt")//
myquery(mycon ,"delect * dp XX weher XX")
myquery (mycon "rollback")//
lxf_1976 2003-07-25
  • 打赏
  • 举报
回复
如果查询后确定记录已经删除,基本上没有办法恢复!
jzlzk 2003-07-25
  • 打赏
  • 举报
回复
具体怎么做呢,多谢。
Fred_Mark 2003-07-25
  • 打赏
  • 举报
回复
如果没有提交,可以rollback哦

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧