SQL Server,将NTEXT转换为NVARCHAR(MAX)
我有一个目前有NTEXT的大量字段的数据库.
升级到SQL 2005后,我们对NVARCHAR(MAX)进行了一些性能测试. 如果你阅读这篇文章: http://geekswithblogs.net/johnsPerfBlog/archive/2008/04/16/ntext-vs-nvarcharmax-in-sql-2005.aspx 这解释了一个简单的ALTER COLUMN不会将数据重新排列成行. 我用我的数据体验这个.如果我们只是运行ALTER COLUMN,我们其实在某些方面的性能要差得多.但是,如果我为所有这些字段运行UPDATE TABLE SET Column = Column,我们将获得非常大的性能提升. 我遇到的问题是数据库由数百个这样的列组成,数百万条记录.一个简单的测试(在一个低性能的虚拟机上)有一个包含700万条记录的单个NTEXT列的表需要5个小时更新. 有人可以提出任何建议,以便如何以更有效的方式更新数据,从而最大限度地减少停机时间和锁定时间? 编辑:我的备份解决方案是随着时间的推移更新块中的数据,但是,随着数据的增加,性能下降,直到所有的记录都被更新,这个时间越短越好,所以我仍然在寻找一个更快的更新方式. 解决方法如果你不能得到预定的停机时间….创建两个新列: 在processedflag上创建一个非聚簇索引 您可以使用UPDATE TOP(您想要按主键更新顶部). 在更新过程中,将processedflag设置为1,以便下次更新只会更新处理后的标志仍为0 更新后可以使用@@ rowcount查看是否可以退出循环. 我建议在每次更新查询后使用WAITFOR几秒钟,以使其他查询有机会获取表上的锁,而不是超载磁盘使用情况. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |