关于数据库 delete的疑惑

不二星空 2011-08-23 10:57:04
数据库中调用delete实际上不是真正的删除数据,只是相当于把某个标志位置位,是不是如此?
如果要实际删除数据应该怎么操作,有没有相关的资料分享下,先谢谢各位啦
...全文
199 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
不二星空 2011-09-05
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 ycf8788 的回复:]

谢谢关注。。。求解答
[/Quote]
++
不二星空 2011-09-02
  • 打赏
  • 举报
回复
谢谢关注。。。求解答
不二星空 2011-09-01
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 lcy_888 的回复:]

大部份数据库都有逻辑删除与物理删除的相应功能,要仔细看其HELP了。
[/Quote]

我也觉得。。。目前还在寻找中。。
不二星空 2011-09-01
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 ok1234567 的回复:]

对于MS Sql Server,通常采用如下几个命令整理数据库

DUMP TRANSACTION 数据库名 WITH NO_LOG

BACKUP LOG 数据库名 WITH NO_LOG

DBCC SHRINKDATABASE(数据库名)

对于数据数据优化,通常采用对表进行 重索引

最厉害的优化,就是进行数据对象的整体复制(DTS),原理如拷贝一个大文件
[/Quote]

有点深奥。。
jeson_daniel 2011-09-01
  • 打赏
  • 举报
回复
我用的Access数据库,执行SQL语句"delete from ... where ID = ..."后,数据项真的被删除了。
没有遇到过楼主的状况,估计是我涉及到数据库太浅。
关注一下。。
chunyou128 2011-09-01
  • 打赏
  • 举报
回复
reorg 没用过,帮顶
lcy_888 2011-08-30
  • 打赏
  • 举报
回复
大部份数据库都有逻辑删除与物理删除的相应功能,要仔细看其HELP了。
ok1234567 2011-08-30
  • 打赏
  • 举报
回复
对于MS Sql Server,通常采用如下几个命令整理数据库

DUMP TRANSACTION 数据库名 WITH NO_LOG

BACKUP LOG 数据库名 WITH NO_LOG

DBCC SHRINKDATABASE(数据库名)

对于数据数据优化,通常采用对表进行 重索引

最厉害的优化,就是进行数据对象的整体复制(DTS),原理如拷贝一个大文件
不二星空 2011-08-29
  • 打赏
  • 举报
回复
网上没找到reorg的相关材料。。。求指教
贪食蛇男 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 ycf8788 的回复:]

引用 16 楼 hiroyukki 的回复:

全看数据库实现,delete 就好比你删除一个文件,只需要把文件的 i 结点删除掉,你就无法在文件系统层次的索引到文件了。但真实的文件的数据可能还存在于硬盘上。
久而久之,就会产生空间碎片。

数据库也是一个道理。想压缩数据,光删除数据往往不行,如 DB2 ,有个概念叫“高水位线”,删除数据甚至删除大量数据,都不能使高水位线下降,必须 r……
[/Quote]
我只知道DB2的,直接有SQL语句支持 reorg,
oracle 似乎需要 move 表后 rebuild index,
其他数据库就不太清楚了,不知道提供没提供碎片整理的语句
kkk0438 2011-08-25
  • 打赏
  • 举报
回复
代码该如何实现??求解。。。。
不二星空 2011-08-25
  • 打赏
  • 举报
回复
求解。。。。
不二星空 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 ndy_w 的回复:]

lz是想节省空间?还是想不留任何痕迹?
[/Quote]
节省空间~
不二星空 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 hiroyukki 的回复:]

全看数据库实现,delete 就好比你删除一个文件,只需要把文件的 i 结点删除掉,你就无法在文件系统层次的索引到文件了。但真实的文件的数据可能还存在于硬盘上。
久而久之,就会产生空间碎片。

数据库也是一个道理。想压缩数据,光删除数据往往不行,如 DB2 ,有个概念叫“高水位线”,删除数据甚至删除大量数据,都不能使高水位线下降,必须 reorg, reorg 有点类似于WINDOWS的碎……
[/Quote]
你的回答很有用,谢谢,不过reorg的操作还不了解,用代码应该如何实现,有没有这方面的资料
不二星空 2011-08-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 ok1234567 的回复:]

SQL 规范的 DELETE 会删除记录
但是许多小型桌面数据库,不会删除,而是标记<逻辑删除>,当执行pack之类的命令时,物理整理数据库

对于这样的处理,不用纠结,数据库设计者有一腚的理由这么做:)
小型数据库通常用简单的文件记录数据,假如每一个删除都导致文件数据大面积移动,代价太高

sql server、sql lite 、mysql这些数据库要怎么处理?
你的delet……
[/Quote]
学习了,我相信这种做法的有很多好处,只是我想用代码实现一段时间后将数据库的逻辑删除变为实际的删除
贪食蛇男 2011-08-24
  • 打赏
  • 举报
回复
想实际删除的话,自然, delete 完数据后做 reorg,这样就会有别的数据去占据掉原来数据的位置。原来的数据自然也就被彻底干掉了。
贪食蛇男 2011-08-24
  • 打赏
  • 举报
回复
全看数据库实现,delete 就好比你删除一个文件,只需要把文件的 i 结点删除掉,你就无法在文件系统层次的索引到文件了。但真实的文件的数据可能还存在于硬盘上。
久而久之,就会产生空间碎片。

数据库也是一个道理。想压缩数据,光删除数据往往不行,如 DB2 ,有个概念叫“高水位线”,删除数据甚至删除大量数据,都不能使高水位线下降,必须 reorg, reorg 有点类似于WINDOWS的碎片整理程序。
yyyyy_3 2011-08-24
  • 打赏
  • 举报
回复
用户不用担心数据库中是个什么样子, 只要对用户来说结果正确就可以.
ndy_w 2011-08-24
  • 打赏
  • 举报
回复
lz是想节省空间?还是想不留任何痕迹?
ok1234567 2011-08-24
  • 打赏
  • 举报
回复
SQL 规范的 DELETE 会删除记录
但是许多小型桌面数据库,不会删除,而是标记<逻辑删除>,当执行pack之类的命令时,物理整理数据库

对于这样的处理,不用纠结,数据库设计者有一腚的理由这么做:)
小型数据库通常用简单的文件记录数据,假如每一个删除都导致文件数据大面积移动,代价太高

sql server、sql lite 、mysql这些数据库要怎么处理?
你的delete 会真的被执行,要找回删除的数据,除非日志未被截断,或者数据页未被新数据覆盖,恢复数据很麻烦
加载更多回复(12)

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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