sql server迁移了数据为什么显示数据库大小没变化

本来做数据迁移就是为了给数据库瘦身, 顺便减轻它的查询压力,结果发现迁移了几千万条表数据后,查了跟迁移之前对比数据库容量显示没有变化, 甚至还大了一点点MB

源表数据删除了吗

单纯的迁移表数据不会对数据表大小产生变化,完成迁移后重建索引,即可完成表瘦身
之后再进行数据库收缩,数据库大小会缩小到接近你的期望值

SQL Server数据库大小没有显著变化的原因可能有几个:

  1. 数据库页面没有释放。SQL Server数据库的数据是以页(Page)为单位存储的,每页默认8KB。当表数据删除或更新时,原来占用的页面并不会立即释放,需要等待后续的压缩操作。所以,即使删除了大量数据,页面并没有释放,数据库大小不会降下来。

  2. 聚集索引未重建。如果表有聚集索引,当大量行删除后,索引页并不会重建,依然占用原来的空间。需要显式执行索引重建命令,释放未使用的索引空间。

  3. 表未裁剪。删除大量数据行后,表实际占用空间并不会缩减,需要执行ALTER TABLE ... TRUNCATE TABLE之类的命令显式裁剪表,释放未使用空间。

  4. 回滚段未收回。如果执行大量DML操作,会申请额外的回滚段空间,操作提交后这部分空间并不会自动释放,需要定期检查并收回未使用的回滚段。

  5. 临时表未删除。如果有创建临时表来辅助迁移,这些临时表的数据和空间也需要及时删除,否则会继续占用数据库空间。
    所以,总结来说,数据库大小没有显著变化的原因在于,迁移过程中占用的各类空间资源并没有有效收回和重新利用。

望采纳!