はじめに
Swingbench でスキーマを作成する際に設定できるオプションを整理しました。
[opc@gp labs]$ ./swingbench/bin/oewizard -h
usage: parameters:
-allindexes build all indexes for schema
-async_off run without async transactions
-async_on run with async transactions (default)
-bigfile use big file tablespaces
-bs <size> the batch size of rows inserted into the database
-c <filename> wizard config file
-cf <file> the location of a credentials file for Oracle
Autonomous Database
-cl run in character mode
-compositepart use a composite paritioning model if it exisits
-compress use default compression model if it exists
-constraints only create primary/foreign keys for schema
-create create benchmarks schema
-cs <connectString> connectring for database
-dba <username> dba username for schema creation
-dbap <password> password for schema creation
-debug turn on debugging output
-debugf <debugfile> turn on debugging. Write output to <debugfile>
defaults to debug.log
-df <datafile> datafile name used to create schema in
-drop drop benchmarks schema
-dt <driverType> driver type (oci|thin)
-g run in graphical mode (default)
-generate generate data for benchmark if available
-h,--help print this message
-hashpart use hash paritioning model if it exists
-hcccompress use HCC compression if it exisits
-idf <datafile> index datafile used to create indexes in
-its <datafile> index tablespace used to create indexes in
-nc Don't use color output
-nocompress don't use any database compression
-noindexes don't build any indexes for schema
-nopart don't use any database partitioning
-normalfile use normal file tablespaces
-oltpcompress use OLTP compression if it exisits
-ot <output type> output type (json or std), defaults to std
-p <password> password for benchmark schema
-part use default paritioning model if it exists
-rangepart use a range paritioning model if it exisits
-ro reverse the order in which data is generated
(smallest first)
-s run in silent mode
-scale <scale> mulitiplier for default config
-sp <soft partitions> the number of softparitions used. Defaults to cpu
count
-tc <thread count> the number of threads(parallelism) used to
generate data. Defaults to cpus*2
-ts <tablespace> tablespace to create schema in
-u <username> username for benchmark schema
-v run in verbose mode when running from command
line
-version <version> version of the benchmark to run
[opc@gp labs]$
以降の動作確認は oewizard で行っていますが、shwizard, tpccwizard, tpcdswizard, tpchwizard のいずれも同じオプションが設定できそうです。
DB は Oracle Autonomous AI Database 26ai を使用しています。
基本設定
create
スキーマ作成時に設定するオプションです。作成されるオブジェクトは以下の通り。
SQL> select object_type,object_name from dba_objects where owner='SOE' order by 1,2;
OBJECT_TYPE OBJECT_NAME
_______________ __________________________
INDEX ADDRESS_CUST_IX
INDEX ADDRESS_PK
INDEX CARDDETAILS_CUST_IX
INDEX CARD_DETAILS_PK
INDEX CUSTOMERS_PK
INDEX CUST_ACCOUNT_MANAGER_IX
INDEX CUST_DOB_IX
INDEX CUST_EMAIL_IX
INDEX CUST_FUNC_LOWER_NAME_IX
INDEX INVENTORY_PK
INDEX INV_PRODUCT_IX
INDEX INV_WAREHOUSE_IX
INDEX ITEM_ORDER_IX
INDEX ITEM_PRODUCT_IX
INDEX ORDER_ITEMS_PK
INDEX ORDER_PK
INDEX ORD_CUSTOMER_IX
INDEX ORD_ORDER_DATE_IX
INDEX ORD_SALES_REP_IX
INDEX ORD_WAREHOUSE_IX
INDEX PRD_DESC_PK
INDEX PRODUCT_INFORMATION_PK
INDEX PROD_CATEGORY_IX
INDEX PROD_NAME_IX
INDEX PROD_SUPPLIER_IX
INDEX WAREHOUSES_PK
INDEX WHS_LOCATION_IX
PACKAGE ORDERENTRY
PACKAGE BODY ORDERENTRY
PROCEDURE AUTONOMOUSLOGON
SEQUENCE ADDRESS_SEQ
SEQUENCE CARD_DETAILS_SEQ
SEQUENCE CUSTOMER_SEQ
SEQUENCE LOGON_SEQ
SEQUENCE ORDERS_SEQ
TABLE ADDRESSES
TABLE CARD_DETAILS
TABLE CUSTOMERS
TABLE INVENTORIES
TABLE LOGON
TABLE ORDERENTRY_METADATA
TABLE ORDERS
TABLE ORDER_ITEMS
TABLE PRODUCT_DESCRIPTIONS
TABLE PRODUCT_INFORMATION
TABLE WAREHOUSES
VIEW PRODUCTS
VIEW PRODUCT_PRICES
48 rows selected.
ER図で示すと下記のようになります。
drop
スキーマ削除時に設定するオプションです。
generate
データのみを生成する際に設定するオプションです。
s
対話なしのサイレントモードで実行する際に設定するオプションです。
cl
CUI で実行する際に設定するオプションです。
GUI がデフォルトなので、ターミナルから実行する際は忘れずに設定するようにしましょう。
g
GUI で実行する際に設定するオプションです。
h, --help
設定可能なオプションを一覧表示します。
version
実行するベンチマークのバージョンを指定します。
接続設定
cs
DB の接続文字列を設定します。
ADB の場合、下記の画面から確認できる TNS名を設定します。
-cs xx_tp
u
ベンチマークスキーマのユーザ名を設定します。
p
ベンチマークスキーマのパスワードを設定します。
dba
スキーマ作成用の DBAユーザー名を設定します。
ADB であれば、必要な権限を付与したユーザや ADMIN など。
dbap
スキーマ作成用の DBAパスワードを設定します。
dt
ドライバーの種類 (oci or thin) を設定します。
cf
ADB の資格情報ファイル (Wallet_xx.zip) のパスを設定します。
-cf ~/instantclient_19_10/network/admin/xx/Wallet_xx.zip
スケール・パフォーマンス設定
c
ウィザードの設定ファイルがある場合は設定します。
scale
スケールファクタを設定します。
scale 1の時とscale 2の時を比較すると以下の通りで、INVENTORIES, ORDERENTRY_METADATA, PRODUCT_DESCRIPTIONS, PRODUCT_INFORMATION, WAREHOUSES 以外は件数がおよそ倍になっています。
Data Generation Runtime Metrics
+-------------------------+-------------+
| Description | Value |
+-------------------------+-------------+
| Connection Time | 0:00:00.001 |
| Data Generation Time | 0:08:05.923 |
| DDL Creation Time | 0:01:00.289 |
| Total Run Time | 0:09:06.220 |
| Rows Inserted per sec | 32,649 |
| Actual Rows Generated | 15,791,721 |
| Commits Completed | 805 |
| Batch Updates Completed | 78,974 |
+-------------------------+-------------+
SQL> select table_name,num_rows from dba_tables where owner='SOE' order by 1;
TABLE_NAME NUM_ROWS
_______________________ ___________
ADDRESSES 1500000
CARD_DETAILS 1500000
CUSTOMERS 1000000
INVENTORIES 899625
LOGON 2382984
ORDERENTRY_METADATA 0
ORDERS 1429790
ORDER_ITEMS 7076322
PRODUCT_DESCRIPTIONS 1000
PRODUCT_INFORMATION 1000
WAREHOUSES 1000
11 rows selected.
SQL>
Data Generation Runtime Metrics
+-------------------------+-------------+
| Description | Value |
+-------------------------+-------------+
| Connection Time | 0:00:00.001 |
| Data Generation Time | 0:12:34.323 |
| DDL Creation Time | 0:01:42.876 |
| Total Run Time | 0:14:17.205 |
| Rows Inserted per sec | 40,866 |
| Actual Rows Generated | 30,670,948 |
| Commits Completed | 1,549 |
| Batch Updates Completed | 153,370 |
+-------------------------+-------------+
SQL> select table_name,num_rows from dba_tables where owner='SOE' order by 1;
TABLE_NAME NUM_ROWS
_______________________ ___________
ADDRESSES 3000000
CARD_DETAILS 3000000
CUSTOMERS 2000000
INVENTORIES 898120
LOGON 4765968
ORDERENTRY_METADATA 0
ORDERS 2859580
ORDER_ITEMS 14144280
PRODUCT_DESCRIPTIONS 1000
PRODUCT_INFORMATION 1000
WAREHOUSES 1000
11 rows selected.
tc
データ生成に使用するスレッド数を設定します。
bs
データ挿入時のバッチサイズを設定します。
sp
使用するソフトパーティションの数を設定します。
async_on
非同期トランザクションを有効にします。(デフォルト)
async_off
非同期トランザクションを無効にます。
ro
データの生成順序を逆にします。(小さいテーブルから生成)
ストレージ設定
ts
スキーマを作成する表領域を設定します。
df
スキーマ作成に使用するデータファイル名を設定します。
its
インデックスを作成する表領域を設定します。
idf
インデックス作成に使用するデータファイル名を設定します。
bigfile
BIGFILE表領域を有効にします。
normalfile
SMALLFILE表領域を有効にします。
パーティション設定
part
デフォルトのパーティショニングモデルを使用します。(存在する場合)
nopart
パーティショニングを使用しません。
hashpart
ハッシュ・パーティショニングを使用します。
scale 1の場合、32 のパーティションが作成されました。
SQL> select table_name,partitioning_type,partition_count from dba_part_tables where owner='SOE' order by 1;
TABLE_NAME PARTITIONING_TYPE PARTITION_COUNT
_______________ ____________________ __________________
ADDRESSES HASH 32
CARD_DETAILS HASH 32
CUSTOMERS HASH 32
LOGON HASH 32
ORDERS HASH 32
ORDER_ITEMS HASH 32
6 rows selected.
SQL>
SQL> select * from dba_part_key_columns where owner='SOE' order by name;
OWNER NAME OBJECT_TYPE COLUMN_NAME COLUMN_POSITION COLLATED_COLUMN_ID
________ _______________ ______________ ______________ __________________ _____________________
SOE ADDRESSES TABLE ADDRESS_ID 1
SOE CARD_DETAILS TABLE CUSTOMER_ID 1
SOE CUSTOMERS TABLE CUSTOMER_ID 1
SOE LOGON TABLE CUSTOMER_ID 1
SOE ORDERS TABLE ORDER_ID 1
SOE ORDER_ITEMS TABLE ORDER_ID 1
6 rows selected.
SQL>
rangepart
レンジ・パーティショニングを使用します。
compositepart
コンポジット・パーティショニングを使用します。
圧縮設定
compress
デフォルトの圧縮モデルを使用します。(存在する場合)
nocompress
圧縮を使用しません。
oltpcompress
OLTP圧縮を使用します。
ディクショナリ表で確認すると、ORDERENTRY_METADATA を除いて圧縮されていました。
SQL> r
1* select table_name,compression,compress_for from dba_tables where owner='SOE' order by 1;
TABLE_NAME COMPRESSION COMPRESS_FOR
_______________________ ______________ _______________
ADDRESSES ENABLED ADVANCED
CARD_DETAILS ENABLED ADVANCED
CUSTOMERS ENABLED ADVANCED
INVENTORIES ENABLED ADVANCED
LOGON ENABLED ADVANCED
ORDERENTRY_METADATA DISABLED
ORDERS ENABLED ADVANCED
ORDER_ITEMS ENABLED ADVANCED
PRODUCT_DESCRIPTIONS ENABLED ADVANCED
PRODUCT_INFORMATION ENABLED ADVANCED
WAREHOUSES ENABLED ADVANCED
11 rows selected.
SQL>
hcccompress
HCC圧縮を使用します。
oltpcompressと同様、ORDERENTRY_METADATA を除いて圧縮されており、圧縮タイプはQUERY HIGHでした。
SQL> r
1* select table_name,compression,compress_for from dba_tables where owner='SOE' order by 1;
TABLE_NAME COMPRESSION COMPRESS_FOR
_______________________ ______________ _______________
ADDRESSES ENABLED QUERY HIGH
CARD_DETAILS ENABLED QUERY HIGH
CUSTOMERS ENABLED QUERY HIGH
INVENTORIES ENABLED QUERY HIGH
LOGON ENABLED QUERY HIGH
ORDERENTRY_METADATA DISABLED
ORDERS ENABLED QUERY HIGH
ORDER_ITEMS ENABLED QUERY HIGH
PRODUCT_DESCRIPTIONS ENABLED QUERY HIGH
PRODUCT_INFORMATION ENABLED QUERY HIGH
WAREHOUSES ENABLED QUERY HIGH
11 rows selected.
SQL>
インデックス・制約設定
allindexes
スキーマのすべてのインデックスを作成します。
noindexes
スキーマのインデックスを作成しません。
constraints
スキーマの主キー・外部キー制約のみ作成します。
出力設定
v
CUI で実行した際に詳細ログを出力します。
debug
デバッグ出力を有効にします。
debugf
デバッグ出力を有効にし、指定されたパスに出力します。
ot
出力形式 (json or std) を設定します。
nc
カラー出力を無効にします。
Swingbench を使って色々な実験をしてみましょう!


