none
存储varchar(max),nvarchar(max)等类型数据时会发生行溢出! RRS feed

  • 问题

  • 存储varchar(max),nvarchar(max)等类型数据时会发生行溢出!每次插入这些大量汉字信息的时候(SSIS)!会感觉很慢!读取这些大型字段的时候也慢!大家有什么好的方法或者建议吗?在存储varchar(max),nvarchar(max)该如何设置表结构或者做一些特殊处理之类的!谢谢了!
    2012年5月15日 8:19

答案

全部回复

  • max 支持2G数据。还溢出,不知道你什么情况有超过这么多的数据?这么多慢是自然的了。

    建议你使用文件服务器来存储这类数据。


    family as water

    2012年5月15日 9:51
  • In fact nvarchar(max) can only store 1g characters. Take look at filestream, may help you here.
    2012年5月15日 13:54
  • Also think about full text index on that column, can speed up queries against big string column in general.

    2012年5月15日 13:57
  • MAX 字段有2GB 的限制,不能勃起这个大小

    读取大量的数据,肯定是慢的,就算你读文件也会慢

    如果是要存储文件内容信息,一般建议使用 FILESTREAM 会好一些

    2012年5月15日 23:24
  • 是这样的!我们的后台数据库是s1l2008r2!要存储很多类似新闻的汉字!存储这些汉字的字段就是varchar(max),nvarchar(max),NTEXT这些类型!我们是用SSIS包从其它服务器上抓取数据放到Sql2008r2中!由于这些数据行中有些字段是大量的汉字!所以导入这些信息的时候感觉很慢!SSIS控件用的是OLE DB(对数据集的每一行执行sql命令)!有好的方法吗?主要是插入很慢!一个SSIS包!几万条这样的数据!会等好久!
    2012年5月16日 0:49
  • 逐行确实会比较慢

    可以试试大容量导入的那个组件(从文件导入),或者使用脚本组件,自己在里面写代码(C#或者 VB.net),引用 sqlbulkcopy 进入导入

    2012年5月16日 1:23
  • 谢谢!我尝试下!刚才我说的溢出的意思是一个数据页只有8KB,一个数据行不能超过8060字节!如果超过就会产生跨页!跨页的话会影响写入性能的吧!

    2012年5月16日 1:44
  • Sql stores blob data in separate place from regular data pages.
    2012年5月16日 3:47
  • 用ssis的时候要选择批量导入。

    想不想时已是想,不如不想都不想。

    2012年5月16日 7:05
    版主