TERADATA数据压缩

数据压缩

概况

本章描述了几种数据压缩选项,它能够帮助你减少磁盘空间的使用,在某种情况下,还可以提高I/O性能。

  • 多值压缩(MVC)
  • 算法压缩(ALC)
  • 行压缩
  • 行标题压缩
  • 自动压缩
  • 哈希索引和连接索引行压缩
  • 块级压缩(BLC)

压缩的目标是利用最少的位数(bits)来准确的表示信息。
压缩方法可分为物理方法和逻辑方法。
物理方法独立于数据本身意义对其进行重新编码, 而逻辑方法则通过一个更紧凑的集合来替换。

压缩通过在单位物理容量中存储更多的逻辑数据来降低存储成本。压缩产生更小的行,因此每个可以数据块存储更多行以减少数据块数量。

压缩还可以提高系统性能,因为每个查询返回更少的物理数据,同时压缩过的数据在内存中保持压缩状态,因此FSG[1]缓存可容纳更多行,从而减少磁盘I/O的大小。

[1]FSG cache: File Segment cache, a Teradata caching approach.

算法压缩可以是有损或者是无损的,这取决于所选用的的算法。

TD的压缩有一个很小的初始成本,但是即使对于小表的查询,只要选择的压缩方法能过减小表的大小,这就是一个净赢。

识别未压缩,单值压缩和多值压缩表

SELECT dbt.DATABASENAME, dbt.TABLENAME,
  MAX(CASE WHEN (compressvaluelist IS NOT NULL)
                      THEN (CASE WHEN INDEX(compressvaluelist,',') >0
                                             THEN '3. MVC '
                                              ELSE '2, SVC '
                                              END)
                       ELSE '1. NONE'
                       END) AS COMPRESS_TYPE,
    MIN(pds.Current_Perm) AS Current_Perm
FROM DBC.Columns AS dbt, (
    SELECT t.DATABASENAME, t.TABLENAME,SUM(ts.CurretPerm) AS Current_Perm
    FROM DBC.Tables as t, DBC.TableSize AS ts
    WHERE t.DATABASENAME = ts.DATABASENAME
    AND t.TABLENAME = ts.TABLENAME
    AND ts.TABLENAME <> 'ALL'
    HAVAING Current_Perm > 15000000000
GROUP BY 1,2) AS pds
WHERE dbt.DATABASENAME IN ('aaaa','bbbb')
AND dbt.DATABASENAME = pds.DATABASENAME
AND dbt.TABLENAME = pds.TABLENAME
---- HAVING COMPRESS_TYPE = '1. None'
GROUP BY 1, 2
ORDER BY 1, 3, 4 DESC, 2;

多值压缩

在列定义时,你可以指定一个压缩值列表,MVC将列中这些重复出现的值压缩。
MVC是一种无损的逻辑数据压缩形式,

块级压缩

数据块是I/O基本物理单位,用于定义TD如何处理数据。
当你指定了块级压缩选项,TD将以压缩格式存储数据来减少存储空间。

BLC可以应用到这几种类型的表:

  • 主要数据,回退,甚至是无法重新启动的表

BLC还可以应用于这几种类型的子表:

  • BLOB, CLOB, XML, JOIN INDEX, HASH INDEX和Reference index.

BLC独立应用于其他任何应用于相同数据的压缩类型。
BLC可以使用更多的CPU来动态压缩和解压数据,所以查询性能是否随BLC而增强取决于性能是否受I/O带宽或CPU使用率的限制。

你可能感兴趣的:(TERADATA数据压缩)