none
修改同步链中的表的问题 RRS feed

  • 问题

  • 有一个表 600W行数据,并处于同步链中

    其中表结构设计的不合理,包含很多char(200)

    该表占用30GB空间.

    我在源头进行alter column. 大概只修改了5个column.

    结果在中转的该数据库里产生了270GB的日志.

    请问这是为什么呢?

    源头,中转,目的端都是简单恢复模式.


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.

    2013年1月8日 1:33

答案

  • 在修改的时候, 你有注意同步么?

    当你修改完一个列的时候, 如果同步没有同步完就继续修改下一个列的话, 第一个修改导致的日志空间占用是不会释放的, 这导致第2个修改的时候, 日志空间需求是分配新的

    通过 sys.databases 的 log_reuse_wait_desc 列可以确定日志空间重用所等待的资源是什么

    2013年1月8日 7:34

全部回复

  • Maybe more efficient to create new table with proper data types and copy data over.
    2013年1月8日 3:49
  • Maybe more efficient to create new table with proper data types and copy data over.

    是的 我们之后打算才用这种方式进行.

    但是上面为什么会产生那么大的日志文件,我很奇怪....


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.

    2013年1月8日 5:08
  • 在修改的时候, 你有注意同步么?

    当你修改完一个列的时候, 如果同步没有同步完就继续修改下一个列的话, 第一个修改导致的日志空间占用是不会释放的, 这导致第2个修改的时候, 日志空间需求是分配新的

    通过 sys.databases 的 log_reuse_wait_desc 列可以确定日志空间重用所等待的资源是什么

    2013年1月8日 7:34
  • 不过说实在的, SQL Server 的日志有时候不知道是写了些什么, 曾经遇到过 Rebuild 一个3 G(包括索引空间开销)的表的索引, 结果产生了几十G的日志
    2013年1月8日 7:37