|
发表于 2009-7-29 23:08:48
|
显示全部楼层
回答数据怎么初始化。0 I) E; {9 {' F" J
7 }/ Q6 }: ^9 {2 ^7 u0 Z" a9 }0 [& B若要删除表中的所有行,则 TRUNCATE TABLE 语句是一种快速、无日志记录的方法。TRUNCATE TABLE 与不含有 WHERE 子句的 DELETE 语句在功能上相同。但是,TRUNCATE TABLE 速度更快,并且使用更少的系统资源和事务日志资源。 & t" j$ m8 S; e# p/ R4 B! K% N
9 Q/ K& u* R+ k8 u% J与 DELETE 语句相比,TRUNCATE TABLE 具有以下优点:
5 i! w5 k2 a5 n+ @* ?" {: ]' i
8 Z; ]; N" Q4 `- F, A+ M所用的事务日志空间较少。
" _# t* L. a$ e1 S% D ( x0 Y, g8 ?! ?, j3 [& E
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放用于存储表数据的数据页来删除数据,并且在事务日志中只记录页释放。
4 b( h% \ S, @5 d, r3 s5 ~ - V t; p5 L ?% t2 b5 g
2 ?* _: g+ @. y. a; x( G6 x使用的锁通常较少。
# G `, z" l' a/ D8 K! U3 ^4 j % e( C5 U# Y" ~! o( b' _) Y
当使用行锁执行 DELETE 语句时,将锁定表中各行以便删除。TRUNCATE TABLE 始终锁定表和页,而不是锁定各行。
- U; p5 p3 b* M ! g0 c: M6 H8 V! N' x# U
" I0 P4 F& e5 E" f1 a4 `如无例外,在表中不会留有任何页。 8 t5 B0 g# r6 u( K \" {
4 t2 _7 d) Y2 u# O8 u
执行 DELETE 语句后,表仍会包含空页。例如,必须至少使用一个排他 (LCK_M_X) 表锁,才能释放堆中的空表。如果执行删除操作时没有使用表锁,表(堆)中将包含许多空页。对于索引,删除操作会留下一些空页,尽管这些页会通过后台清除进程迅速释放。 c Y2 I+ x0 U4 G# e$ \* t0 m
4 j# T$ n, G% Q9 F% S
. |$ W2 g! y, c$ V与 DELETE 语句相同,使用 TRUNCATE TABLE 清空
- B1 J- N- V! A, Y
( ]) b% i" k! U9 F+ {5 H4 F& K的表的定义与其索引和其他关联对象一起保留在数据库中。
6 D3 k) l: B, |( `" X) | / B$ A/ ~7 j8 ^/ c4 Y+ l
资料仅供参考。 |
|