TPC-Hの環境をKingstonのお買い得SSD4本で構築したRAID-0に構築した。
以前のCrystalDiskMarkの結果は以下のとおりだった(SATA直結のRAID-0、exFAT 512K):
比較対象としたのは、Western Digital社のWD6000HLHX。SATAIII 6Gb/秒で接続可能な10,000 RPMハードドライブ
CrystalDiskMarkの結果は以下のとおりだった:
150万件のORDERSを外部表として使う:
SQL> desc orders
名前 NULL? 型
----------------------------------------- -------- ----------------------------
O_ORDERDATE DATE
O_ORDERKEY NOT NULL NUMBER
O_CUSTKEY NOT NULL NUMBER
O_ORDERPRIORITY CHAR(15)
O_SHIPPRIORITY NUMBER
O_CLERK CHAR(15)
O_ORDERSTATUS CHAR(1)
O_TOTALPRICE NUMBER
O_COMMENT VARCHAR2(79)
SQL> select count(*) from orders;
COUNT(*)
----------
1500000
Parallel度は4でテストを行った:
SQL> alter session force parallel query parallel 4;
テストSQL:
SQL> select * from orders where O_COMMENT like '%abcde%';
| 内部表 | 外部表 | |
| SSD | 0.82秒 | 2.15秒 |
| HDD | 3.08秒 | 2.74秒 |
テストは、外部表を作成後マシンのリブートを行い、すべてのキャッシュをクリア後の1回目の結果を取った。
結果Full Scanに於いて、
SSDの内部表、通常のテーブル、が圧倒的に速い。
HDD上では内部も外部も速度は変わらない。
SSDの外部表がHDDの内部表よりも速い。
150万件のORDERテーブルでもdirect path readでScanすると「いずれにせよ高速」だということが分かる。
外部表作成SQLとテストSQLの実行計画:
SQL> CREATE TABLE orders_xt
2 ORGANIZATION EXTERNAL
3 (
4 TYPE ORACLE_DATAPUMP
5 DEFAULT DIRECTORY UNLOADER_DATA
6 LOCATION ( 'orders_xt.dmp' )
7 )
8 AS
9 SELECT *
10 FROM orders;
内部表
--------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib |
--------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 75000 | 8203K| 568 (2)| 00:00:07| | | |
| 1 | PX COORDINATOR | | | | | | | | |
| 2 | PX SEND QC (RANDOM)| :TQ10000 | 75000 | 8203K| 568 (2)| 00:00:07| Q1,00 | P->S | QC (RAND) |
| 3 | PX BLOCK ITERATOR | | 75000 | 8203K| 568 (2)| 00:00:07| Q1,00 | PCWC | |
|* 4 | TABLE ACCESS FULL| ORDERS | 75000 | 8203K| 568 (2)| 00:00:07| Q1,00 | PCWP | |
--------------------------------------------------------------------------------------------------------------
外部表
------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib |
------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 20 | 2780 | 3 (0)| 00:00:01 | | | |
| 1 | PX COORDINATOR | | | | | | | | |
| 2 | PX SEND QC (RANDOM) | :TQ10000 | 20 | 2780 | 3 (0)| 00:00:01 | Q1,00 | P->S | QC (RAND) |
| 3 | PX BLOCK ITERATOR | | 20 | 2780 | 3 (0)| 00:00:01 | Q1,00 | PCWC | |
|* 4 | EXTERNAL TABLE ACCESS FULL| ORDERS_XT | 20 | 2780 | 3 (0)| 00:00:01 | Q1,00 | PCWP | |
------------------------------------------------------------------------------------------------------------------------
最後に、
TPC-HのORDERSを外部表とするのはリアリティがある。
CSVで定期的に注文情報が更新されそのままDWHに反映されるシステムはスマートだ。
Recent comments
17 weeks 1 day ago
26 weeks 6 days ago
28 weeks 4 days ago
31 weeks 6 days ago
34 weeks 23 hours ago
43 weeks 4 days ago
45 weeks 1 day ago
46 weeks 1 day ago
46 weeks 2 days ago
49 weeks 17 hours ago