Teradata 执行计划
查看Teradata执行计划使用如下语句:
Explain SQL Statement
一般来说,执行计划分为以下几个过程:
1. 锁表
2. 获取数据
3. 完成Transaction
4. 返回数据
锁表:
Teradata有如下几种锁:ACCESS, READ, WRITE, EXCLUSIVE
ACESS 允许读脏数据,允许insert/update/delete
READ 允许读,不能insert/update/delete
WRITE 不允许读,只能insert/update/delete
EXCLUSIVE 最严格,用于改变表或者数据库结构时用 alter table/alter database
获取数据:
根据条件不同获取数据的方法也不同
1. without join
all-AMP RETRIEVE 直接从AMP中提取数据并返回
如果where 条件使用了unique primary index,则更加简单高效,使用 single-AMP RETRIEVE
2. with join
首先将一个表中数据用all-AMP RETRIEVE 取出,然后再重新分布到所有AMP中,然后进行all-AMPs JOIN。
如果连接条件使用了unique primary index,则会省略all-AMP RETRIEVE,因为所有数据已经根据join条件分布到AMP中。
3. others
当然还会有其它很多条件来获取数据,不同方法都会有不同的plan,具体可以自己去尝试一下。
说明:
Teradata 生成execution plan的时候会根据index/statistics来进行优化,所以一定要合理的设置unique primary index并及时更新statistics让引擎可以更好的工作。
当然,Teradata只会根据你写的SQL来生成合适的plan,SQL不同则plan也会有差别,所以写SQL的时候要注意,尝试不同的SQL并观察生成的plan的不同,加以体会。
参考:
http://teradata.uark.edu/research/lee/performance_check.html