none
给一个300G的大表主键字段修改索引 需要1.5t额外的可用空间,是什么原因? RRS feed

  • 常规讨论

  • 为一个300g表修改主键字段类型由int类型改未bigint类型 字段自增

    操作流程如下

    1 删主键聚集索引
    2 修改字段类型

    3 加主键索引 

    在加主键索引时由于空间不足, 新增新的文件存放在2t的磁盘当中,索引添加后数据文件大小为1.5t 其中可用空间1.2t ,这是什么原因?



    • 已编辑 gyogh 2020年10月28日 10:01
    2020年10月28日 10:01

全部回复

  • Sql needs some free space during those operations, you can let sql use space in tempdb instead of user db. Creating index process (t-sql or gui) has option for that.
    2020年10月28日 15:39
  • thank you for your answer, i mean why it use so many space to create 
    2020年10月29日 2:33
  • Because sql will keep copy of data while working on them, also needs space for sorting and so.
    2020年10月30日 0:46
  • Yes, but I don't understand that the space of 1.5T is almost five times that of 300.how can I estimate the space needed
    • 已编辑 gyogh 2020年10月30日 2:49
    2020年10月30日 2:48
  • 这个操作还不如建个新表,把数据 BCP 过去后重命名替换掉旧表 

    你这些操作都涉及一个巨大的大事务,空间需求量高是对的

    2020年11月9日 1:02