Teradata太空问题

时间:2016-04-20 06:42:56

标签: teradata

我很难理解我们目前用来增加空间并减少保留数据库空间(空间上下)的过程。下面是空间下降工作的一部分:

LOCKING DBC.DiskSpace FOR ACCESS
 SELECT 
     (( (T1.MAXPERM) - (T1.MAXCURRENTPERM * T1.NUMAMPS))
              - (T2.SPACE_LEFT + T1.NUMAMPS)) (FORMAT 'Z(15)9') 
     INTO :var_SpaceAdj
  FROM Ctrl_Base.Space_Ctrl T2
       ,(
   SELECT DATABASENAME, SUM(MAXPERM), MAX(CURRENTPERM), COUNT(*)
    FROM DBC.DiskSpace
    WHERE DATABASENAME = :inP_Database
     GROUP BY 1) 
           AS T1 (DATABASENAME, MAXPERM, MAXCURRENTPERM, NUMAMPS)
   WHERE T1.DATABASENAME = T2.DATABASENAME
   AND (( (T1.MAXPERM) - (T1.MAXCURRENTPERM * T1.NUMAMPS))
      - (T2.SPACE_LEFT + T1.NUMAMPS)) >= 1000000
       ;

任何人请帮助我理解这是做什么的? 我们有一个Ctrl_Base.Space_Ctrl表,我们指定%增加,同时空间向上和空格左边的条目

此致 阿米特

1 个答案:

答案 0 :(得分:1)

((T1.MAXPERM) - (T1.MAXCURRENTPERM * T1.NUMAMPS))

T1.MAXPERM - 这是数据库中的总分配空间

T1.MAXCURRENTPERM - 这是占用最多空间的AMP的空间。由于数据是按表格的PI分布的,因此当消耗最高空间的AMP无法存储更多数据时,数据分布不均可能导致数据库无法报告空间。

(T1.MAXCURRENTPERM * T1.NUMAMPS) - 根据消耗最多空间的AMP计算数据库的消耗的空间。考虑到数据库中不均匀的数据分布。

派生表T1应该很简单。它简单地将空间信息聚合到数据库级别,形成DBC.DiskSpace中的AMP,DatabaseName级别。

WHERE子句的后半部分是一个条件,即T1中数据库和控制表的Space_Left列的空间差异大于或等于1M字节。

希望这有帮助。