0

我的帖子

个人中心

设置

  发新话题
SQL Server里面,在清理空间时(truncate table/drop table),这部分数据的空间会被标记为可重写的,假设数据库总空间为300M,100M是已有数据大小,80M为可重写的空间,120M是纯空的新空间。那么SQL Sever在插入数据时,会先写入80M的可重写的空间,还是先写入120M纯空的新空间?



truncate table和drop table行为不太一样:

1. truncate table后,这些空间还是当前表所有,其他表用不了,除非经过shrink等物理操作后,空间被sql server回收了,其他表才可以用;

2. drop table后,这个表已经不存在了,空间归还给sql server了,所有表都可以使用,和其他纯新的空间是一样的



我的51CTO博客

SQL Server MCITP, MVP, MCT, DBA
引用:
原帖由 seusoftware 于 2018-7-19 17:24 发表
truncate table和drop table行为不太一样:

1. truncate table后,这些空间还是当前表所有,其他表用不了,除非经过shrink等物理操作后,空间被sql server回收了,其他表才可以用;

2. drop table后,这个表已经不存在了,空间归还给 ...
做了一些测试,tuncate table后,sqlserver插入数据,如果插入的是truncate的表,会优先使用这个table的原pages,如果插入其他表会优先使用新空间,新空间不足时使用truncate table的pages;drop table的话,sqlserver插入数据会优先使用新空间,在新空间不足时,会使用drop table归还的pages。测试次数比较少,还是不敢太确定



‹‹ 上一贴:联表查询的问题   |   下一贴:这样的数据如何转换 ››
  发新话题
快速回复主题
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 友情链接 |意见反馈 | 网站地图
Copyright©2005-2018 51CTO.COM
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系:bbs@51cto.com