估计SQL使用临时表空间的数量

April 10th, 2007 | Categories: Boring | Tags:

如果表的统计信息够准确,Oracle9i CBO下使用explain plan可以大概估计SQL(包括查询和DDL)使用临时表空间的数量。

Explain plan中会多出|TempSpc|显示估计的临时表空间需求量。下例显示HASH JOIN中使用不同的表作Driving Table,Temp Tablespace的需求。

SQL> explain plan for
select count(1) from JNL_DETAIL a,JNL_RUNS_STATUS b
where a.ID=b.ID and a.ID_NAME=b.ID_NAME and b.DATE_TAG > to_date(’20060701′,’YYYYMMDD’);

SQL> @?/rdbms/admin/utlxpls
PLAN_TABLE_OUTPUT
————————————————————————————————
| Id | Operation | Name | Rows | Bytes | Cost | Pstart| Pstop |
————————————————————————————————
| 0 | SELECT STATEMENT | | 1 | 22 | 5322K| | |
| 1 | SORT AGGREGATE | | 1 | 22 | | | |
|* 2 | HASH JOIN | | 5492M| 112G| 5322K| | |
|* 3 | TABLE ACCESS FULL | SMALLTABLE_SMMARY | 1115 | 16725 | 12 | | |
| 4 | PARTITION RANGE ALL | | | | | 1 | 3 |
| 5 | INDEX FAST FULL SCAN| BIGTABLE_DETAIL_PK | 16G| 107G| 5266K| 1 | 3 |
————————————————————————————————
Predicate Information (identified by operation id):
————————————————–
2 - access(”A”.”ID”=”B”.”ID” AND “A”.”ID_NAME”=”B”.”ID_NAME”)
3 - filter(”B”.”DATE_TAG”>TO_DATE(’2006-07-01 00:00:00′, ‘yyyy-mm-dd hh24:mi:ss’))

SQL> explain plan for
select /*+ leading(a) */ count(1) from BIGTABLE_DETAIL a,SMALLTABLE_SMMARY b
where a.ID=b.ID and a.ID_NAME=b.ID_NAME and b.DATE_TAG > to_date(’20060701′,’YYYYMMDD’);

SQL> @?/rdbms/admin/utlxpls
PLAN_TABLE_OUTPUT
——————————————————————————————————–
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost | Pstart| Pstop |
——————————————————————————————————–
| 0 | SELECT STATEMENT | | 1 | 22 | | 7625K| | |
| 1 | SORT AGGREGATE | | 1 | 22 | | | | |
|* 2 | HASH JOIN | | 5492M| 112G| 293G| 7625K| | |
| 3 | PARTITION RANGE ALL | | | | | | 1 | 3 |
| 4 | INDEX FAST FULL SCAN| BIGTABLE_DETAIL_PK | 16G| 107G| | 5266K| 1 | 3 |
|* 5 | TABLE ACCESS FULL | SMALLTABLE_SMMARY | 1115 | 16725 | | 12 | | |
——————————————————————————————————–
Predicate Information (identified by operation id):
—————————————————
2 - access(”A”.”ID”=”B”.”ID” AND “A”.”ID_NAME”=”B”.”ID_NAME”)
5 - filter(”B”.”DATE_TAG”>TO_DATE(’2006-07-01 00:00:00′, ‘yyyy-mm-dd hh24:mi:ss’))
Note: cpu costing is off

更多参考在这里

Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪 ViVi 365Key 网摘 天极网摘 和讯网摘 博拉网 POCO 网摘 饭否 QQ 书签 Digbuzz 我挖网 Mister Wong
No comments yet.