SQL Server,将NTEXT转换为NVARCHAR(MAX)

前端之家收集整理的这篇文章主要介绍了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个小时更新.

有人可以提出任何建议,以便如何以更有效的方式更新数据,从而最大限度地减少停机时间和锁定时间?

编辑:我的备份解决方案是随着时间的推移更新块中的数据,但是,随着数据的增加,性能下降,直到所有的记录都被更新,这个时间越短越好,所以我仍然在寻找一个更快的更新方式.

解决方法

如果你不能得到预定的停机时间….

创建两个新列:
为nvarchar(最大)
processedflag INT DEFAULT 0

在processedflag上创建一个非聚簇索引

您可以使用UPDATE TOP(您想要按主键更新顶部).

在更新过程中,将processedflag设置为1,以便下次更新只会更新处理后的标志仍为0

更新后可以使用@@ rowcount查看是否可以退出循环.

我建议在每次更新查询后使用WAITFOR几秒钟,以使其他查询有机会获取表上的锁,而不是超载磁盘使用情况.

原文链接:https://www.f2er.com/mssql/75506.html

猜你在找的MsSQL相关文章