SlideShare une entreprise Scribd logo
1  sur  82
JPOUG 15minute #9
Autonomous Database で
Oracle Database 19c 新機能 を 味わう。
柴田 歩
2
自己紹介(柴田 歩)
 日本オラクル株式会社
クラウド・テクノロジーコンサルティング事業本部
シニアプリンシパルコンサルタント
柴田 歩(しばた あゆむ)
 2007年4月に中途で日本オラクルに入社
 DBの製品コンサルとして、DB関連のプロジェクトを歴任
 やきうのお兄ちゃん な DBエンジニアとして暗躍中!彡(^)(^)
– ねら~ITエンジニア雑記
http://d.hatena.ne.jp/gonsuke777/
– Twitter @ora_gonsuke777
2
3
 Oracle Databaseを中心とした座談
会’19 – Oracle Code Tokyo 2019
開催報告(パネリスト)
 http://www.jpoug.org/2019/09/17/c
odetokyo19report
 Oracle Database or GoldenGate
Advent Calendar 2018
 https://adventar.org/calendars/3525
 デモとディスカッションで体験する
Oracle DBトラブル対応(2018年)
 https://www.slideshare.net/shibataay
umu/oracle-db-111087832
 - JPOUG Advent Calendar 2017
Day 15 - V$SQLとその周辺でER図
を描いてみよう!
 https://www.slideshare.net/shibataay
umu/vsqler
 DDD 2013 SQLチューニングに
必要な考え方と最新テクニック
 http://www.oracle.com/technetwo
rk/jp/ondemand/ddd-2013-
2051348-ja.html
コレ
 ブログ「ねら~ITエンジニア雑記」
 http://d.hatena.ne.jp/gonsuke777/
• DDD 2016 SQL性能を最大限に引き出す
DB 12cクエリー・オプティマイザ 新機
能活用と統計情報運用の戦略
• http://www.oracle.com/technetwork/jp/on
demand/ddd-2016-3373953-ja.html
コレ
過去コンテンツ
4
免責事項/注意事項/おことわり
 本資料において示されている見解は、私自身の
“独自研究”, ”独自検証”, ”独自解釈”
に基づいた、個人的な見解となります。
 従って本資料は Oracle Corporation 及び 日本オラクル
の公式見解を必ずしも反映したものではなく、
マニュアル・サポートサイト等で公開されている情報や
実際の製品仕様・動作と異なる可能性があります。
 この点は予めご了承ください。
 資料は(一部スライドを修正して)公開します。
5
目次
1. はじめに
2. Automatic Indexeing の Feedback
3. Hybrid Partition の Feedback
4. オプティマイザ統計系の新機能Feedback
5. まとめ
6
1. はじめに
7
Oracle Database 19c
新機能検証したろwww
Oracle Database 19c 出たての頃のワイ……
8
マニュアル(19c ライセンス情報)
9
ファッ!!!!?????
10
注目の新機能は軒並み Engineered System専用!
(MMRの有名なシーンを思い浮かべながら……)
キバヤシ「19cの注目新機能は、
軒並みExadat専用だ!」
MMRの面々「な…なんだってー!!!」
11
捨てる神あれば、
拾う神有り!
だがちょっと待って欲しい……
12
Oracle Cloud Always Free が登場!
13
Exadata で動作する Autonomous Database
Oracle
Database
Technology
Night資料
より
14
よっしゃ Always Free の
Autonomous Database で 19c検証したろ!
15
ファッ!!!!????? ※判り難いですがグレーアウトしてる
16
注目の新機能は軒並み Engineered System専用!
(進撃の巨人の「何の成果も!!!得られませんでした!!!」
を思い浮かべながら……)
キース団長「Always Freeだと!!!
19c Preview版が使えませんでし
た!!!」
17
今回は某所(有償)の 19c Preview環境で検証
 今回は某所で借りた(有償の)Autonomous Database
19c Preview環境で検証しています。
 近い将来 Always Free でも 19c が使えるようになると
思うので、それまで皆さん正座待機して下さいね彡(-)(-)
18
2. Automatic Indexing
の 検証結果Feedback
19
Swingbenchで負荷掛けして、
Automatic Indexing動作前後
の傾向を比較
※具体的な数字は提示するとアレなので
前後の比率を提示
Automatic Indexing の 検証方法
20
検証環境
 Compute(Oracle Linux 7.7), VM.Standard2.1(1oCPU)
 Autonomous Transaction Processing(ATP)
19c Preview, 2oCPU, Autoscaling有り
Compute
(Swingbench)
Tokyo Region(and AD1)
VCN
Autonomous
Database(ATP)
IGW
ssh JDBC Thin
Subnet
21
Swingbenchの設定
 Data Scale は 10(約10GB分) を指定
 Automatic Indexingの効果を見るために、PK以外の索引を削除
 Swingbench の 仮想ユーザー数は 6 で SOE V2 で負荷かけ
DROP INDEX SOE.WHS_LOCATION_IX;
DROP INDEX SOE.INV_PRODUCT_IX;
DROP INDEX SOE.INV_WAREHOUSE_IX;
DROP INDEX SOE.ADDRESS_CUST_IX;
DROP INDEX SOE.ITEM_ORDER_IX;
DROP INDEX SOE.ITEM_PRODUCT_IX;
DROP INDEX SOE.ORD_SALES_REP_IX;
DROP INDEX SOE.ORD_CUSTOMER_IX;
DROP INDEX SOE.ORD_ORDER_DATE_IX;
DROP INDEX SOE.ORD_WAREHOUSE_IX;
:
:
./charbench -c ../configs/SOE_Server_Side_V2.xml 
-cf /home/opc/work/Wallet_ATPAYSHIBAT02.zip 
-cs atpayshibat02_tp 
-u soe 
-p xxxxxxxxxx 
-uc 6 
-v users,tpm,tps,vresp,dml 
-rt 0:20
:
22
Automatic Indexing の 有効化
 DBMS_AUTO_INDEX.CONFIGUREプロシージャで有効化
 実行後の関連設定(DBA_AUTO_INDEX_CONFIGビュー)
EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT');
SELECT PARAMETER_NAME, PARAMETER_VALUE FROM DBA_AUTO_INDEX_CONFIG;
PARAMETER_NAME PARAMETER_VALUE
---------------------------------- -----------------
AUTO_INDEX_COMPRESSION ON
AUTO_INDEX_DEFAULT_TABLESPACE
AUTO_INDEX_MODE IMPLEMENT
AUTO_INDEX_REPORT_RETENTION 373
AUTO_INDEX_RETENTION_FOR_AUTO 373
AUTO_INDEX_RETENTION_FOR_MANUAL
AUTO_INDEX_SCHEMA
AUTO_INDEX_SPACE_BUDGET 100
23
Swingbenchスループット(TPM)の比較
 Automatic Indexing後のスループットが向上!
Automatic Indexing動作前 Automatic Indexing動作後
24
SQL実行回数(from AWR)の比較
 Automatic Indexing後のスループットが向上!
Automatic Indexing動作前 Automatic Indexing動作後
25
Top10待機イベント(from AWR)の比較
 どちらも DB CPU が待機イベントの中心
Automatic Indexing動作前 Automatic Indexing動作後
26
DBA_INDEXESディクショナリを参照
 幾つかの索引が自動で作成されている。無効(UNUSABLE)な索引や
有効(VALID)でもINVISIBLE(不可視)な索引もある。
SELECT INDEX_NAME, AUTO, STATUS, VISIBILITY, COMPRESSION FROM DBA_INDEXES
WHERE OWNER = 'SOE' ORDER BY INDEX_NAME;
INDEX_NAME AUT STATUS VISIBILIT COMPRESSION
------------------------------ --- -------- --------- -------------
ADDRESS_PK NO VALID VISIBLE DISABLED
CARD_DETAILS_PK NO VALID VISIBLE DISABLED
:
SYS_AI_20tjdcuwznyhx YES VALID INVISIBLE ADVANCED LOW ★コレ
SYS_AI_2s9jaak2smbq4 YES UNUSABLE INVISIBLE ADVANCED LOW ★コレ
SYS_AI_3z00frhp9vd91 YES VALID INVISIBLE ADVANCED LOW ★コレ
SYS_AI_4bz3nuupj3kt5 YES VALID VISIBLE ADVANCED LOW ★コレ
SYS_AI_5p2zapcmkj174 YES VALID VISIBLE ADVANCED LOW ★コレ
SYS_AI_b9k5zyq0mjwf5 YES UNUSABLE INVISIBLE ADVANCED LOW ★コレ
SYS_AI_dt4w4vr174j9m YES N/A VISIBLE ADVANCED LOW ★コレ
SYS_AI_gbwwy984mc1ft YES VALID VISIBLE ADVANCED LOW ★コレ
27
Automatic Indexing の レポート(1)
 DBMS_AUTO_INDEX.REPORT_ACTIVITYファンクションで
Automatic Indexing の レポートを出力
SET LONG 1000000;
SET LONGC 1000000;
SET LINESIZE 170;
SET PAGESIZE 1000;
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY/MM/DD HH24:MI:SS.FF';
SELECT DBMS_AUTO_INDEX.REPORT_ACTIVITY(
TO_TIMESTAMP('2019/11/23 00:00:00.00’),
TO_TIMESTAMP('2019/11/26 00:00:00.00’),
'TEXT', 'ALL', 'ALL’
) FROM DUAL;
28
Automatic Indexing の レポート(2)
 GENERAL INFORMATIONセクション と SUMMARYセクション
DBMS_AUTO_INDEX.REPORT_ACTIVITY(TO_TIMESTAMP('2019/11/2300:00:00.00’) …
----------------------------------------------------------------------
GENERAL INFORMATION
-------------------------------------------------------------------------------
Activity start : 23-11月-2019 00:00:00
Activity end : 26-11月-2019 00:00:00
Executions completed : 77
Executions interrupted : 0
Executions with fatal error : 0
-------------------------------------------------------------------------------
SUMMARY (AUTO INDEXES)
-------------------------------------------------------------------------------
Index candidates : 8
Indexes created (visible / invisible) : 6 (4 / 2)
Space used (visible / invisible) : 1.43 GB (1.18 GB / 251.72 MB)
Indexes dropped : 0
SQL statements verified : 14
SQL statements improved (improvement factor) : 5 (1639.7x)
SQL plan baselines created : 0
Overall improvement factor : 4.9x
-------------------------------------------------------------------------------
29
Automatic Indexing の レポート(3)
 MANUL INDEXESセクション と INDEX DETAILSセクション
SUMMARY (MANUAL INDEXES)
-------------------------------------------------------------------------------
Unused indexes : 0
Space used : 0 B
Unusable indexes : 0
-------------------------------------------------------------------------------
INDEX DETAILS
-------------------------------------------------------------------------------
1. The following indexes were created:
*: invisible
-------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
| Owner | Table | Index | Key | Type | Properties |
----------------------------------------------------------------------------------------------
| SOE | ADDRESSES | SYS_AI_4bz3nuupj3kt5 | CUSTOMER_ID | B-TREE | NONE |
| SOE | CARD_DETAILS | SYS_AI_dt4w4vr174j9m | CUSTOMER_ID | B-TREE | LOCAL |
| SOE | ORDERS | * SYS_AI_3z00frhp9vd91 | WAREHOUSE_ID | B-TREE | NONE |
| SOE | ORDERS | SYS_AI_5p2zapcmkj174 | CUSTOMER_ID | B-TREE | NONE |
| SOE | ORDERS | SYS_AI_gbwwy984mc1ft | SALES_REP_ID | B-TREE | NONE |
| SOE | PRODUCT_DESCRIPTIONS | * SYS_AI_20tjdcuwznyhx | PRODUCT_ID | B-TREE | NONE |
----------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------
30
Automatic Indexing の レポート(4)
 VERIFICATIONセクション(抜粋)
VERIFICATION DETAILS
-------------------------------------------------------------------------------
1. The performance of the following statements improved:
-------------------------------------------------------------------------------
Parsing Schema Name : SOE
SQL ID : 29qp10usqkqh0
SQL Text : SELECT TT.ORDER_TOTAL, TT.SALES_REP_ID, TT.ORDER_DATE,
CUSTOMERS.CUST_FIRST_NAME, CUSTOMERS.CUST_LAST_NAME FROM
(SELECT ORDERS.ORDER_TOTAL, ORDERS.SALES_REP_ID,
ORDERS.ORDER_DATE, ORDERS.CUSTOMER_ID, RANK() OVER (ORDER
BY ORDERS.ORDER_TOTAL DESC) SAL_RANK FROM ORDERS WHERE
ORDERS.SALES_REP_ID = :B1 ...
Improvement Factor : 683.4x
Execution Statistics:
-----------------------------
Original Plan Auto Index Plan
---------------------------- ----------------------------
Elapsed Time (s): 1235522012 13024
CPU Time (s): 1231284830 9898
Buffer Gets: 257075897 590
Optimizer Cost: 5174 1222
Disk Reads: 0 3
Direct Writes: 0 0
Rows Processed: 551468 12
Executions: 816 1
31
Automatic Indexing の レポート(5)
 PLANS SECTION(抜粋)
PLANS SECTION
----------------------------------------------------------------
- Original
-----------------------------
Plan Hash Value : 2280072513
----------------------------------------------------------------
| Id | Operation | Name |
----------------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | HASH JOIN | |
| 2 | JOIN FILTER CREATE | :BF0001 |
| 3 | PART JOIN FILTER CREATE | :BF0000 |
| 4 | NESTED LOOPS | |
| 5 | NESTED LOOPS | |
| 6 | STATISTICS COLLECTOR | |
| 7 | VIEW | |
| 8 | WINDOW SORT PUSHED RANK | |
| 9 | PARTITION HASH ALL | |
| 10 | TABLE ACCESS STORAGE FULL | ORDERS |
| 11 | INDEX UNIQUE SCAN | CUSTOMERS_PK |
| 12 | TABLE ACCESS BY GLOBAL INDEX ROWID | CUSTOMERS |
| 13 | JOIN FILTER USE | :BF0001 |
| 14 | PARTITION HASH JOIN-FILTER | |
| 15 | TABLE ACCESS STORAGE FULL | CUSTOMERS |
----------------------------------------------------------------
- With Auto Indexes
-----------------------------
Plan Hash Value : 3608924074
---------------------------------------------------------------------------------
| Id | Operation | Name |
---------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | NESTED LOOPS | |
| 2 | NESTED LOOPS | |
| * 3 | VIEW | |
| * 4 | WINDOW SORT PUSHED RANK | |
| 5 | TABLE ACCESS BY GLOBAL INDEX ROWID BATCHED | ORDERS |
| * 6 | INDEX RANGE SCAN | SYS_AI_gbwwy984mc1ft |
| * 7 | INDEX UNIQUE SCAN | CUSTOMERS_PK |
| 8 | TABLE ACCESS BY GLOBAL INDEX ROWID | CUSTOMERS |
---------------------------------------------------------------------------------
32
動いてるぞ!!!(小並
良くなってるぞ!!!(小並2
Automatic Indexing の 検証結果
33
Automatic Indexing の 検証雑感
 まずは動いた事に一安心(新機能は色々アレなんで…
 15分~20分ごとにバックグラウンドで何かが
動いている模様?(マニュアル記述は15分)
 従来は人間が Try&Error で作成していた索引を、
RDBMS が自動計測して付与するのは画期的!
 自動作成された索引は手動では削除不可で、
詳細なログ等も無いので、Blackbox感は凄いwwwww
34
Automatic Indexing の 参考ドキュメント
 Oracle Database データベース管理者ガイド 19c
– 21.7 自動索引の管理
https://docs.oracle.com/cd/F19136_01/admin/managing-indexes.html#GUID-
D1285CD5-95C0-4E74-8F26-A02018EA7999
 Oracle Database PL/SQLパッケージおよびタイプ・リファレンス 19c
– 30 DBMS_AUTO_INDEX
– https://docs.oracle.com/cd/F19136_01/arpls/DBMS_AUTO_INDEX.html#GUID-
78C59A20-2F92-448F-96F7-6C4FBB355E42
35
3. Hybrid Partition の
Feedback
36
Hybrid Partition とは?
 パーティションの一部を外部表(EXTERNAL TABLE)
として定義することができる 19c の 新機能
Partition
P201901
Partition
P201902
Partition
P201903
Partition
P201904
File
(External Table) Database
Hybrid
Partition表
37
Autonomous Database の Hybrid Partition
 Object Storage の ファイル を Hybrid Partition の
外部表(EXTERNAL TABLE)として定義することが可能
Partition
P201901
Partition
P201902
Partition
P201903
Partition
P201904
Database
Hybrid
Partition表
Object
Storage
38
Object Storage
にファイル格納して、
Autonomous Databaseで
Hybrid Partition
を定義してみる。
Hybrid Partition の 検証方法
39
Hybrid Partition の 検証構成
 P100, P200 のデータを Object Storage に格納
 P300, P400 のデータは Autonomous Database に格納
Partition
P100
Partition
P200
Partition
P300
Partition
P400
Autonomous Database
Hybrid
Partition表
Object Storage
40
Object Storage に 格納したデータ
 数値, 文字列, 日付書式文字列の単純なデータ
 gzip圧縮して Object Storage にアップロード
"ID","HYBRID_STR","HYBRID_DATE"
1,"STR1",2019/12/01 00:00:01
2,"STR2",2019/12/01 00:00:02
3,"STR3",2019/12/01 00:00:03
4,"STR4",2019/12/01 00:00:04
5,"STR5",2019/12/01 00:00:05
6,"STR6",2019/12/01 00:00:06
7,"STR7",2019/12/01 00:00:07
8,"STR8",2019/12/01 00:00:08
9,"STR9",2019/12/01 00:00:09
:
:
41
Object Storage の Screenshot
 gzip圧縮したファイル を Object Storage にアップロード
42
OCI IAMユーザー の Authtoken を 生成
 おまじない・その1
43
Autonomous Database に IAMユーザーの
Authtoken を 登録(Credential作成)
 おまじない・その2
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'OCI_CLI_AYS_ATP', -- 任意の文字列
username => 'IAM_USER_AYSHIBAT02', -- IAMユーザー名
password => 'xxxxxxxxxxxxxxxxxxx' -- 生成したAuth Token
);
END;
/
44
Hybrid Partition表を作成(DBMS_CLOUD)
 DBMS_CLOUD.CREATE_HYBRID_PART_TABLEプロシージャで
Hybrid Partition表を作成
BEGIN
DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
table_name => 'EXT_HYBRID_TEST', --テーブル名
credential_name => 'OCI_CLI_AYS_ATP', --クレデンシャル名
format => json_object(
'characterset' VALUE 'AL32UTF8' -- 文字コードを指定
, 'recorddelimiter' VALUE '''n''' -- 行区切り文字
, 'type' VALUE 'csv' -- ファイルのタイプを指定
, 'skipheaders' VALUE 1 -- 読み飛ばすヘッダ行数を指定
, 'compression' VALUE 'gzip' -- 圧縮形式を指定
, 'dateformat' VALUE 'YYYY/MM/DD HH24:MI:SS' -- DATE型のフォーマットを指定
) ,
column_list => 'ID NUMBER, ' ||
'HYBRID_STR VARCHAR2(43), ' ||
'HYBRID_DATE DATE' ,
partitioning_clause => 'PARTITION BY RANGE (ID) (' ||
' PARTITION P100 VALUES LESS THAN (101) ' ||
' EXTERNAL LOCATION(''https://objectstorage.ap-tokyo-1…/hybrid_test_p100.csv.gz'') ' ||
' , PARTITION P200 VALUES LESS THAN (201) ' ||
' EXTERNAL LOCATION(''https://objectstorage.ap-tokyo-1…/hybrid_test_p200.csv.gz'') ' ||
' , PARTITION P300 VALUES LESS THAN (301)' ||
' , PARTITION P400 VALUES LESS THAN (401)' ||
')'
);
END;
/
45
Hybrid Partition表にデータをロード
 データベース格納部分(P300, P400)のデータをロード
INSERT INTO EXT_HYBRID_TEST
SELECT LEVEL+200 AS ID
, 'STR' || (LEVEL+200) AS HYBRID_STR
, TO_DATE('20191201', 'YYYYMMDD') + (LEVEL+200)/24/60/60 AS HYBRID_DATE
FROM DUAL
CONNECT BY LEVEL <= 200;
COMMIT;
46
Hybrid Partition表をGET_DDLしてみる。
 Hybrid Partition表をGET_DDLしてみると下記のようになってます。
SELECT DBMS_METADATA.GET_DDL('TABLE','EXT_HYBRID_TEST','AYSHIBAT') FROM DUAL;
CREATE TABLE "AYSHIBAT"."EXT_HYBRID_TEST"
( "ID" NUMBER,
"HYBRID_STR" VARCHAR2(43) COLLATE "USING_NLS_COMP",
"HYBRID_DATE" DATE
) DEFAULT COLLATION "USING_NLS_COMP" EXTERNAL PARTITION ATTRIBUTES
( TYPE ORACLE_LOADER
DEFAULT DIRECTORY "DATA_PUMP_DIR"
ACCESS PARAMETERS
( RECORDS CHARACTERSET AL32UTF8 DELIMITED BY 'n' IGNORE_HEADER=1 COMPRESSION GZIP NOLOGFILE NOBADFILE NODISCARDFILE READSIZE=10000000
CREDENTIAL 'OCI_CLI_AYS_ATP' FIELDS CSV WITHOUT EMBEDDED DATE_FORMAT DATE MASK 'YYYY/MM/DD HH24:MI:SS' NOTRIM )
REJECT LIMIT 0
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
PARTITION BY RANGE ("ID")
(
PARTITION "P100" VALUES LESS THAN (101) EXTERNAL
LOCATION( 'https://objectstorage.ap-tokyo-1.oraclecloud.com/…/hybrid_test_p100.csv.gz'),
PARTITION "P200" VALUES LESS THAN (201) EXTERNAL
LOCATION( 'https://objectstorage.ap-tokyo-1.oraclecloud.com/…/hybrid_test_p200.csv.gz'),
PARTITION "P300" VALUES LESS THAN (301) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "DATA" ,
PARTITION "P400" VALUES LESS THAN (401) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "DATA"
) PARALLEL
47
Hybrid Partition
の実行計画を見てみる。
Hybrid Partition の 実行計画(1)
48
Hybrid Partition の 実行計画(2)
 外部表(ファイル)の Partiiton をプルーニングした場合の実行計画
SELECT COUNT(*) FROM EXT_HYBRID_TEST WHERE ID BETWEEN 1 AND 100;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR());
COUNT(*)
----------
100
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
SQL_ID dwj72nyfta1k4, child number 0
:
Plan hash value: 2802513750
-----------------------------------------------------------...----------------------------------------------
| Id | Operation | Name |...| Pstart| Pstop | TQ |IN-OUT| PQ Distrib |
-----------------------------------------------------------...----------------------------------------------
| 0 | SELECT STATEMENT | |...| | | | | |
| 1 | SORT AGGREGATE | |...| | | | | |
| 2 | PX COORDINATOR | |...| | | | | |
| 3 | PX SEND QC (RANDOM) | :TQ10000 |...| | | Q1,00 | P->S | QC (RAND) |
| 4 | SORT AGGREGATE | |...| | | Q1,00 | PCWP | |
| 5 | PX BLOCK ITERATOR | |...| 1 | 1 | Q1,00 | PCWC | |
|* 6 | EXTERNAL TABLE ACCESS FULL| EXT_HYBRID_TEST |...| 1 | 1 | Q1,00 | PCWP | |
-----------------------------------------------------------...----------------------------------------------
49
Hybrid Partition の 実行計画(3)
 データベースの Partition をプルーニングした場合の実行計画
SELECT COUNT(*) FROM EXT_HYBRID_TEST WHERE ID BETWEEN 201 AND 300;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR());
COUNT(*)
----------
100
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
SQL_ID a22rszz8wn2b3, child number 0
:
Plan hash value: 272980602
----------------------------------------------------------…----------------------------------------------
| Id | Operation | Name |…| Pstart| Pstop | TQ |IN-OUT| PQ Distrib |
----------------------------------------------------------…----------------------------------------------
| 0 | SELECT STATEMENT | |…| | | | | |
| 1 | SORT AGGREGATE | |…| | | | | |
| 2 | PX COORDINATOR | |…| | | | | |
| 3 | PX SEND QC (RANDOM) | :TQ10000 |…| | | Q1,00 | P->S | QC (RAND) |
| 4 | SORT AGGREGATE | |…| | | Q1,00 | PCWP | |
| 5 | PX BLOCK ITERATOR | |…| 3 | 3 | Q1,00 | PCWC | |
|* 6 | TABLE ACCESS STORAGE FULL| EXT_HYBRID_TEST |…| 3 | 3 | Q1,00 | PCWP | |
----------------------------------------------------------…----------------------------------------------
50
Hybrid Partition の 実行計画(4)
 外部表とデータベースを跨るプルーニングをした場合の実行計画
SELECT COUNT(*) FROM EXT_HYBRID_TEST WHERE ID BETWEEN 101 AND 300;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR());
COUNT(*)
----------
200
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
SQL_ID avhgg9pamtg34, child number 0
:
Plan hash value: 598631855
--------------------------------------------------------------...----------------------------------------------
| Id | Operation | Name |...| Pstart| Pstop | TQ |IN-OUT| PQ Distrib |
--------------------------------------------------------------...----------------------------------------------
| 0 | SELECT STATEMENT | |...| | | | | |
| 1 | SORT AGGREGATE | |...| | | | | |
| 2 | PX COORDINATOR | |...| | | | | |
| 3 | PX SEND QC (RANDOM) | :TQ10000 |...| | | Q1,00 | P->S | QC (RAND) |
| 4 | SORT AGGREGATE | |...| | | Q1,00 | PCWP | |
| 5 | PX BLOCK ITERATOR | |...| 2 | 3 | Q1,00 | PCWC | |
|* 6 | TABLE ACCESS HYBRID PART FULL| EXT_HYBRID_TEST |...| 2 | 3 | Q1,00 | PCWP | |
|* 7 | TABLE ACCESS STORAGE FULL | EXT_HYBRID_TEST |...| 2 | 3 | Q1,00 | PCWP | |
--------------------------------------------------------------...----------------------------------------------
51
動いてるぞ!!!(小並3
Hybrid Partition の 検証結果
52
Hybrid Partition on Autonomous DB の 検証雑感
 下記の図のようなData Lake構築に向いた機能
 過去の古いデータをObject Storageに、アクセス頻度の高いホット
なデータをAutonomous Databaseに…といった運用が可能
 ただ現時点(2019年11月)では既存パーティションの定義を変更して
Object Storageを参照させる…というAPIが無いため、今後に期待
53
Hybrid Partition の 参考ドキュメント
 Oracle Database VLDBおよびパーティショニング・ガイド 19c
– ハイブリッド・パーティション表の管理
https://docs.oracle.com/cd/F19136_01/vldbg/manage_hypt.html#GUID-
ACBDB3B2-0A16-4CFD-8FF1-A57C9B3D907F
 Oracle Cloud Using Oracle Autonomous Data Warehouse
– CREATE_HYBRID_PART_TABLE Procedure
https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-
cloud/user/dbms-cloud.html#GUID-AF2965F5-354C-40E4-B2AA-
3C17D9FA507C
54
4. オプティマイザ統計系
の 新機能・検証Feedback
55
オプティマイザ統計系の新機能群
 SQLチューニング・ガイド 19c, 19.1での変更点, 新機能 より
56
「統計ベースの問合せ変換」
「リアルタイム統計」
を検証してみる。
オプティマイザ統計系の新機能を検証
57
統計ベースの問合せ変換 の 仕様(1)
 5.6 統計ベースの問合せ変換(マニュアル記述)
– https://docs.oracle.com/cd/F19136_01/tgsql/query-
transformations.html#GUID-4CB77742-41A2-49D3-A04F-5C79EE237A3A
– 場合によっては、表自体ではなく表統計を問い合せることで、Oracle
Databaseは問合せを満たすことができます。
– 統計ベースの変換の利点は、一般に表統計は表よりもはるかに小さいことで
す。メタデータ問合せのパフォーマンスは、表内の行数に依存しないため、
大規模な表の方がはるかに高速になります。
– (中略)
– 集計のタイプ…たとえば、集計はMIN、MAX、COUNTまたは
APPROXIMATE_COUNT_DISTINCTです。
– (後略)
58
統計ベースの問合せ変換 の 仕様(2)
 5.6 統計ベースの問合せ変換(マニュアル記述)
59
VW_SQT_~
を狙って行く
統計ベースの問合せ変換を動確するには…
60
統計ベースの問合せ変換・テストデータ
 簡単なテストデータを作成(1000万件)して統計採取
CREATE TABLE STATISTICS_TEST
AS SELECT LEVEL AS ID
, 'STR' || LEVEL AS STATISTICS_STR
, TO_DATE('20191201', 'YYYYMMDD') + LEVEL/24/60/60 AS STATISTICS_DATE
FROM DUAL
CONNECT BY LEVEL <= 10000000;
EXEC DBMS_STATS.GATHER_TABLE_STATS('AYSHIBAT', 'STATISTICS_TEST', METHOD_OPT =>
'FOR ALL COLUMNS SIZE AUTO FOR COLUMNS ID SIZE AUTO', NO_INVALIDATE => FALSE,
DEGREE => 6);
61
統計ベースの問合せ変換・SQL実行&PLAN確認
 COUNT(*)なSQLで実行計画を確認したが……
SET LINESIZE 300;
SET PAGESIZE 1000;
SELECT COUNT(*) FROM STATISTICS_TEST;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR());
PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------
SQL_ID 9w2bk9yx44317, child number 0
-------------------------------------
SELECT COUNT(*) FROM STATISTICS_TEST
Plan hash value: 709000224
--------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | 548 (100)| |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS STORAGE FULL| STATISTICS_TEST | 10M| 548 (11)| 00:00:01 |
--------------------------------------------------------------------------------------
62
動いてませんね?
統計ベースの問合せ変換は……
63
統計ベースの問合せ変換・SQL実行&PLAN確認
 MIN や MAXなSQLでも実行計画を確認したけど……
SET LINESIZE 300;
SET PAGESIZE 1000;
SELECT MIN(ID), MAX(ID) FROM STATISTICS_TEST;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR());
PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------
SQL_ID 90gcva4ba5yut, child number 0
-------------------------------------
SELECT MIN(ID), MAX(ID) FROM STATISTICS_TEST
Plan hash value: 709000224
----------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 548 (100)| |
| 1 | SORT AGGREGATE | | 1 | 6 | | |
| 2 | TABLE ACCESS STORAGE FULL| STATISTICS_TEST | 10M| 57M| 548 (11)| 00:00:01 |
----------------------------------------------------------------------------------------------
64
やっぱり
動きませんね???
MIN や MAX でも統計ベースの問合せ変換は……
65
次行ってみましょうか!
人間諦めが肝心なことも…
(スラムダンクの涙に暮れながらコートを去り行く
山王ナイン(5人)を思い浮かべながら……)
堂本監督「負けたことがある
というのが、
いつか大きな財産になる」
66
リアルタイム統計 の 仕様(1)
 10.3.3.3 リアルタイム統計(マニュアル記述)
– https://docs.oracle.com/cd/F19136_01/tgsql/optimizer-statistics-
concepts.html#GUID-769E609D-0312-43A7-9581-3F3EACF10BA9
– Oracle Database 19c以降、データベースでは従来型DML操作の
実行中にリアルタイム統計が自動的に収集されます。
– (中略)
– DML操作で表を変更している場合、Oracle Databaseによって
最も重要な統計の値が動的に計算されます
– (中略)
67
リアルタイム統計 の 仕様(2)
 10.3.3.3 リアルタイム統計(マニュアル記述)
68
DBA_TAB_COL_STATISTICS
や
DBA_TAB_STATISTICS
を追ってみる。
ディクショナリでリアルタイム統計を追跡
69
リアルタイム統計・テストデータ
 簡単なテストデータを作成(10000件)して統計採取
CREATE TABLE STATISTICS_TEST
AS SELECT LEVEL AS ID
, 'STR' || LEVEL AS STATISTICS_STR
, TO_DATE('20191201', 'YYYYMMDD') + LEVEL/24/60/60 AS STATISTICS_DATE
FROM DUAL
CONNECT BY LEVEL <= 10000;
EXEC DBMS_STATS.GATHER_TABLE_STATS('AYSHIBAT', 'STATISTICS_TEST', METHOD_OPT =>
'FOR ALL COLUMNS SIZE AUTO FOR COLUMNS ID SIZE AUTO', NO_INVALIDATE => FALSE,
DEGREE => 6);
70
リアルタイム統計(動作前)・テストデータの表統計
 リアルタイム統計動作前の
表統計(DBA_TAB_STATISTICS)は下記の通り
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS';
SELECT TABLE_NAME, NUM_ROWS, LAST_ANALYZED, NOTES
FROM DBA_TAB_STATISTICS
WHERE TABLE_NAME = 'STATISTICS_TEST'
AND OWNER = 'AYSHIBAT';
TABLE_NAME NUM_ROWS LAST_ANALYZED NOTES
------------------------------ ---------- ------------------- -------------------------
STATISTICS_TEST 10000 2019/12/03 07:56:18
71
リアルタイム統計(動作前)・テストデータの列統計
 リアルタイム統計動作前の
列統計(DBA_TAB_COL_STATISTICS)は下記の通り
SELECT COLUMN_NAME
, NUM_DISTINCT
, LOW_VALUE
, HIGH_VALUE
, NOTES
FROM DBA_TAB_COL_STATISTICS
WHERE TABLE_NAME = 'STATISTICS_TEST'
AND OWNER = 'AYSHIBAT';
COLUMN_NAME NUM_DISTINCT LOW_VALUE HIGH_VALUE NOTES
-------------------- ------------ ---------------------- ----------------------- --------------------------
ID 10000 C102 C302 HYPERLOGLOG
STATISTICS_STR 10000 53545231 53545239393939 HYPERLOGLOG
STATISTICS_DATE 10000 78770C01010102 78770C01032F29 HYPERLOGLOG
72
リアルタイム統計(動作前)・サンプルSQLと実行計画
 リアルタイム統計動作前のサンプルSQLと実行計画は以下の通り
SELECT COUNT(*) FROM STATISTICS_TEST;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR());
:
COUNT(*)
----------
10000
:
PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------------------
SQL_ID 9w2bk9yx44317, child number 0
:
Plan hash value: 709000224
--------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | 2 (100)| |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS STORAGE FULL| STATISTICS_TEST | 10000 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------------------
73
リアルタイム統計・テストデータを追加投入
 テストデータを追加投入(100件)+おまじない
INSERT INTO STATISTICS_TEST
SELECT (LEVEL+10000) AS ID
, 'STR' || (LEVEL+10000) AS
STATISTICS_STR
, TO_DATE('20191201', 'YYYYMMDD') + (LEVEL+10000)/24/60/60 AS
STATISTICS_DATE
FROM DUAL
CONNECT BY LEVEL <= 100;
COMMIT;
EXEC DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;
74
リアルタイム統計(動作後)・テストデータの表統計
 リアルタイム統計動作後の表統計(DBA_TAB_STATISTICS)は
下記の通り、何か追加されてますね……。
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS';
SELECT TABLE_NAME, NUM_ROWS, LAST_ANALYZED, NOTES
FROM DBA_TAB_STATISTICS
WHERE TABLE_NAME = 'STATISTICS_TEST'
AND OWNER = 'AYSHIBAT';
TABLE_NAME NUM_ROWS LAST_ANALYZED NOTES
------------------------------ ---------- ------------------- -------------------------
STATISTICS_TEST 10000 2019/12/03 07:56:18
STATISTICS_TEST 10100 2019/12/03 07:59:20 STATS_ON_CONVENTIONAL_DML
75
リアルタイム統計(動作後)・テストデータの列統計
 リアルタイム統計動作後の列統計(DBA_TAB_COL_STATISTICS)は
下記の通り、こちらにも何か居ますね。。。
SELECT COLUMN_NAME
, NUM_DISTINCT
, LOW_VALUE
, HIGH_VALUE
, NOTES
FROM DBA_TAB_COL_STATISTICS
WHERE TABLE_NAME = 'STATISTICS_TEST'
AND OWNER = 'AYSHIBAT';
COLUMN_NAME NUM_DISTINCT LOW_VALUE HIGH_VALUE NOTES
-------------------- ------------ -------------------- -------------------- -------------------------
ID 10000 C102 C302 HYPERLOGLOG
STATISTICS_STR 10000 53545231 53545239393939 HYPERLOGLOG
STATISTICS_DATE 10000 78770C01010102 78770C01032F29 HYPERLOGLOG
ID C102 C30202 STATS_ON_CONVENTIONAL_DML
STATISTICS_STR 53545231 53545239393939 STATS_ON_CONVENTIONAL_DML
STATISTICS_DATE 78770C01010102 78770C01033115 STATS_ON_CONVENTIONAL_DML
76
リアルタイム統計(動作前)・サンプルSQLと実行計画
 リアルタイム統計動作前のサンプルSQLと実行計画は以下の通り、
それっぽいの居ますやね……!彡(゚)(゚)
SELECT /* AAA */ COUNT(*) FROM STATISTICS_TEST;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR());
:
COUNT(*)
----------
10100
:
Plan hash value: 709000224
--------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | 2 (100)| |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS STORAGE FULL| STATISTICS_TEST | 10100 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------------------
Note
-----
- dynamic statistics used: statistics for conventional DML
77
統計ベース問合せ変換 and リアルタイム統計の 検証雑感
 Oracle Database の Optimizer は実行計画の予測精度を上げると云う
方向性の改善を昔からやっていて、リアルタイム統計はその一環
 FLUSH_DATABASE_MONITORING_INFO実行のタイミングでリアル
タイム統計が動作していることから、統計の失効の処理にひと手間を
加えているんじゃないかと思う。
 統計ベースの問合せ変換は動作させることが出来なかった……
発動条件に到達してないと予測されるんですが、よく判らんかった。
彡(-)(-)
78
5. まとめ
79
まとめ
 一部機能を除き、動作することは確認できたZe! (`・ω・)Ъ
 期待の新機能が軒並み Exadata専用という事で、環境入手
のハードルは高かったんですが、Always Free の 登場で敷
居はグッと下がったはず。
 DDD 2016で語った「進化する統計」「進化する実行計
画」「進化するSQL性能」に「進化する索引」が追加され
て、今後もますます目が離せませんやね!!! 彡(^)(^)
 Autonomous Database と Oracle Database 19cに
皆さんも是非触れてみて下さいね。
80
進化したOptimizer で クソSQLを駆逐してやる!
(進撃の巨人で5年ぶりに超大型巨人と対峙する
エレンさんを思い浮かべながら……)
エレン「クソSQLだな……」
81
元ネタ
(c) 石垣ゆうき・講談社・
MMR マガジンミステリー調査班
(c) 諫山創・講談社・進撃の巨人
(c) 井上雄彦・集英社・スラムダンク
82
おわり
ご清聴ありがとうございました!

Contenu connexe

Tendances

Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデートOracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデートオラクルエンジニア通信
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)オラクルエンジニア通信
 
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_syncDbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_syncKoji Shinkubo
 
障害とオペミスに備える! ~Oracle Databaseのバックアップを考えよう~
障害とオペミスに備える! ~Oracle Databaseのバックアップを考えよう~障害とオペミスに備える! ~Oracle Databaseのバックアップを考えよう~
障害とオペミスに備える! ~Oracle Databaseのバックアップを考えよう~Shinnosuke Akita
 
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)オラクルエンジニア通信
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)NTT DATA Technology & Innovation
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...NTT DATA Technology & Innovation
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)NTT DATA Technology & Innovation
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方歩 柴田
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)NTT DATA Technology & Innovation
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやyoku0825
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性Ohyama Masanori
 
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...オラクルエンジニア通信
 
OCI 購入モデルの整理と Universal Credit 最新情報(2021年2月17日版)
OCI 購入モデルの整理と Universal Credit 最新情報(2021年2月17日版)OCI 購入モデルの整理と Universal Credit 最新情報(2021年2月17日版)
OCI 購入モデルの整理と Universal Credit 最新情報(2021年2月17日版)オラクルエンジニア通信
 
Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Aurora Deep Dive (db tech showcase 2016)Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Aurora Deep Dive (db tech showcase 2016)Amazon Web Services Japan
 

Tendances (20)

Yahoo! JAPANのOracle構成-2017年版
Yahoo! JAPANのOracle構成-2017年版Yahoo! JAPANのOracle構成-2017年版
Yahoo! JAPANのOracle構成-2017年版
 
Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデートOracle Cloud Infrastructure:2023年4月度サービス・アップデート
Oracle Cloud Infrastructure:2023年4月度サービス・アップデート
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
事例から見る規模別クラウド・データベースの選び方 (Oracle Database) (Oracle Cloudウェビナーシリーズ: 2021年6月30日)
 
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_syncDbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
 
Checklist_AC.pdf
Checklist_AC.pdfChecklist_AC.pdf
Checklist_AC.pdf
 
障害とオペミスに備える! ~Oracle Databaseのバックアップを考えよう~
障害とオペミスに備える! ~Oracle Databaseのバックアップを考えよう~障害とオペミスに備える! ~Oracle Databaseのバックアップを考えよう~
障害とオペミスに備える! ~Oracle Databaseのバックアップを考えよう~
 
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
Oracle Database / Exadata Cloud 技術情報(Oracle Cloudウェビナーシリーズ: 2020年7月9日)
 
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
トランザクション処理可能な分散DB 「YugabyteDB」入門(Open Source Conference 2022 Online/Fukuoka 発...
 
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
Postgres Playground で pgbench を走らせよう!(第35回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
 
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
 
MySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれやMySQLレプリケーションあれやこれや
MySQLレプリケーションあれやこれや
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
 
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
Oracle Database 11g,12cからのアップグレード対策とクラウド移行 (Oracle Cloudウェビナーシリーズ: 2021年7...
 
OCI 購入モデルの整理と Universal Credit 最新情報(2021年2月17日版)
OCI 購入モデルの整理と Universal Credit 最新情報(2021年2月17日版)OCI 購入モデルの整理と Universal Credit 最新情報(2021年2月17日版)
OCI 購入モデルの整理と Universal Credit 最新情報(2021年2月17日版)
 
Zero Data Loss Recovery Appliance 設定手順例
Zero Data Loss Recovery Appliance 設定手順例Zero Data Loss Recovery Appliance 設定手順例
Zero Data Loss Recovery Appliance 設定手順例
 
Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Aurora Deep Dive (db tech showcase 2016)Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Aurora Deep Dive (db tech showcase 2016)
 

Similaire à Autonomous Database で Oracle Database19c 新機能 を味わう。

2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 152016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15歩 柴田
 
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」Ryusuke Kajiyama
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付きInsight Technology, Inc.
 
Locondo 20190215@ec tech_group
Locondo 20190215@ec tech_groupLocondo 20190215@ec tech_group
Locondo 20190215@ec tech_groupShinya Sugiyama
 
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -歩 柴田
 
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -歩 柴田
 
Oracle In-database-archiving ~Oracleでの論理削除~
Oracle In-database-archiving ~Oracleでの論理削除~Oracle In-database-archiving ~Oracleでの論理削除~
Oracle In-database-archiving ~Oracleでの論理削除~Daiki Mogmet Ito
 
Index shotgun on mysql5.6
Index shotgun on mysql5.6Index shotgun on mysql5.6
Index shotgun on mysql5.6yoku0825
 
TECHTALK 20210218 Qlikデータ統合製品によるSAPデータのリアルタイムDWHの実現
TECHTALK 20210218 Qlikデータ統合製品によるSAPデータのリアルタイムDWHの実現TECHTALK 20210218 Qlikデータ統合製品によるSAPデータのリアルタイムDWHの実現
TECHTALK 20210218 Qlikデータ統合製品によるSAPデータのリアルタイムDWHの実現QlikPresalesJapan
 
OpenStack with SR-IOV
OpenStack with SR-IOVOpenStack with SR-IOV
OpenStack with SR-IOVHideki Saito
 
SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用QlikPresalesJapan
 
V$SQLとその周辺でER図を描いてみよう!
V$SQLとその周辺でER図を描いてみよう!V$SQLとその周辺でER図を描いてみよう!
V$SQLとその周辺でER図を描いてみよう!歩 柴田
 
Locondo 20190703@inno db_cluster
Locondo 20190703@inno db_clusterLocondo 20190703@inno db_cluster
Locondo 20190703@inno db_clusterShinya Sugiyama
 
DB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDODB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDOShinya Sugiyama
 
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU CollationPostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU CollationNoriyoshi Shinoda
 
MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)yoyamasaki
 
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1Hideki Saito
 
激白!GROWI.cloudの可用性向上の取り組み【WESEEK Tech Conf #16】
激白!GROWI.cloudの可用性向上の取り組み【WESEEK Tech Conf #16】激白!GROWI.cloudの可用性向上の取り組み【WESEEK Tech Conf #16】
激白!GROWI.cloudの可用性向上の取り組み【WESEEK Tech Conf #16】WESEEKWESEEK
 
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...Insight Technology, Inc.
 

Similaire à Autonomous Database で Oracle Database19c 新機能 を味わう。 (20)

2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 152016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
2016/12/15 SQLチューニングと対戦格闘ゲームの類似性について語る。 JPOUG Advent Calendar 2016 Day 15
 
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
2017年5月26日 オープンソースデータベース比較セミナー「NoSQLとしても使えるMySQLとMySQL Cluster」
 
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
[A33] [特濃jpoug statspack on pdb oracle database 12c] 20131115 補足・続報付き
 
Locondo 20190215@ec tech_group
Locondo 20190215@ec tech_groupLocondo 20190215@ec tech_group
Locondo 20190215@ec tech_group
 
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
まだ統計固定で消耗してるの? - Bind Peek をもっと使おうぜ! 2015 Edition -
 
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
 
Oracle In-database-archiving ~Oracleでの論理削除~
Oracle In-database-archiving ~Oracleでの論理削除~Oracle In-database-archiving ~Oracleでの論理削除~
Oracle In-database-archiving ~Oracleでの論理削除~
 
Index shotgun on mysql5.6
Index shotgun on mysql5.6Index shotgun on mysql5.6
Index shotgun on mysql5.6
 
TECHTALK 20210218 Qlikデータ統合製品によるSAPデータのリアルタイムDWHの実現
TECHTALK 20210218 Qlikデータ統合製品によるSAPデータのリアルタイムDWHの実現TECHTALK 20210218 Qlikデータ統合製品によるSAPデータのリアルタイムDWHの実現
TECHTALK 20210218 Qlikデータ統合製品によるSAPデータのリアルタイムDWHの実現
 
OpenStack with SR-IOV
OpenStack with SR-IOVOpenStack with SR-IOV
OpenStack with SR-IOV
 
SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用SAP Applicationのソース・エンドポイントとしての利用
SAP Applicationのソース・エンドポイントとしての利用
 
V$SQLとその周辺でER図を描いてみよう!
V$SQLとその周辺でER図を描いてみよう!V$SQLとその周辺でER図を描いてみよう!
V$SQLとその周辺でER図を描いてみよう!
 
Locondo 20190703@inno db_cluster
Locondo 20190703@inno db_clusterLocondo 20190703@inno db_cluster
Locondo 20190703@inno db_cluster
 
DB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDODB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDO
 
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
 
PostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU CollationPostgreSQL Unconference #5 ICU Collation
PostgreSQL Unconference #5 ICU Collation
 
MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)
 
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
 
激白!GROWI.cloudの可用性向上の取り組み【WESEEK Tech Conf #16】
激白!GROWI.cloudの可用性向上の取り組み【WESEEK Tech Conf #16】激白!GROWI.cloudの可用性向上の取り組み【WESEEK Tech Conf #16】
激白!GROWI.cloudの可用性向上の取り組み【WESEEK Tech Conf #16】
 
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...
[db tech showcase Sapporo 2015] B16:ビッグデータには、なぜ列指向が有効なのか? by 日本ヒューレット・パッカード株式...
 

Dernier

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Dernier (8)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

Autonomous Database で Oracle Database19c 新機能 を味わう。

  • 1. JPOUG 15minute #9 Autonomous Database で Oracle Database 19c 新機能 を 味わう。 柴田 歩
  • 2. 2 自己紹介(柴田 歩)  日本オラクル株式会社 クラウド・テクノロジーコンサルティング事業本部 シニアプリンシパルコンサルタント 柴田 歩(しばた あゆむ)  2007年4月に中途で日本オラクルに入社  DBの製品コンサルとして、DB関連のプロジェクトを歴任  やきうのお兄ちゃん な DBエンジニアとして暗躍中!彡(^)(^) – ねら~ITエンジニア雑記 http://d.hatena.ne.jp/gonsuke777/ – Twitter @ora_gonsuke777 2
  • 3. 3  Oracle Databaseを中心とした座談 会’19 – Oracle Code Tokyo 2019 開催報告(パネリスト)  http://www.jpoug.org/2019/09/17/c odetokyo19report  Oracle Database or GoldenGate Advent Calendar 2018  https://adventar.org/calendars/3525  デモとディスカッションで体験する Oracle DBトラブル対応(2018年)  https://www.slideshare.net/shibataay umu/oracle-db-111087832  - JPOUG Advent Calendar 2017 Day 15 - V$SQLとその周辺でER図 を描いてみよう!  https://www.slideshare.net/shibataay umu/vsqler  DDD 2013 SQLチューニングに 必要な考え方と最新テクニック  http://www.oracle.com/technetwo rk/jp/ondemand/ddd-2013- 2051348-ja.html コレ  ブログ「ねら~ITエンジニア雑記」  http://d.hatena.ne.jp/gonsuke777/ • DDD 2016 SQL性能を最大限に引き出す DB 12cクエリー・オプティマイザ 新機 能活用と統計情報運用の戦略 • http://www.oracle.com/technetwork/jp/on demand/ddd-2016-3373953-ja.html コレ 過去コンテンツ
  • 4. 4 免責事項/注意事項/おことわり  本資料において示されている見解は、私自身の “独自研究”, ”独自検証”, ”独自解釈” に基づいた、個人的な見解となります。  従って本資料は Oracle Corporation 及び 日本オラクル の公式見解を必ずしも反映したものではなく、 マニュアル・サポートサイト等で公開されている情報や 実際の製品仕様・動作と異なる可能性があります。  この点は予めご了承ください。  資料は(一部スライドを修正して)公開します。
  • 5. 5 目次 1. はじめに 2. Automatic Indexeing の Feedback 3. Hybrid Partition の Feedback 4. オプティマイザ統計系の新機能Feedback 5. まとめ
  • 7. 7 Oracle Database 19c 新機能検証したろwww Oracle Database 19c 出たての頃のワイ……
  • 12. 12 Oracle Cloud Always Free が登場!
  • 13. 13 Exadata で動作する Autonomous Database Oracle Database Technology Night資料 より
  • 14. 14 よっしゃ Always Free の Autonomous Database で 19c検証したろ!
  • 17. 17 今回は某所(有償)の 19c Preview環境で検証  今回は某所で借りた(有償の)Autonomous Database 19c Preview環境で検証しています。  近い将来 Always Free でも 19c が使えるようになると 思うので、それまで皆さん正座待機して下さいね彡(-)(-)
  • 18. 18 2. Automatic Indexing の 検証結果Feedback
  • 20. 20 検証環境  Compute(Oracle Linux 7.7), VM.Standard2.1(1oCPU)  Autonomous Transaction Processing(ATP) 19c Preview, 2oCPU, Autoscaling有り Compute (Swingbench) Tokyo Region(and AD1) VCN Autonomous Database(ATP) IGW ssh JDBC Thin Subnet
  • 21. 21 Swingbenchの設定  Data Scale は 10(約10GB分) を指定  Automatic Indexingの効果を見るために、PK以外の索引を削除  Swingbench の 仮想ユーザー数は 6 で SOE V2 で負荷かけ DROP INDEX SOE.WHS_LOCATION_IX; DROP INDEX SOE.INV_PRODUCT_IX; DROP INDEX SOE.INV_WAREHOUSE_IX; DROP INDEX SOE.ADDRESS_CUST_IX; DROP INDEX SOE.ITEM_ORDER_IX; DROP INDEX SOE.ITEM_PRODUCT_IX; DROP INDEX SOE.ORD_SALES_REP_IX; DROP INDEX SOE.ORD_CUSTOMER_IX; DROP INDEX SOE.ORD_ORDER_DATE_IX; DROP INDEX SOE.ORD_WAREHOUSE_IX; : : ./charbench -c ../configs/SOE_Server_Side_V2.xml -cf /home/opc/work/Wallet_ATPAYSHIBAT02.zip -cs atpayshibat02_tp -u soe -p xxxxxxxxxx -uc 6 -v users,tpm,tps,vresp,dml -rt 0:20 :
  • 22. 22 Automatic Indexing の 有効化  DBMS_AUTO_INDEX.CONFIGUREプロシージャで有効化  実行後の関連設定(DBA_AUTO_INDEX_CONFIGビュー) EXEC DBMS_AUTO_INDEX.CONFIGURE('AUTO_INDEX_MODE','IMPLEMENT'); SELECT PARAMETER_NAME, PARAMETER_VALUE FROM DBA_AUTO_INDEX_CONFIG; PARAMETER_NAME PARAMETER_VALUE ---------------------------------- ----------------- AUTO_INDEX_COMPRESSION ON AUTO_INDEX_DEFAULT_TABLESPACE AUTO_INDEX_MODE IMPLEMENT AUTO_INDEX_REPORT_RETENTION 373 AUTO_INDEX_RETENTION_FOR_AUTO 373 AUTO_INDEX_RETENTION_FOR_MANUAL AUTO_INDEX_SCHEMA AUTO_INDEX_SPACE_BUDGET 100
  • 24. 24 SQL実行回数(from AWR)の比較  Automatic Indexing後のスループットが向上! Automatic Indexing動作前 Automatic Indexing動作後
  • 25. 25 Top10待機イベント(from AWR)の比較  どちらも DB CPU が待機イベントの中心 Automatic Indexing動作前 Automatic Indexing動作後
  • 26. 26 DBA_INDEXESディクショナリを参照  幾つかの索引が自動で作成されている。無効(UNUSABLE)な索引や 有効(VALID)でもINVISIBLE(不可視)な索引もある。 SELECT INDEX_NAME, AUTO, STATUS, VISIBILITY, COMPRESSION FROM DBA_INDEXES WHERE OWNER = 'SOE' ORDER BY INDEX_NAME; INDEX_NAME AUT STATUS VISIBILIT COMPRESSION ------------------------------ --- -------- --------- ------------- ADDRESS_PK NO VALID VISIBLE DISABLED CARD_DETAILS_PK NO VALID VISIBLE DISABLED : SYS_AI_20tjdcuwznyhx YES VALID INVISIBLE ADVANCED LOW ★コレ SYS_AI_2s9jaak2smbq4 YES UNUSABLE INVISIBLE ADVANCED LOW ★コレ SYS_AI_3z00frhp9vd91 YES VALID INVISIBLE ADVANCED LOW ★コレ SYS_AI_4bz3nuupj3kt5 YES VALID VISIBLE ADVANCED LOW ★コレ SYS_AI_5p2zapcmkj174 YES VALID VISIBLE ADVANCED LOW ★コレ SYS_AI_b9k5zyq0mjwf5 YES UNUSABLE INVISIBLE ADVANCED LOW ★コレ SYS_AI_dt4w4vr174j9m YES N/A VISIBLE ADVANCED LOW ★コレ SYS_AI_gbwwy984mc1ft YES VALID VISIBLE ADVANCED LOW ★コレ
  • 27. 27 Automatic Indexing の レポート(1)  DBMS_AUTO_INDEX.REPORT_ACTIVITYファンクションで Automatic Indexing の レポートを出力 SET LONG 1000000; SET LONGC 1000000; SET LINESIZE 170; SET PAGESIZE 1000; ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY/MM/DD HH24:MI:SS.FF'; SELECT DBMS_AUTO_INDEX.REPORT_ACTIVITY( TO_TIMESTAMP('2019/11/23 00:00:00.00’), TO_TIMESTAMP('2019/11/26 00:00:00.00’), 'TEXT', 'ALL', 'ALL’ ) FROM DUAL;
  • 28. 28 Automatic Indexing の レポート(2)  GENERAL INFORMATIONセクション と SUMMARYセクション DBMS_AUTO_INDEX.REPORT_ACTIVITY(TO_TIMESTAMP('2019/11/2300:00:00.00’) … ---------------------------------------------------------------------- GENERAL INFORMATION ------------------------------------------------------------------------------- Activity start : 23-11月-2019 00:00:00 Activity end : 26-11月-2019 00:00:00 Executions completed : 77 Executions interrupted : 0 Executions with fatal error : 0 ------------------------------------------------------------------------------- SUMMARY (AUTO INDEXES) ------------------------------------------------------------------------------- Index candidates : 8 Indexes created (visible / invisible) : 6 (4 / 2) Space used (visible / invisible) : 1.43 GB (1.18 GB / 251.72 MB) Indexes dropped : 0 SQL statements verified : 14 SQL statements improved (improvement factor) : 5 (1639.7x) SQL plan baselines created : 0 Overall improvement factor : 4.9x -------------------------------------------------------------------------------
  • 29. 29 Automatic Indexing の レポート(3)  MANUL INDEXESセクション と INDEX DETAILSセクション SUMMARY (MANUAL INDEXES) ------------------------------------------------------------------------------- Unused indexes : 0 Space used : 0 B Unusable indexes : 0 ------------------------------------------------------------------------------- INDEX DETAILS ------------------------------------------------------------------------------- 1. The following indexes were created: *: invisible ------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------- | Owner | Table | Index | Key | Type | Properties | ---------------------------------------------------------------------------------------------- | SOE | ADDRESSES | SYS_AI_4bz3nuupj3kt5 | CUSTOMER_ID | B-TREE | NONE | | SOE | CARD_DETAILS | SYS_AI_dt4w4vr174j9m | CUSTOMER_ID | B-TREE | LOCAL | | SOE | ORDERS | * SYS_AI_3z00frhp9vd91 | WAREHOUSE_ID | B-TREE | NONE | | SOE | ORDERS | SYS_AI_5p2zapcmkj174 | CUSTOMER_ID | B-TREE | NONE | | SOE | ORDERS | SYS_AI_gbwwy984mc1ft | SALES_REP_ID | B-TREE | NONE | | SOE | PRODUCT_DESCRIPTIONS | * SYS_AI_20tjdcuwznyhx | PRODUCT_ID | B-TREE | NONE | ---------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------
  • 30. 30 Automatic Indexing の レポート(4)  VERIFICATIONセクション(抜粋) VERIFICATION DETAILS ------------------------------------------------------------------------------- 1. The performance of the following statements improved: ------------------------------------------------------------------------------- Parsing Schema Name : SOE SQL ID : 29qp10usqkqh0 SQL Text : SELECT TT.ORDER_TOTAL, TT.SALES_REP_ID, TT.ORDER_DATE, CUSTOMERS.CUST_FIRST_NAME, CUSTOMERS.CUST_LAST_NAME FROM (SELECT ORDERS.ORDER_TOTAL, ORDERS.SALES_REP_ID, ORDERS.ORDER_DATE, ORDERS.CUSTOMER_ID, RANK() OVER (ORDER BY ORDERS.ORDER_TOTAL DESC) SAL_RANK FROM ORDERS WHERE ORDERS.SALES_REP_ID = :B1 ... Improvement Factor : 683.4x Execution Statistics: ----------------------------- Original Plan Auto Index Plan ---------------------------- ---------------------------- Elapsed Time (s): 1235522012 13024 CPU Time (s): 1231284830 9898 Buffer Gets: 257075897 590 Optimizer Cost: 5174 1222 Disk Reads: 0 3 Direct Writes: 0 0 Rows Processed: 551468 12 Executions: 816 1
  • 31. 31 Automatic Indexing の レポート(5)  PLANS SECTION(抜粋) PLANS SECTION ---------------------------------------------------------------- - Original ----------------------------- Plan Hash Value : 2280072513 ---------------------------------------------------------------- | Id | Operation | Name | ---------------------------------------------------------------- | 0 | SELECT STATEMENT | | | 1 | HASH JOIN | | | 2 | JOIN FILTER CREATE | :BF0001 | | 3 | PART JOIN FILTER CREATE | :BF0000 | | 4 | NESTED LOOPS | | | 5 | NESTED LOOPS | | | 6 | STATISTICS COLLECTOR | | | 7 | VIEW | | | 8 | WINDOW SORT PUSHED RANK | | | 9 | PARTITION HASH ALL | | | 10 | TABLE ACCESS STORAGE FULL | ORDERS | | 11 | INDEX UNIQUE SCAN | CUSTOMERS_PK | | 12 | TABLE ACCESS BY GLOBAL INDEX ROWID | CUSTOMERS | | 13 | JOIN FILTER USE | :BF0001 | | 14 | PARTITION HASH JOIN-FILTER | | | 15 | TABLE ACCESS STORAGE FULL | CUSTOMERS | ---------------------------------------------------------------- - With Auto Indexes ----------------------------- Plan Hash Value : 3608924074 --------------------------------------------------------------------------------- | Id | Operation | Name | --------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | 1 | NESTED LOOPS | | | 2 | NESTED LOOPS | | | * 3 | VIEW | | | * 4 | WINDOW SORT PUSHED RANK | | | 5 | TABLE ACCESS BY GLOBAL INDEX ROWID BATCHED | ORDERS | | * 6 | INDEX RANGE SCAN | SYS_AI_gbwwy984mc1ft | | * 7 | INDEX UNIQUE SCAN | CUSTOMERS_PK | | 8 | TABLE ACCESS BY GLOBAL INDEX ROWID | CUSTOMERS | ---------------------------------------------------------------------------------
  • 33. 33 Automatic Indexing の 検証雑感  まずは動いた事に一安心(新機能は色々アレなんで…  15分~20分ごとにバックグラウンドで何かが 動いている模様?(マニュアル記述は15分)  従来は人間が Try&Error で作成していた索引を、 RDBMS が自動計測して付与するのは画期的!  自動作成された索引は手動では削除不可で、 詳細なログ等も無いので、Blackbox感は凄いwwwww
  • 34. 34 Automatic Indexing の 参考ドキュメント  Oracle Database データベース管理者ガイド 19c – 21.7 自動索引の管理 https://docs.oracle.com/cd/F19136_01/admin/managing-indexes.html#GUID- D1285CD5-95C0-4E74-8F26-A02018EA7999  Oracle Database PL/SQLパッケージおよびタイプ・リファレンス 19c – 30 DBMS_AUTO_INDEX – https://docs.oracle.com/cd/F19136_01/arpls/DBMS_AUTO_INDEX.html#GUID- 78C59A20-2F92-448F-96F7-6C4FBB355E42
  • 35. 35 3. Hybrid Partition の Feedback
  • 36. 36 Hybrid Partition とは?  パーティションの一部を外部表(EXTERNAL TABLE) として定義することができる 19c の 新機能 Partition P201901 Partition P201902 Partition P201903 Partition P201904 File (External Table) Database Hybrid Partition表
  • 37. 37 Autonomous Database の Hybrid Partition  Object Storage の ファイル を Hybrid Partition の 外部表(EXTERNAL TABLE)として定義することが可能 Partition P201901 Partition P201902 Partition P201903 Partition P201904 Database Hybrid Partition表 Object Storage
  • 38. 38 Object Storage にファイル格納して、 Autonomous Databaseで Hybrid Partition を定義してみる。 Hybrid Partition の 検証方法
  • 39. 39 Hybrid Partition の 検証構成  P100, P200 のデータを Object Storage に格納  P300, P400 のデータは Autonomous Database に格納 Partition P100 Partition P200 Partition P300 Partition P400 Autonomous Database Hybrid Partition表 Object Storage
  • 40. 40 Object Storage に 格納したデータ  数値, 文字列, 日付書式文字列の単純なデータ  gzip圧縮して Object Storage にアップロード "ID","HYBRID_STR","HYBRID_DATE" 1,"STR1",2019/12/01 00:00:01 2,"STR2",2019/12/01 00:00:02 3,"STR3",2019/12/01 00:00:03 4,"STR4",2019/12/01 00:00:04 5,"STR5",2019/12/01 00:00:05 6,"STR6",2019/12/01 00:00:06 7,"STR7",2019/12/01 00:00:07 8,"STR8",2019/12/01 00:00:08 9,"STR9",2019/12/01 00:00:09 : :
  • 41. 41 Object Storage の Screenshot  gzip圧縮したファイル を Object Storage にアップロード
  • 42. 42 OCI IAMユーザー の Authtoken を 生成  おまじない・その1
  • 43. 43 Autonomous Database に IAMユーザーの Authtoken を 登録(Credential作成)  おまじない・その2 BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'OCI_CLI_AYS_ATP', -- 任意の文字列 username => 'IAM_USER_AYSHIBAT02', -- IAMユーザー名 password => 'xxxxxxxxxxxxxxxxxxx' -- 生成したAuth Token ); END; /
  • 44. 44 Hybrid Partition表を作成(DBMS_CLOUD)  DBMS_CLOUD.CREATE_HYBRID_PART_TABLEプロシージャで Hybrid Partition表を作成 BEGIN DBMS_CLOUD.CREATE_HYBRID_PART_TABLE( table_name => 'EXT_HYBRID_TEST', --テーブル名 credential_name => 'OCI_CLI_AYS_ATP', --クレデンシャル名 format => json_object( 'characterset' VALUE 'AL32UTF8' -- 文字コードを指定 , 'recorddelimiter' VALUE '''n''' -- 行区切り文字 , 'type' VALUE 'csv' -- ファイルのタイプを指定 , 'skipheaders' VALUE 1 -- 読み飛ばすヘッダ行数を指定 , 'compression' VALUE 'gzip' -- 圧縮形式を指定 , 'dateformat' VALUE 'YYYY/MM/DD HH24:MI:SS' -- DATE型のフォーマットを指定 ) , column_list => 'ID NUMBER, ' || 'HYBRID_STR VARCHAR2(43), ' || 'HYBRID_DATE DATE' , partitioning_clause => 'PARTITION BY RANGE (ID) (' || ' PARTITION P100 VALUES LESS THAN (101) ' || ' EXTERNAL LOCATION(''https://objectstorage.ap-tokyo-1…/hybrid_test_p100.csv.gz'') ' || ' , PARTITION P200 VALUES LESS THAN (201) ' || ' EXTERNAL LOCATION(''https://objectstorage.ap-tokyo-1…/hybrid_test_p200.csv.gz'') ' || ' , PARTITION P300 VALUES LESS THAN (301)' || ' , PARTITION P400 VALUES LESS THAN (401)' || ')' ); END; /
  • 45. 45 Hybrid Partition表にデータをロード  データベース格納部分(P300, P400)のデータをロード INSERT INTO EXT_HYBRID_TEST SELECT LEVEL+200 AS ID , 'STR' || (LEVEL+200) AS HYBRID_STR , TO_DATE('20191201', 'YYYYMMDD') + (LEVEL+200)/24/60/60 AS HYBRID_DATE FROM DUAL CONNECT BY LEVEL <= 200; COMMIT;
  • 46. 46 Hybrid Partition表をGET_DDLしてみる。  Hybrid Partition表をGET_DDLしてみると下記のようになってます。 SELECT DBMS_METADATA.GET_DDL('TABLE','EXT_HYBRID_TEST','AYSHIBAT') FROM DUAL; CREATE TABLE "AYSHIBAT"."EXT_HYBRID_TEST" ( "ID" NUMBER, "HYBRID_STR" VARCHAR2(43) COLLATE "USING_NLS_COMP", "HYBRID_DATE" DATE ) DEFAULT COLLATION "USING_NLS_COMP" EXTERNAL PARTITION ATTRIBUTES ( TYPE ORACLE_LOADER DEFAULT DIRECTORY "DATA_PUMP_DIR" ACCESS PARAMETERS ( RECORDS CHARACTERSET AL32UTF8 DELIMITED BY 'n' IGNORE_HEADER=1 COMPRESSION GZIP NOLOGFILE NOBADFILE NODISCARDFILE READSIZE=10000000 CREDENTIAL 'OCI_CLI_AYS_ATP' FIELDS CSV WITHOUT EMBEDDED DATE_FORMAT DATE MASK 'YYYY/MM/DD HH24:MI:SS' NOTRIM ) REJECT LIMIT 0 ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 PARTITION BY RANGE ("ID") ( PARTITION "P100" VALUES LESS THAN (101) EXTERNAL LOCATION( 'https://objectstorage.ap-tokyo-1.oraclecloud.com/…/hybrid_test_p100.csv.gz'), PARTITION "P200" VALUES LESS THAN (201) EXTERNAL LOCATION( 'https://objectstorage.ap-tokyo-1.oraclecloud.com/…/hybrid_test_p200.csv.gz'), PARTITION "P300" VALUES LESS THAN (301) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "DATA" , PARTITION "P400" VALUES LESS THAN (401) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 8388608 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "DATA" ) PARALLEL
  • 48. 48 Hybrid Partition の 実行計画(2)  外部表(ファイル)の Partiiton をプルーニングした場合の実行計画 SELECT COUNT(*) FROM EXT_HYBRID_TEST WHERE ID BETWEEN 1 AND 100; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR()); COUNT(*) ---------- 100 PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- SQL_ID dwj72nyfta1k4, child number 0 : Plan hash value: 2802513750 -----------------------------------------------------------...---------------------------------------------- | Id | Operation | Name |...| Pstart| Pstop | TQ |IN-OUT| PQ Distrib | -----------------------------------------------------------...---------------------------------------------- | 0 | SELECT STATEMENT | |...| | | | | | | 1 | SORT AGGREGATE | |...| | | | | | | 2 | PX COORDINATOR | |...| | | | | | | 3 | PX SEND QC (RANDOM) | :TQ10000 |...| | | Q1,00 | P->S | QC (RAND) | | 4 | SORT AGGREGATE | |...| | | Q1,00 | PCWP | | | 5 | PX BLOCK ITERATOR | |...| 1 | 1 | Q1,00 | PCWC | | |* 6 | EXTERNAL TABLE ACCESS FULL| EXT_HYBRID_TEST |...| 1 | 1 | Q1,00 | PCWP | | -----------------------------------------------------------...----------------------------------------------
  • 49. 49 Hybrid Partition の 実行計画(3)  データベースの Partition をプルーニングした場合の実行計画 SELECT COUNT(*) FROM EXT_HYBRID_TEST WHERE ID BETWEEN 201 AND 300; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR()); COUNT(*) ---------- 100 PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- SQL_ID a22rszz8wn2b3, child number 0 : Plan hash value: 272980602 ----------------------------------------------------------…---------------------------------------------- | Id | Operation | Name |…| Pstart| Pstop | TQ |IN-OUT| PQ Distrib | ----------------------------------------------------------…---------------------------------------------- | 0 | SELECT STATEMENT | |…| | | | | | | 1 | SORT AGGREGATE | |…| | | | | | | 2 | PX COORDINATOR | |…| | | | | | | 3 | PX SEND QC (RANDOM) | :TQ10000 |…| | | Q1,00 | P->S | QC (RAND) | | 4 | SORT AGGREGATE | |…| | | Q1,00 | PCWP | | | 5 | PX BLOCK ITERATOR | |…| 3 | 3 | Q1,00 | PCWC | | |* 6 | TABLE ACCESS STORAGE FULL| EXT_HYBRID_TEST |…| 3 | 3 | Q1,00 | PCWP | | ----------------------------------------------------------…----------------------------------------------
  • 50. 50 Hybrid Partition の 実行計画(4)  外部表とデータベースを跨るプルーニングをした場合の実行計画 SELECT COUNT(*) FROM EXT_HYBRID_TEST WHERE ID BETWEEN 101 AND 300; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR()); COUNT(*) ---------- 200 PLAN_TABLE_OUTPUT -------------------------------------------------------------------------------- SQL_ID avhgg9pamtg34, child number 0 : Plan hash value: 598631855 --------------------------------------------------------------...---------------------------------------------- | Id | Operation | Name |...| Pstart| Pstop | TQ |IN-OUT| PQ Distrib | --------------------------------------------------------------...---------------------------------------------- | 0 | SELECT STATEMENT | |...| | | | | | | 1 | SORT AGGREGATE | |...| | | | | | | 2 | PX COORDINATOR | |...| | | | | | | 3 | PX SEND QC (RANDOM) | :TQ10000 |...| | | Q1,00 | P->S | QC (RAND) | | 4 | SORT AGGREGATE | |...| | | Q1,00 | PCWP | | | 5 | PX BLOCK ITERATOR | |...| 2 | 3 | Q1,00 | PCWC | | |* 6 | TABLE ACCESS HYBRID PART FULL| EXT_HYBRID_TEST |...| 2 | 3 | Q1,00 | PCWP | | |* 7 | TABLE ACCESS STORAGE FULL | EXT_HYBRID_TEST |...| 2 | 3 | Q1,00 | PCWP | | --------------------------------------------------------------...----------------------------------------------
  • 52. 52 Hybrid Partition on Autonomous DB の 検証雑感  下記の図のようなData Lake構築に向いた機能  過去の古いデータをObject Storageに、アクセス頻度の高いホット なデータをAutonomous Databaseに…といった運用が可能  ただ現時点(2019年11月)では既存パーティションの定義を変更して Object Storageを参照させる…というAPIが無いため、今後に期待
  • 53. 53 Hybrid Partition の 参考ドキュメント  Oracle Database VLDBおよびパーティショニング・ガイド 19c – ハイブリッド・パーティション表の管理 https://docs.oracle.com/cd/F19136_01/vldbg/manage_hypt.html#GUID- ACBDB3B2-0A16-4CFD-8FF1-A57C9B3D907F  Oracle Cloud Using Oracle Autonomous Data Warehouse – CREATE_HYBRID_PART_TABLE Procedure https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse- cloud/user/dbms-cloud.html#GUID-AF2965F5-354C-40E4-B2AA- 3C17D9FA507C
  • 57. 57 統計ベースの問合せ変換 の 仕様(1)  5.6 統計ベースの問合せ変換(マニュアル記述) – https://docs.oracle.com/cd/F19136_01/tgsql/query- transformations.html#GUID-4CB77742-41A2-49D3-A04F-5C79EE237A3A – 場合によっては、表自体ではなく表統計を問い合せることで、Oracle Databaseは問合せを満たすことができます。 – 統計ベースの変換の利点は、一般に表統計は表よりもはるかに小さいことで す。メタデータ問合せのパフォーマンスは、表内の行数に依存しないため、 大規模な表の方がはるかに高速になります。 – (中略) – 集計のタイプ…たとえば、集計はMIN、MAX、COUNTまたは APPROXIMATE_COUNT_DISTINCTです。 – (後略)
  • 58. 58 統計ベースの問合せ変換 の 仕様(2)  5.6 統計ベースの問合せ変換(マニュアル記述)
  • 60. 60 統計ベースの問合せ変換・テストデータ  簡単なテストデータを作成(1000万件)して統計採取 CREATE TABLE STATISTICS_TEST AS SELECT LEVEL AS ID , 'STR' || LEVEL AS STATISTICS_STR , TO_DATE('20191201', 'YYYYMMDD') + LEVEL/24/60/60 AS STATISTICS_DATE FROM DUAL CONNECT BY LEVEL <= 10000000; EXEC DBMS_STATS.GATHER_TABLE_STATS('AYSHIBAT', 'STATISTICS_TEST', METHOD_OPT => 'FOR ALL COLUMNS SIZE AUTO FOR COLUMNS ID SIZE AUTO', NO_INVALIDATE => FALSE, DEGREE => 6);
  • 61. 61 統計ベースの問合せ変換・SQL実行&PLAN確認  COUNT(*)なSQLで実行計画を確認したが…… SET LINESIZE 300; SET PAGESIZE 1000; SELECT COUNT(*) FROM STATISTICS_TEST; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR()); PLAN_TABLE_OUTPUT --------------------------------------------------------------------------- SQL_ID 9w2bk9yx44317, child number 0 ------------------------------------- SELECT COUNT(*) FROM STATISTICS_TEST Plan hash value: 709000224 -------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Cost (%CPU)| Time | -------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | 548 (100)| | | 1 | SORT AGGREGATE | | 1 | | | | 2 | TABLE ACCESS STORAGE FULL| STATISTICS_TEST | 10M| 548 (11)| 00:00:01 | --------------------------------------------------------------------------------------
  • 63. 63 統計ベースの問合せ変換・SQL実行&PLAN確認  MIN や MAXなSQLでも実行計画を確認したけど…… SET LINESIZE 300; SET PAGESIZE 1000; SELECT MIN(ID), MAX(ID) FROM STATISTICS_TEST; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR()); PLAN_TABLE_OUTPUT ---------------------------------------------------------------------------------------------- SQL_ID 90gcva4ba5yut, child number 0 ------------------------------------- SELECT MIN(ID), MAX(ID) FROM STATISTICS_TEST Plan hash value: 709000224 ---------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ---------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | | 548 (100)| | | 1 | SORT AGGREGATE | | 1 | 6 | | | | 2 | TABLE ACCESS STORAGE FULL| STATISTICS_TEST | 10M| 57M| 548 (11)| 00:00:01 | ----------------------------------------------------------------------------------------------
  • 64. 64 やっぱり 動きませんね??? MIN や MAX でも統計ベースの問合せ変換は……
  • 66. 66 リアルタイム統計 の 仕様(1)  10.3.3.3 リアルタイム統計(マニュアル記述) – https://docs.oracle.com/cd/F19136_01/tgsql/optimizer-statistics- concepts.html#GUID-769E609D-0312-43A7-9581-3F3EACF10BA9 – Oracle Database 19c以降、データベースでは従来型DML操作の 実行中にリアルタイム統計が自動的に収集されます。 – (中略) – DML操作で表を変更している場合、Oracle Databaseによって 最も重要な統計の値が動的に計算されます – (中略)
  • 67. 67 リアルタイム統計 の 仕様(2)  10.3.3.3 リアルタイム統計(マニュアル記述)
  • 69. 69 リアルタイム統計・テストデータ  簡単なテストデータを作成(10000件)して統計採取 CREATE TABLE STATISTICS_TEST AS SELECT LEVEL AS ID , 'STR' || LEVEL AS STATISTICS_STR , TO_DATE('20191201', 'YYYYMMDD') + LEVEL/24/60/60 AS STATISTICS_DATE FROM DUAL CONNECT BY LEVEL <= 10000; EXEC DBMS_STATS.GATHER_TABLE_STATS('AYSHIBAT', 'STATISTICS_TEST', METHOD_OPT => 'FOR ALL COLUMNS SIZE AUTO FOR COLUMNS ID SIZE AUTO', NO_INVALIDATE => FALSE, DEGREE => 6);
  • 70. 70 リアルタイム統計(動作前)・テストデータの表統計  リアルタイム統計動作前の 表統計(DBA_TAB_STATISTICS)は下記の通り ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS'; SELECT TABLE_NAME, NUM_ROWS, LAST_ANALYZED, NOTES FROM DBA_TAB_STATISTICS WHERE TABLE_NAME = 'STATISTICS_TEST' AND OWNER = 'AYSHIBAT'; TABLE_NAME NUM_ROWS LAST_ANALYZED NOTES ------------------------------ ---------- ------------------- ------------------------- STATISTICS_TEST 10000 2019/12/03 07:56:18
  • 71. 71 リアルタイム統計(動作前)・テストデータの列統計  リアルタイム統計動作前の 列統計(DBA_TAB_COL_STATISTICS)は下記の通り SELECT COLUMN_NAME , NUM_DISTINCT , LOW_VALUE , HIGH_VALUE , NOTES FROM DBA_TAB_COL_STATISTICS WHERE TABLE_NAME = 'STATISTICS_TEST' AND OWNER = 'AYSHIBAT'; COLUMN_NAME NUM_DISTINCT LOW_VALUE HIGH_VALUE NOTES -------------------- ------------ ---------------------- ----------------------- -------------------------- ID 10000 C102 C302 HYPERLOGLOG STATISTICS_STR 10000 53545231 53545239393939 HYPERLOGLOG STATISTICS_DATE 10000 78770C01010102 78770C01032F29 HYPERLOGLOG
  • 72. 72 リアルタイム統計(動作前)・サンプルSQLと実行計画  リアルタイム統計動作前のサンプルSQLと実行計画は以下の通り SELECT COUNT(*) FROM STATISTICS_TEST; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR()); : COUNT(*) ---------- 10000 : PLAN_TABLE_OUTPUT --------------------------------------------------------------------------------------- SQL_ID 9w2bk9yx44317, child number 0 : Plan hash value: 709000224 -------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Cost (%CPU)| Time | -------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | 2 (100)| | | 1 | SORT AGGREGATE | | 1 | | | | 2 | TABLE ACCESS STORAGE FULL| STATISTICS_TEST | 10000 | 2 (0)| 00:00:01 | --------------------------------------------------------------------------------------
  • 73. 73 リアルタイム統計・テストデータを追加投入  テストデータを追加投入(100件)+おまじない INSERT INTO STATISTICS_TEST SELECT (LEVEL+10000) AS ID , 'STR' || (LEVEL+10000) AS STATISTICS_STR , TO_DATE('20191201', 'YYYYMMDD') + (LEVEL+10000)/24/60/60 AS STATISTICS_DATE FROM DUAL CONNECT BY LEVEL <= 100; COMMIT; EXEC DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;
  • 74. 74 リアルタイム統計(動作後)・テストデータの表統計  リアルタイム統計動作後の表統計(DBA_TAB_STATISTICS)は 下記の通り、何か追加されてますね……。 ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS'; SELECT TABLE_NAME, NUM_ROWS, LAST_ANALYZED, NOTES FROM DBA_TAB_STATISTICS WHERE TABLE_NAME = 'STATISTICS_TEST' AND OWNER = 'AYSHIBAT'; TABLE_NAME NUM_ROWS LAST_ANALYZED NOTES ------------------------------ ---------- ------------------- ------------------------- STATISTICS_TEST 10000 2019/12/03 07:56:18 STATISTICS_TEST 10100 2019/12/03 07:59:20 STATS_ON_CONVENTIONAL_DML
  • 75. 75 リアルタイム統計(動作後)・テストデータの列統計  リアルタイム統計動作後の列統計(DBA_TAB_COL_STATISTICS)は 下記の通り、こちらにも何か居ますね。。。 SELECT COLUMN_NAME , NUM_DISTINCT , LOW_VALUE , HIGH_VALUE , NOTES FROM DBA_TAB_COL_STATISTICS WHERE TABLE_NAME = 'STATISTICS_TEST' AND OWNER = 'AYSHIBAT'; COLUMN_NAME NUM_DISTINCT LOW_VALUE HIGH_VALUE NOTES -------------------- ------------ -------------------- -------------------- ------------------------- ID 10000 C102 C302 HYPERLOGLOG STATISTICS_STR 10000 53545231 53545239393939 HYPERLOGLOG STATISTICS_DATE 10000 78770C01010102 78770C01032F29 HYPERLOGLOG ID C102 C30202 STATS_ON_CONVENTIONAL_DML STATISTICS_STR 53545231 53545239393939 STATS_ON_CONVENTIONAL_DML STATISTICS_DATE 78770C01010102 78770C01033115 STATS_ON_CONVENTIONAL_DML
  • 76. 76 リアルタイム統計(動作前)・サンプルSQLと実行計画  リアルタイム統計動作前のサンプルSQLと実行計画は以下の通り、 それっぽいの居ますやね……!彡(゚)(゚) SELECT /* AAA */ COUNT(*) FROM STATISTICS_TEST; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR()); : COUNT(*) ---------- 10100 : Plan hash value: 709000224 -------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Cost (%CPU)| Time | -------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | 2 (100)| | | 1 | SORT AGGREGATE | | 1 | | | | 2 | TABLE ACCESS STORAGE FULL| STATISTICS_TEST | 10100 | 2 (0)| 00:00:01 | -------------------------------------------------------------------------------------- Note ----- - dynamic statistics used: statistics for conventional DML
  • 77. 77 統計ベース問合せ変換 and リアルタイム統計の 検証雑感  Oracle Database の Optimizer は実行計画の予測精度を上げると云う 方向性の改善を昔からやっていて、リアルタイム統計はその一環  FLUSH_DATABASE_MONITORING_INFO実行のタイミングでリアル タイム統計が動作していることから、統計の失効の処理にひと手間を 加えているんじゃないかと思う。  統計ベースの問合せ変換は動作させることが出来なかった…… 発動条件に到達してないと予測されるんですが、よく判らんかった。 彡(-)(-)
  • 79. 79 まとめ  一部機能を除き、動作することは確認できたZe! (`・ω・)Ъ  期待の新機能が軒並み Exadata専用という事で、環境入手 のハードルは高かったんですが、Always Free の 登場で敷 居はグッと下がったはず。  DDD 2016で語った「進化する統計」「進化する実行計 画」「進化するSQL性能」に「進化する索引」が追加され て、今後もますます目が離せませんやね!!! 彡(^)(^)  Autonomous Database と Oracle Database 19cに 皆さんも是非触れてみて下さいね。
  • 81. 81 元ネタ (c) 石垣ゆうき・講談社・ MMR マガジンミステリー調査班 (c) 諫山創・講談社・進撃の巨人 (c) 井上雄彦・集英社・スラムダンク