(仅供参考,有错误请指出)

teradata使用过程中我们多多少需要查看下 created objects的相关信息,对于查看表结构一句SHOW TABLE TNAME就可以完全胜任。假设我们有诸如一下的需求呢:

  1. 查看那些表是FALLBACK或者NO FALLBACK
  2. 统计下某库下总共有多少个view 多少个Macro 多少个Stored Procedure
  3. 查询表的约束
  4. 查询那些表是以XXXX列为PI的

这时候我们需要借助teradata提供相关数据字典view去完成此类操作。
在此本文列出了teradata中常用的数据字典表,更多的请阅读teradata的官方文档。所有的字典表和视图都在DBC用户下

我们比较常用的字典表视图:

  1. Tables 主要包含了table、view、macros等对象的描述
  2. ShowTblChecks 主要包含了约束类的信息
  3. Columns 主要好包含了表的列、macros的参数等信息
  4. Indices 主要包含了indexed信息
  5. DiskSpace 主要包含数据库级别的AMP的空间信息
  6. TableSize 主要包含表级别的空间信息
  7. PartitioningConstraintsV 主要包含了表的分区信息

有关字典的结构可以SHOW VIEW VNAME 查看

字典Tables 的常用字段:

  1. DatabaseName 所属库
  2. TableName 表名
  3. RequestText 最近一次的DLL语句
  4. TableKind 类型 (T = Table,M = Macro,V = View,J = Journal table,I = Join index,G = Trigger,P = Stored Procedure)
  5. ProtectionType 是否为FALLBACK表, F代表FALLBACK,N为否
  6. JournalFlag 日志分为BEFORE和AFTER,例如值为NN代表BEFORE和AFTER均不作日志记录,NN一个为BEFORE一个为AFTER

解决问题:统计下某库下总共有多少个view 多少个Macro 多少个Stored Procedure
SQL:

SELECT COUNT(TABLENAME)FROM DBC.TABLESWHERE TABLEKIND = 'T' -- TABLEKIND = 'V'视图  TABLEKIND = 'M' 宏 AND DATABANAME = 'XXX'

解决问题:查看那些表是FALLBACK或者NO FALLBACK


SELECT DISTINCT  TRIM(DataBaseName) || '.' || TableName AS TableNameFROM DBC.TABLESWHERE ProtectionType = 'F'  --ProtectionType = 'N'

解决问题:查询某表最近一次做了那些更改
SQL:

SELECT RequestText FROM DBC.TABLES WHERE TableName = 'XXX'

ShowTblChecks 的常用字段:

  1. DataBaseName 所属库
  2. TableName 表名
  3. CheckName 约束名
  4. TblCheck 约束内容

解决问题:产看表的约束
SQL:

SELECT TRIM(DataBaseName) || '.' || TableName AS TableName,CheckName,TblCheckFROM dbc.ShowTblChecksWHERE TableName = 'XXXX';

Columns常用的字段:

  1. DataBaseName 所属库
  2. TableName 表名
  3. ColumnName 列名
  4. ColumnFormat 格式化
  5. ColumnTitle title属性
  6. ColumnType 列的类型(
  7. ColumnLength 字段长度
  8. DefaultValue 默认值
  9. DecimalTotalDigits 数字长度
  10. DecimalFractionalDigits 小数位

ColumnType主要类型:

I = INTEGER
F = Float
DA = Date
CV = VARCHAR
I2 = SMALLINT
D = Decimal
CF = Character Fixed(CHAR)
CV = VARCHAR

这些信息足够我们去还原一张表的具体信息
假设我们有这样的需求,统计各个表有多少个指标(类型为Decimal代表指标),是否有时间维度(format 包含 YYYY-MM-DD 的为时间维度)
SQL统计各个表的指标个数:

SELECT TRIM(DataBaseName) || '.' || TableName AS TableName,COUNT(ColumnType) AS COUNT_INFROM DBC.ColumnsWHERE ColumnType = 'D'AND DATABASENAME = 'XXX'--AND TABLENAME = 'XXXX'GROUP BY 1

Indices 主要字段:

  1. DatabaseName 所属库
  2. TableName 表名
  3. IndexType 索引类型
  4. UniqueFlag 是否唯一
  5. ColumnName 列名

IndexType

P = Primary
S = Secondary
K = Primary Key
J = Join
U = Unique Constraint

解决问题:查询那些表是以XXXX列为PI的
SQL:

  FROM DBC.IndicesWHERE IndexType = 'P'and ColumnName = 'XXXXX'AND DatabaseName = 'XXXXX'

PartitioningConstraintsV主要字段:

  1. DatabaseName 所属库
  2. TableName 表名
  3. ConstraintText 分区信息描述

DiskSpace主要为管理员所有在此略过

TableSize 这张表相对来说比较重要,可以使用此表查询我们建的表PI选择是否合理,主要字段:

  1. Vproc AMP的编号
  2. DataBaseName 所属库
  3. TableName 表名
  4. CurrentPerm 当前空间
  5. PeakPerm 峰值空间

我们知道teradata是MPP架构的数据库,因此它也面临着“木桶效应”的问题。何为木桶效应,简单说就是一个木桶能装多少水并不是由这个木桶最长的那个木板决定,而是有最短的那个决定的。适用在teradata上可以理解为整个数据库的性能并不由最先完成数据处理的节点决定的,而是由那个最慢的节点决定的。因此假设一个节点过慢必将 拖慢整个数据处理的任务。而,“数据倾斜”将引发“木桶效应”,因此我们必须将我们大表的倾斜度控制在一个指标之内。
而利用TableSize 这个视图我们可以检索出我们仓库数据倾斜度不在我们指标之内的。
teradata数据倾斜度的计算方法:Skew = (max-avg)/avg*100

SQL计算数据倾斜度:

SELECT T1.DATABASENAME, --库名T1.TABLENAME, --表名       T1.SPACE_SUM, --表大小T1.SPACE_MAX, --最大AMP大小T1.SPACE_AVG, --平均AMP大小T1.SKEWFACTOR --PI倾斜度FROM (SELECT DATABASENAME,TABLENAME,SUM(CURRENTPERM) / 1000 / 1000 AS SPACE_SUM,MAX(CURRENTPERM) / 1000 / 1000 AS SPACE_MAX,AVG(CURRENTPERM) / 1000 / 1000 AS SPACE_AVG,(SPACE_MAX - SPACE_AVG) / SPACE_MAX * 100 AS SKEWFACTORFROM DBC.TABLESIZEWHERE DATABASENAME = 'DTEMP'AND UPPER(TABLENAME) NOT LIKE '%_MI_%'AND UPPER(TABLENAME) NOT LIKE '%_MS_%'GROUP BY 1, 2) T1WHERE T1.SKEWFACTOR >= 30ORDER BY SKEWFACTOR DESC;

teradata数据库--常用的数据字典表相关推荐

  1. mysql数据库建库建表

    mysql语言规则:1.关键字和函数名称全部大写 2.数据库名称,表名称,字段名称全部小写 1.进入mysql数据库,可通过mysql安装的客户端进入,打开客户端输入密码,即进入数据库 2.通过命令提 ...

  2. DM数据库中数据字典表分类及常用查询。

    众所周知,在Oracle数据字典中,对象名称多数以"USER.","ALL.","DBA."为前缀",USER."视图中 ...

  3. Oracle数据库入门——常用的数据字典

    一.oracle数据字典主要由以下几种视图构成: 1.user视图 以user_为前缀,用来记录用户对象的信息 2.all视图 以all_为前缀,用来记录用户对象的信息及被授权访问的对象信息 3.db ...

  4. oracle 数据字典画报,1 Oracle常用数据字典表

    1 Oracle常用数据字典表 (2013-07-25 23:13:39) 1 Oracle常用数据字典表 1. 查看当前用户的缺省表空间 SQL>select username,default ...

  5. 详解MySQL information_schema数据库常用的表信息以及各表对应的字段信息;以及如何登录mysql和创建视图

    详解information_schema数据库 登录mysql 查询information_schema信息 information_schema常用数据表 TABLES 查询tables table ...

  6. mysql四列数据表代码_MySQL数据库常用代码

    MySQL数据库常用代码启动数据库服务:[ net Start MySQL ] 使用命令登录:[ Mysql -h localhost -u root -p] 关闭数据库服务: [net stop m ...

  7. 数据字典表Truncate丢失将招致数据库不可用

    泉源:赛迪网    作者:Arvin 在梦想的义务环境下,假如你在操作时将数据库内的几个数据字典表Truncate丢失,将会直接招致数据库不能再承袭使用,本文将针对一个相关案例举行详尽的讲解. 案例 ...

  8. Oracle常用数据字典表

    Oracle常用数据字典表  查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users;  查看当前用户的角色 SQ ...

  9. Mysql数据库常用分库和分表方式

    转载地址:http://blog.csdn.net/clevercode/article/details/50877580 1 分库 1.1 按照功能分库 按照功能进行分库.常见的分成6大库:     ...

最新文章

  1. Nginx出现“413 Request Entity Too Large”错误解决方法
  2. php实现变声,PHP:用UTF-8字符串中最接近的7位ASCII等效替换变音符号
  3. linux bind源码安装,linux下bind的安装
  4. 应届硕士研究生算法岗秋招总结
  5. Qt for Android Splash启动页最简单延时关闭
  6. Jupyter Notebook导入自定义模块
  7. cuda 编译 linux,Linux下安装Tensorflow源码及编译
  8. gaf处理一维故障信号_【推荐文章】改进局部均值分解的齿轮箱复合故障特征提取...
  9. java 协议开发_用Java的NIO开发网络协议
  10. 【4】axios 获取数据
  11. 华为OJ-数独(C语言、递归)
  12. 基于ESP32-S2制作本地气象台/温度计
  13. 计算机配置内存容量怎么调,如何设置电脑虚拟内存,电脑虚拟内存设置多少最合理?...
  14. awb数据怎么计算_自动白平衡(AWB)算法
  15. android 摄像头 ip,摄像头已连接,但没有发生任何事情,openCV-IP摄像头Android
  16. Excel 数据透视表教程大全之 04 按日期分组(教程含样本数据)
  17. c primer plus(第五版)读书笔计 第二章(6)
  18. 老婆为什么是别人的好?
  19. 浅谈企业数字化转型之主数据管理系统(MDM)
  20. [SQL]yyyymmdd类型与yyyy-mm-dd日期类型的相互转换

热门文章

  1. 熵、条件熵、联合熵、互信息的理解
  2. Python下Spyder安装方法
  3. leetcode 笨阶乘
  4. 在PyCharm中导入和使用arcpy
  5. 关于for循环遍历列表的几个用法--python
  6. 国内各IE内核浏览器所调用的IE版本--转了
  7. 消息队列常见的几种使用场景介绍!
  8. Android AIDL 传递对象(Parceable),深度解读Netty
  9. 电磁场与电磁波实验 02 - | 电磁波波长测试实验
  10. Linux忘记/更改密码