AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 35292
Accepted
Jon of All Trades
Jon of All Trades
Asked: 2013-02-23 15:25:13 +0800 CST2013-02-23 15:25:13 +0800 CST 2013-02-23 15:25:13 +0800 CST

从 SQL Server 检索的数据是否经过压缩传输?

  • 772

从 Microsoft SQL Server 检索的数据是否经过压缩?如果这是由连接字符串控制的,是否有任何简单的方法来判断是否有任何特定应用程序正在使用它?

我正在研究分析工具,通过我们的网络传输大量数据可能需要几分钟。我想知道如果我们从同一远程服务器上的压缩数据存储中提取数据,是否应该期望性能提高。

只要我们谈到这个话题,我就很好奇:数据是以二进制还是 ASCII 传输的?例如,如果12345从列中查询该值,是否以INT0x31、0x32、0x33、0x34、0x35 五个字节传输;该值所需的两个字节;还是列所需的四个字节?

需要明确的是,我知道有一些关于压缩存储数据和备份数据的选项。我在问数据是如何传输的。

sql-server-2008 compression
  • 4 4 个回答
  • 11068 Views

4 个回答

  • Voted
  1. Best Answer
    Aaron Bertrand
    2013-02-24T07:06:47+08:002013-02-24T07:06:47+08:00

    您要压缩的数据是通过TDS通过线路发送的。这里有一些较小的压缩,但与使用页/行压缩、备份压缩或列存储压缩获得的压缩类型相去甚远。

    之前有人问过:

    http://connect.microsoft.com/SQLServer/feedback/details/412131/enable-network-compression-compress-tds-stream

    http://connect.microsoft.com/SQLServer/feedback/details/377479/wan-compression-option

    这些项目仍然开放,所以也许有一些希望。没有办法通过我见过的连接字符串来控制它。

    与此同时,有些产品声称可以做到这一点,例如

    http://www.nitrosphere.com/products/nitroaccelerator/

    http://toonel.net/tcpany.htm

    您还可以潜在地配置 SQL Server 和应用程序服务器之间的网络以支持压缩(和其他东西,如加密),但您超出了我的范围,我不确定 SQL 的每个功能是否都支持这一点服务器。

    老实说,我不相信这是您要专注于优化的地方。压缩此流实际上可能会减慢速度,并超过发送更少字节的好处。我宁愿把钱花在服务器和客户端之间更好的网络连接上,也不愿花时间投资于这类工作并测试它是否有任何实际好处——直到后来才能够做到这一点。从 10/100 到千兆光纤对网络 I/O 具有已知且可预测的影响。


    我不确定通过网络发送的字节格式;您将不得不为此设置某种数据包嗅探器(或者也许有人已经这样做了并且会插话)。

    至于压缩的影响,除非您使用的是 Fusion-IO 或其他高端 SSD 类型的解决方案,否则您目前几乎可以肯定是 I/O 限制,而不是 CPU 限制。因此,只要您有 CPU 开销,您应该会在启用压缩的情况下看到更快的性能(但这不会改变网络性能,因为数据在传输之前是未压缩的)。我说,对您的服务器、您的应用程序、您的数据或您的使用模式一无所知 - 您很可能会遇到压缩实际上会损害性能的边缘情况,或者数据不是获得良好压缩比的良好候选者。

    • 19
  2. Ben Gribaudo
    2017-10-25T08:09:17+08:002017-10-25T08:09:17+08:00

    从 Microsoft SQL Server 检索的数据是否经过压缩?如果这是由连接字符串控制的,是否有任何简单的方法来判断是否有任何特定应用程序正在使用它?

    从技术上讲,结果可以非常轻微地压缩。

    表格数据流 (TDS) 7.3B(最初由 SQL Server 2008 R2 支持)引入了一种称为空位图压缩的功能,它允许使用比空字段值通常所需的更少字节传输包含多个空值的行。

    服务器可以在发送结果时选择将常规行与空位图压缩行混合。客户端对此没有控制权,因此没有相关的客户端配置选项可用。

    空位图是 TDS 当前支持的唯一压缩形式。如果一行未压缩空位图,则将其发送未压缩。

    只要我们谈到这个话题,我就很好奇:数据是以二进制还是 ASCII 传输的?

    具有非文本数据类型的列使用TDS 协议定义的二进制格式传输。

    • 5
  3. jocull
    2017-10-24T06:12:17+08:002017-10-24T06:12:17+08:00

    如其他地方所述,要解决此问题,您可以考虑设置 VPN 并启用压缩。

    正如其他人所说,SQL Server TDS 协议没有内置压缩。值得一提的是,默认情况下也没有加密。要启用加密,您必须使用证书并在连接字符串中指定它。

    解决这两个问题的最简单的解决方案是打开启用加密和压缩的 VPN 隧道。简单的 Microsoft PPTP 解决了这两个问题并且易于设置。

    • 2
  4. Ishwar
    2013-02-27T16:21:54+08:002013-02-27T16:21:54+08:00

    为什么不设置一个本地 SQL 实例来缓存相关数据并每 n 小时同步一次?其他要查看的是预先计算多维数据集并在到达摘要单元格时有一个“获取详细信息”按钮。这将只获取相关的详细行。

    • 1

相关问题

  • 连接不同地理区域的数据库的最佳实践

  • 死锁的主要原因是什么,可以预防吗?

  • 我在索引上放了多少“填充”?

  • 是否有开发人员遵循数据库更改的“最佳实践”类型流程?

  • 从 SQL Server 2008 降级到 2005

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    授予用户对所有表的访问权限

    • 5 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve