Questions tagged «compression»

给数据编码过程指定的名称,以便与原始表示相比使用更少的位数。

4
从SQL Server检索的数据是否经过压缩以进行传输?
从Microsoft SQL Server检索的数据是否已压缩?如果这是由连接字符串控制的,是否有任何简单的方法来判断是否有任何特定的应用程序正在使用它? 我正在研究分析工具,数据量可能需要几分钟才能通过我们的网络传输。我想知道如果我们从同一远程服务器上的压缩数据存储中提取数据,是否应该期望性能提高。 只要我们关注这个话题,我都会很好奇:数据是以二进制还是ASCII传输的?例如,如果12345从一INT列中查询该值,则将其作为五个字节0x31、0x32、0x33、0x34、0x35传输;该值所需的两个字节;还是该列需要四个字节? 明确地说,我知道有一些选项可以压缩存储数据并进行备份。我在问数据如何传输。

2
堆压缩
以下是Microsoft Docs的一段: 在DML操作中分配给堆中的新页面在重建堆之前不会使用PAGE压缩。通过删除和重新应用压缩,或通过创建和删除聚簇索引来重建堆。 我不知道为什么会这样。如果我的堆具有指定的压缩设置,为什么不将其应用于属于该表的页面? 谢谢

2
压缩NVARCHAR(MAX)的另一种方法?
我正在尝试压缩一些具有NVARCHAR(MAX)字段的表。不幸的是,row和page压缩并没有产生预期的影响(对于20 GB的表仅节省了约100/200 MB)。另外,我无法应用列存储和列存储档案压缩,因为它们不支持NVARCHAR(MAX)字段压缩。 有人可以告诉我在这里是否有其他选择吗? 我也猜想row和page压缩没有效果,因为NVARCHAR(MAX)列的内容是唯一的。


2
是否存在确定多个文件文件组中包含分配单元的确切文件的方法?
我希望能够详细了解哪些数据库文件包含用于数据库中各种HoBT(对齐和不对齐)的分配单元。 在我们开始为每个文件组创建多个数据文件之前,我一直使用的查询(请参见下文)对我很有帮助,而我只能弄清楚如何获得与文件组级别一样的粒度。 select SchemaName = sh.name, TableName = t.name, IndexName = i.name, PartitionNumber = p.partition_number, IndexID = i.index_id, IndexDataspaceID = i.data_space_id, AllocUnitDataspaceID = au.data_space_id, PartitionRows = p.rows from sys.allocation_units au join sys.partitions p on au.container_id = p.partition_id join sys.indexes i on i.object_id = p.object_id and i.index_id = p.index_id join sys.tables …


2
查找数据库中所有表的未压缩大小
在Dynamics AX中,存在一种缓存机制,可以将表配置为加载到内存中并进行缓存。此高速缓存限制为一定数量的KB,以防止出现内存问题。我正在谈论的设置被调用,entiretablecache并在请求单个记录时立即将整个表加载到内存中。 直到最近,我们还是依靠一些脚本来验证具有此设置的表的大小,以查看表大小是否超过此限制。 现在,压缩开始发挥作用,像sp_spaceused或sys.allocation_units之类的东西似乎报告了压缩数据实际使用的空间。 显然,应用程序服务器正在处理未压​​缩的数据,因此SQL Server中磁盘上的数据大小无关紧要。我需要未压缩数据的实际大小。 我知道sp_estimate_data_compression_savings,但是顾名思义,这只是一个估计。 我希望尺寸尽可能正确。 我能想到的唯一方法是一些复杂的动态SQL创建与压缩表具有相同结构的未压缩表,将压缩数据插入该影子表中,然后检查该影子表的大小。 不用说,这有点乏味,并且需要花费一些时间才能在数百GB的数据库上运行。 Powershell可能是一个选项,但是我不想遍历所有表以select *对它们执行操作以检查脚本中的大小,因为那样只会淹没缓存,并且可能还需要很长时间。 简而言之,如果可能的话,我需要一种获取每个表大小的方法,因为一旦将其解压缩,就可以将碎片从呈现给应用程序的方程式中分离出来。我对各种方法持开放态度,首选使用T-SQL,但我不反对Powershell或其他创造性方法。 假设应用程序中的缓冲区是数据的大小。bigint始终是bigint的大小,并且字符数据类型为每个字符2个字节(unicode)。BLOB数据也占用数据的大小,枚举基本上是int,数字数据是numeric(38,12),datetime是datetime的大小。另外,没有NULL值,它们要么存储为空字符串,要么存储1900-01-01为零。 没有有关如何实现此方法的文档,但是这些假设是基于一些测试以及PFE和支持团队使用的脚本(显然,它们也忽略了压缩,因为检查是在应用程序中构建的,而应用程序无法分辨(如果基础数据已压缩),这还将检查表大小。例如,此链接指出: 避免对大型表使用EntireTable缓存(在AX 2009中超过128 KB或16页,在AX 2012中超过“整个表缓存大小”应用程序设置[默认值:32KB或4页])–改为记录缓存。

1
梭子鱼和压缩的好处
一段时间以前,我一直在阅读有关MySQL的文件格式Antelope和Barracuda的信息,我想知道使用Barracuda和Compression是否可以受益。 我的服务器当前正在使用Antelope,因为它是MySQL的默认设置。 由于我拥有大型数据库,因此内存问题很多次了。我的数据库每天都在增加。 压缩似乎正在使一些人受益,例如:http : //www.mysqlperformanceblog.com/2008/04/23/real-life-use-case-for-barracuda-innodb-file-format/ 我知道内存和磁盘空间可能会更少,但是我不确定是否理解这一点(引自文章): “〜5%根据顶部的CPU负载(从80-100%主要等待I / O) 0.01通过主键的平均平均查找时间(转换之前的1-20秒)” 我以为这两件事不会改善,因为如果压缩了数据,则服务器必须解压缩才能再次获取原始数据,因此,CPU使用率会增加吗? 这对您的读/写密集型应用程序有好处吗?您会建议我改为梭子鱼和压缩吗? 您知道梭子鱼有什么问题吗? 以下问题的答案似乎指出了一些问题,但是由于它是从2011年开始的,所以我要说它们现在已经解决:https : //serverfault.com/questions/258022/mysql-innodb-how-to-switch梭子鱼格式

1
压缩PostgreSQL数据库
我有一个超过500GB的大型PostgreSQL数据库,这太大了。无论如何,有没有将数据库压缩到更易于管理的大小?我尝试使用SquashFS进行此操作,并将数据库压缩到177GB,但是PostgreSQL要求数据库具有写访问权限,并且Squashed系统为只读。是否有更多经验丰富的数据库用户对实现此目标有任何建议? 该数据库保存着地球的GIS数据,并将在部署的系统上本地使用。目前它位于1TB SSD上,但是,我试图避免只是为了容纳大型数据库而拍打额外的硬盘驱动器。数据库按预期执行,没有问题,我只想将其压缩到更易于管理的大小,并避免将其放在单独的驱动器上。

4
网络备份的替代方法
在我们的环境中,有些服务器位于“始终在线”可用性组中,有些则是独立的。 我们通常备份到网络共享,但是最近我们观察到,随着数据库的增大,花费的时间越来越长,这会使整个网络变慢。 Ola hallengren的脚本被用于压缩,并且还分割备份文件。我仅执行每日“完整”备份。备份将转到网络共享EMC isilon驱动器。 我从不满意EMC DD Boost。唯一的选择是执行本地备份,然后复制到相同的网络共享。 除了上述以外,还有其他有效的方法吗?

2
SQL Server数据压缩绝对适合只读数据库吗?
我读过一些有关SQL Server数据压缩的文献,指出写入成本增加到通常需要的四倍。似乎还暗示这是数据压缩的主要缺点,强烈暗示对于只读存档数据库,使用100%填充页面的数据压缩将提高性能(仅少数例外)。 以上陈述正确吗? 数据压缩与其他方式(用于读取)之间的主要“差异”是什么? “ CPU + x%”? “ IO -y%”? 页面拆分发生了吗? tempdb的用法? RAM使用率? 和写作? 出于这个问题的目的,您可以将上下文限制为大型(> 1TB)数据库的PAGE级压缩,但是始终欢迎其他注释。 参考文献: SQL Server存储引擎博客(DW场景显示压缩非常有优势) 数据压缩:策略,容量规划和最佳实践 确定压缩内容的更详细方法涉及分析每个表和索引的工作负载特征。它基于以下两个指标: U:相对于该对象的总操作数,特定表,索引或分区上的更新操作数的百分比。U的值越低(即不经常更新表,索引或分区),则它越适合用于页面压缩。 S:表,索引或分区上的扫描操作相对于该对象上的全部操作的百分比。S的值越高(即,表,索引或分区大部分被扫描),则用于页面压缩的候选值越好。 以上两种情况都明显偏向于建议为DW样式的数据库建议页面压缩(读密集型/排他性大数据操作)。

1
使用页面压缩时的行开销是多少?
我创建了一个包含650 Numeric(19,4)列的表。当我打开页面压缩时,通过运行 ALTER TABLE fct.MyTable REBUILD WITH (DATA_COMPRESSION = PAGE); 我懂了 消息1975,级别16,状态1 索引“ PK_Mytable”的行长度超过了“ 8060”字节的最大允许长度。 但是650乘以9字节仅是5850字节,与规定的8060字节的限制相去甚远。 服务器正在运行Windows 2012 r2和SQL Server 2016 SP1 CU2 使用页面压缩时的行开销是多少? 这是一些代码来显示我的意思: /* test script to demo MSG 1975 */ DECLARE @sql NVARCHAR(max)='', @i INT =0 drop table if exists dbo.mytable; SET @sql = 'Create table dbo.Mytable …


1
PK上的压缩与表上的压缩之间有什么区别?
可以在表上设置数据压缩: CREATE TABLE dbo.SomeTable( SomeId [bigint] NOT NULL, OtherId [bigint] NOT NULL, IsActive [bit] NOT NULL, CONSTRAINT [PK_Some] PRIMARY KEY CLUSTERED ( SomeId Desc ) ) ON SomePartitionScheme(SomeId) WITH (DATA_COMPRESSION=PAGE) 可以在主键上定义它: CREATE TABLE dbo.SomeTable( SomeId [bigint] NOT NULL, OtherId [bigint] NOT NULL, IsActive [bit] NOT NULL, CONSTRAINT [PK_Some] PRIMARY KEY …

1
在Postgres中存储大量文本有哪些压缩选项?
我需要在Postgres中存储大量文本,主要是命令日志和长时间运行的命令的输出,并且需要知道是否有一些设置可以使用zlib之类的工具或其他本机空间节省方法来透明地压缩数据。 。 数据主要是只读数据,因此写入不是问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.