|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性server|sqlserver|数据|前提1.SQLSERVER数据库改bit范例为notBoolean(即,true改成false;false改成true)
例:update表setbit字段=bit字段-1
比来有个伴侣问我,他说他在SQLSERVER删除几百万到几万万数据是显的很慢,帮他剖析了一下,提了一些以下定见,也许对良多人有效,再者也好长没写过BLOG了,一同切磋一下
假如你的硬盘空间小,而且不想设置数据库的日记为最小(由于但愿其他一般的日记但愿仍旧纪录),并且对速率请求对照高,并扫除一切的数据倡议你用turncatetable1,由于truncate是DDL操纵,不发生rollback,不写日记速率快一些,然后假如有自增的话,恢复到1入手下手,而delete会发生rollback,假如删除年夜数据量的表速率会很慢,同时会占用良多的rollbacksegments,同时还要纪录下G级其余日记;固然假如有前提删除好比wheretime<2006-3-10怎样办,能不克不及不纪录日记用delete,回覆是不可的,SQLServer引擎在计划上就会对Delete操纵举行日记纪录。至今没有举措强迫制订某一些语句不纪录到日记中,假如在实行DeleteTable1whereTime<2006-3-10因为触及的纪录对照多,以是日记纪录也响应很年夜(3-4G),假如可行,我倡议用以下体例:
选出您所必要保存的纪录到新的表。假如您利用FullRecoveryMode
依据SelectINTO的纪录数,日记大概会对照年夜
Select*intoTable2FromTable1WhereTime>=2006-03-10
然后间接TruncateTable1。不管何种恢复形式都不会举行日记纪录
TruncatetableTable1
最初对Table2举行更名为Table1
ECsp_renameTable2,Table1修复过程包含最多4个阶段,在下面描述。在你开始前,你应该cd到数据库目录和检查表文件的权限,确保他们可被运行mysqld的Unix用户读取(和你,因为你需要存取你正在检查的文件)。如果它拒绝你修改文件,他们也必须是可被你写入的。 |
|