首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从sql server数据库获取压缩数据到应用程序

从sql server数据库获取压缩数据到应用程序
EN

Database Administration用户
提问于 2017-06-21 06:34:35
回答 4查看 1.2K关注 0票数 -2

我已经创建了一个C#应用程序。我已经为这个应用程序使用了sql server数据库。当我运行应用程序时,它与sql服务器通信并检索数据。

我的问题是,当数据库的大小非常大,并且我请求从它获得大数据(35-40MB)时,获得数据需要花费大量的时间(10-20分钟)。

有没有办法从服务器获取压缩数据并减少网络延迟?

EN

回答 4

Database Administration用户

发布于 2017-06-22 23:42:38

也许问题不在Server上,而是在您的应用程序上,但我对此不太了解。

结果集是多行数据,还是许多大列,还是两者兼而有之?

如果有许多行--也许您的应用程序在下载数据之后,不能很好地管理数据。或者,它一次请求并下载一行。

如果大列-也许你可以选择更经济的数据类型。也许你不需要的时候用了nchar。(如果你需要它,那就用它。)您的文本可能会填充不必要的空间,要么是因为您使用char而不是varchar,要么是因为数据来自包含文本末尾的空格的源,varchar将保留该空间,直到从数据中删除为止,即RTRIM(column_name) -我认为这会自动变成varchar(长度)或nvarchar(长度),但请检查这一点。

票数 0
EN

Database Administration用户

发布于 2017-06-26 00:21:35

您应该对服务器上正在发生的等待进行快照,特别是注意async_network_io等待,一旦您这样做,再次重新运行请求,检查是否在这里等待,这表明您的应用程序本身存在问题,并且它不能那么快地处理数据。

如果您使用的是实体框架,请确保首先使用.Load()函数加载数据,该函数将数据加载到应用程序端的内存中,然后可以与表格.Local.一些行动一起使用。

希望能帮上忙!

票数 0
EN

Database Administration用户

发布于 2022-06-21 16:42:03

您没有提到列类型是什么,如果要从SQL或行集返回Stream,则没有提及。但是,如果使用的是Server 2016或更高版本,则可以使用COMPRESS(xxx)函数。该函数使用GZIP算法压缩输入表达式(可以在C#中使用C#中的GZipStream轻松解压缩)。COMPRESS函数返回varbinary(max)类型的字节数组。

压缩(Transact-SQL)GZipStream类

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/176847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档