更新时间:2022-09-06 23:19:08
SCOTT@test> Select * from sys.aux_stats$;
SNAME PNAME PVAL1 PVAL2
------------------------------ ------------------------------ -------------- ------------------------------
SYSSTATS_INFO STATUS COMPLETED
SYSSTATS_INFO DSTART 08-20-2013 11:28
SYSSTATS_INFO DSTOP 08-20-2013 11:58
SYSSTATS_INFO FLAGS 1
SYSSTATS_MAIN CPUSPEEDNW 2657
SYSSTATS_MAIN IOSEEKTIM 10
SYSSTATS_MAIN IOTFRSPEED 4096
SYSSTATS_MAIN SREADTIM 5
SYSSTATS_MAIN MREADTIM 10
SYSSTATS_MAIN CPUSPEED 1000
SYSSTATS_MAIN MBRC 16
SYSSTATS_MAIN MAXTHR
SYSSTATS_MAIN SLAVETHR
13 rows selected.
@ver
SCOTT@test> @ver
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
create table t pctfree 99 as select rownum id , 'test' name from dual connect by level
exec dbms_stats.gather_table_stats(user,'T');
SCOTT@test> select num_rows,blocks from dba_tables where wner=user and table_name='T';
NUM_ROWS BLOCKS
---------- ----------
1029 1055
--占用1055块。
SCOTT@test> Select * from sys.aux_stats$;
SNAME PNAME PVAL1 PVAL2
------------------------------ ------------------------------ ----------- ------------------------------
SYSSTATS_INFO STATUS COMPLETED
SYSSTATS_INFO DSTART 10-14-2013 09:46
SYSSTATS_INFO DSTOP 10-14-2013 09:46
SYSSTATS_INFO FLAGS 1.0000
SYSSTATS_MAIN CPUSPEEDNW 1531.0000
SYSSTATS_MAIN IOSEEKTIM 10.0000
SYSSTATS_MAIN IOTFRSPEED 4096.0000
SYSSTATS_MAIN SREADTIM 1.3000
SYSSTATS_MAIN MREADTIM 7.8000
SYSSTATS_MAIN CPUSPEED 2832.0000
SYSSTATS_MAIN MBRC 42.0000
SYSSTATS_MAIN MAXTHR
SYSSTATS_MAIN SLAVETHR
13 rows selected.
SCOTT@test> @dp
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------
Plan hash value: 1601196873
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1029 | 1009K| 154 (2)| 00:00:01 |
| 1 | TABLE ACCESS FULL| T | 1029 | 1009K| 154 (2)| 00:00:01 |
--------------------------------------------------------------------------
8 rows selected.
SCOTT@test> SELECT (blocks / 42 * 7.8 / 1.3) + 1 AS io_cost_formula FROM user_tables WHERE table_name = 'T';
IO_COST_FORMULA
---------------
152--相差2,不知道为什么?没有包括cpu的cost吗?
SCOTT@test> Select * from sys.aux_stats$;
SNAME PNAME PVAL1 PVAL2
------------------------------ ------------------------------ ----------- ------------------------------
SYSSTATS_INFO STATUS COMPLETED
SYSSTATS_INFO DSTART 10-14-2013 12:01
SYSSTATS_INFO DSTOP 10-14-2013 12:01
SYSSTATS_INFO FLAGS 1.0000
SYSSTATS_MAIN CPUSPEEDNW 1618.0000
SYSSTATS_MAIN IOSEEKTIM 9.0000
SYSSTATS_MAIN IOTFRSPEED 88419.0000
SYSSTATS_MAIN SREADTIM
SYSSTATS_MAIN MREADTIM
SYSSTATS_MAIN CPUSPEED
SYSSTATS_MAIN MBRC
SYSSTATS_MAIN MAXTHR
SYSSTATS_MAIN SLAVETHR
13 rows selected.
SCOTT@test> ALTER SESSION SET db_file_multiblock_read_count = 42;
Session altered.
SCOTT@test> explain plan for select * from t ;
Explained.
SCOTT@test> @dp
PLAN_TABLE_OUTPUT
---------------------------
Plan hash value: 1601196873
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1029 | 1009K| 38 (3)| 00:00:01 |
| 1 | TABLE ACCESS FULL| T | 1029 | 1009K| 38 (3)| 00:00:01 |
--------------------------------------------------------------------------
8 rows selected.
SELECT ceil(blocks / 42 * ( 9 + 42 * 8192 / 88419 ) / ( 9 + 8192 / 88419 ) ) + 1 AS io_cost_formula
FROM user_tables
WHERE table_name = 'T';
IO_COST_FORMULA
---------------
37
SCOTT@test> show parameter db_file_multiblock_read_count
NAME TYPE VALUE
------------------------------------ ---------------------------------------- --------
db_file_multiblock_read_count integer 128
SCOTT@test> explain plan for select * from t ;
Explained.
SCOTT@test> @dp
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------
Plan hash value: 1601196873
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1029 | 1009K| 144 (1)| 00:00:02 |
| 1 | TABLE ACCESS FULL| T | 1029 | 1009K| 144 (1)| 00:00:02 |
--------------------------------------------------------------------------
8 rows selected.
--以db_file_multiblock_read_count=128计算.
SELECT ceil(blocks / 128 * ( 9 + 128 * 8192 / 88419 ) / ( 9 + 8192 / 88419 ) ) + 1 AS io_cost_formula
FROM user_tables
WHERE table_name = 'T'
IO_COST_FORMULA
---------------
20
--以db_file_multiblock_read_count=8计算.
SELECT ceil(blocks / 8 * ( 9 + 8 * 8192 / 88419 ) / ( 9 + 8192 / 88419 ) ) + 1 AS io_cost_formula
FROM user_tables
WHERE table_name = 'T'
IO_COST_FORMULA
---------------
143
SCOTT@test> explain plan for select * from t ;
Explained.
SCOTT@test> @dp '' ''
PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------
Plan hash value: 1601196873
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1029 | 1009K| 21 (5)| 00:00:01 |
| 1 | TABLE ACCESS FULL| T | 1029 | 1009K| 21 (5)| 00:00:01 |
--------------------------------------------------------------------------
8 rows selected.
SELECT ceil(blocks / 128 * ( 9 + 128 * 8192 / 88419 ) / ( 9 + 8192 / 88419 ) ) + 1 AS io_cost_formula
FROM user_tables
WHERE table_name = 'T'
IO_COST_FORMULA
---------------
20
SCOTT@test> explain plan for select * from t ;
Explained.
SCOTT@test> @dp '' ''
PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------
Plan hash value: 1601196873
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1029 | 1009K| 38 (3)| 00:00:01 |
| 1 | TABLE ACCESS FULL| T | 1029 | 1009K| 38 (3)| 00:00:01 |
--------------------------------------------------------------------------
8 rows selected.
SELECT ceil(blocks / 42 * ( 9 + 42 * 8192 / 88419 ) / ( 9 + 8192 / 88419 ) ) + 1 AS io_cost_formula
FROM user_tables
WHERE table_name = 'T'
IO_COST_FORMULA
---------------
37
SCOTT@test> show parameter db_file_multiblock_read_count
NAME TYPE VALUE
------------------------------------ ---------------------------------------- ------
db_file_multiblock_read_count integer 8