Teradata 压缩17 Mar 2025 | 6 分钟阅读 压缩减小了存储信息的物理大小。压缩的目标是使用最少的位数准确地表示信息。 压缩方法可以是逻辑压缩或物理压缩。物理数据压缩与数据的含义无关,对信息进行重新编码;逻辑数据压缩用另一组更紧凑的数据代替一组数据。 在 Teradata 中,压缩最多可以压缩 255 个不同的值,包括 NULL。由于存储空间减少,Teradata 可以在一个块中存储更多记录。这可以改善查询响应时间,因为任何输入操作都可以处理每个块中更多的行。 可以使用 CREATE TABLE 在创建表时添加压缩,或者使用 ALTER TABLE 命令在创建表后添加压缩。 压缩有以下几个基本原因,例如
压缩通过在每个物理容量单元中存储更多逻辑数据来降低存储成本。压缩生成更小的行,从而导致每个数据块存储更多的行和更少的数据块。 压缩可以提高系统性能,因为每个行的查询需要检索的物理数据更少。压缩数据在内存中保持压缩状态,FSG 缓存可以容纳更多行,从而减小磁盘输入的量。 规则Teradata 压缩方法有以下规则来压缩存储的数据,例如
压缩类型Teradata 数据库使用几种类型的压缩。
多值压缩 (MVC)当我们使用列定义中的压缩列表指定值时,多值压缩 (MVC) 会压缩列中的重复值。 当列中的数据与压缩列表中指定的值匹配时,数据库仅在表头中存储一次该值,而不管它作为该列的字段值出现多少次。然后,数据库在值出现的每一行中存储一个较小的替代值,通常小到 2 位。 与其他方法相比,MVC 提供了最佳的成本和收益比,因为它在查询处理期间解压缩数据所需的资源最少。我们可以将 MVC 用于经常使用的数据,而不会影响查询和加载性能。 MVC 也被认为是所有压缩方法中最容易实现的。 MVC 是一种逻辑数据压缩形式。 多值压缩具有以下性能影响,例如
示例 以下示例压缩值 1、2 和 3 的字段 Depatment_No。当对列应用压缩时,此列的值不会与该行一起存储。 相反,这些值存储在每个 AMP 的表头中。并且仅向行添加存在位以指示该值。 当数据移入表时,系统会自动压缩指定的值,并在访问包含这些值的行时解压缩。 注意
算法压缩Teradata 数据库软件包含几种标准压缩算法,以 UDF 的形式,用于通过表列压缩许多类型的数据。我们还可以在 UDF 格式中创建自定义压缩和解压缩算法。 当列值是唯一的时,算法压缩 (ALC) 比 MVC 提供更好的压缩结果。 如果列有重复值,则可以在同一列上同时使用 ALC 和 MVC,但系统不会将 ALC 应用于 MVC 涵盖的任何值。 注意
行压缩行压缩是一种逻辑数据压缩形式,其中 Teradata 数据库仅存储一组重复的列值一次。 属于该集合的其他非重复列值将存储为基本重复集的逻辑分段扩展。行压缩是一种无损方法。 像多值压缩一样,不需要解压缩即可访问行压缩的数据值。 块级压缩数据块是输入的物理单元,它定义了当我们指定块级压缩 (BLC) 时 Teradata 如何处理数据,Teradata 以压缩格式存储数据块以节省存储空间。 块级压缩的目标是节省存储空间并减少磁盘输入带宽。块级压缩可以使用更多的 CPU 动态地压缩和解压缩数据。因此,使用块级压缩是否可以提高查询性能取决于性能是否更多地受到磁盘输入带宽或 CPU 使用的限制。 Teradata 数据库提供基于软件和基于硬件的 BLC。当我们在 DBS Control 的压缩算法字段中指定压缩算法时,我们选择 BLC 方法。
自动压缩当我们创建列分区表或 join 索引时,Teradata 数据库会尝试使用一种或多种方法来压缩数据。除非我们在创建对象时指定 NO AUTO COMPRESS 选项,或者 NO AUTO COMPRESS 设置为默认值,否则将数据插入到该对象的物理行中。 选择和应用适当的压缩方法到列分区表或 join 索引的物理容器的过程称为自动压缩。 自动压缩对于具有单列和 COLUMN 格式的列分区最有用。 Teradata 数据库自动压缩仅适用于具有 COLUMN 格式的列分区,然后如果它减小了容器的大小。或者,如果它设置为默认值,则具有以下要求,例如
对于某些值,没有适用的压缩技术可以减小物理行的大小,因此 Teradata 数据库不会压缩该物理行的值。尽管如此,系统还是会尝试使用其可用的自动压缩方法之一来压缩物理行值。 当我们从列分区表中检索行时,Teradata 数据库会自动解压缩任何已压缩的列分区值。 下一主题Teradata Explain |
我们请求您订阅我们的新闻通讯以获取最新更新。