--From
http://ocpdba.wordpress.com/2010/11/09/how-hash-partition-algorithm-works/
SQL> create table hashtab (
2 col1 number,
3 col2 number,
4 col3 number)
5 partition by hash (col1) partitions 4;
Table created.
SQL> @C:\Users\anandy\Scripts\loop.sql
PL/SQL procedure successfully completed.
SQL> exec dbms_stats.gather_table_stats('SCOTT','HASHTAB');
PL/SQL procedure successfully completed.
SQL> select partition_name, num_rows from user_tab_partitions where table_name='
HASHTAB';
PARTITION_NAME NUM_ROWS
------------------------------ ----------
SYS_P41 2473
SYS_P42 2488
SYS_P43 2532
SYS_P44 2507
SQL> drop table hashtab;
Table dropped.
SQL> create table hashtab (
2 col1 number,
3 col2 number,
4 col3 number)
5 partition by hash (col2) partitions 4;
Table created.
SQL> @C:\Users\anandy\Scripts\loop.sql
PL/SQL procedure successfully completed.
SQL> exec dbms_stats.gather_table_stats('SCOTT','HASHTAB');
PL/SQL procedure successfully completed.
SQL> select partition_name, num_rows from user_tab_partitions where table_name='
HASHTAB';
PARTITION_NAME NUM_ROWS
------------------------------ ----------
SYS_P45 2330
SYS_P46 2450
SYS_P47 2610
SYS_P48 2610
SQL> drop table hashtab;
Table dropped.
SQL> create table hashtab (
2 col1 number,
3 col2 number,
4 col3 number)
5 partition by hash (col3) partitions 4;
Table created.
SQL> @C:\Users\anandy\Scripts\loop.sql
PL/SQL procedure successfully completed.
SQL> exec dbms_stats.gather_table_stats('SCOTT','HASHTAB');
PL/SQL procedure successfully completed.
SQL> select partition_name, num_rows from user_tab_partitions where table_name='
HASHTAB';
PARTITION_NAME NUM_ROWS
------------------------------ ----------
SYS_P49 0
SYS_P50 2500
SYS_P51 2500
SYS_P52 5000
SQL>
--Script to insert data
begin
for i in 1..10000 loop
insert into hashtab values(dbms_random.random,mod(i,1000),mod(i,4));
end loop;
end;
/
No comments:
Post a Comment