Oracle Database Technology Night ~ 集え! オラクルの力 ( チカラ ) ~ Oracle Database 18c テクノロジーシリーズ 2 RAC/Sharding と Data Guard/HA の機能強化 ~ RAC/Sharding~ 日本オラクル株式会社

Similar documents
Exam : J Title : Querying Microsoft SQL Server 2012 Version : DEMO 1 / 10

ORACLE PARTITIONING

Title Slide with Picture

Slide 1

第 7 章 ユーザー データ用表領域の管理 この章では 表や索引を格納するユーザー データ用表領域の作成や 作成後のメンテナンスに ついて解説します 1. ユーザー データ用表領域の管理概要 2. ユーザー データ用表領域作成時の考慮事項 3. ユーザー データ用表領域の作成 4. ユーザー データ

Oracle Database 11gにおけるパーティション化

Oracle SQL Developerの移行機能を使用したOracle Databaseへの移行

目次 はじめに... 2 無料トライアルのサインアップ方法... 3 トライアル環境へのアクセス 参考情報

How to Use the PowerPoint Template

以下の事項は 弊社の一般的な製品の方向性に関する概要を説明するものです また 情報提供を唯一の目的とするものであり いかなる契約にも組み込むことはできません 以下の事項は マテリアルやコード 機能を提供することをコミットメント ( 確約 ) するものではないため 購買決定を行う際の判断材料になさらな

Oracle SQL Developer Data Modeler

Oracle DatabaseとIPv6 Statement of Direction

アジェンダ ORACLE MASTER Oracle Database 11g 概要 11g SQL 基礎 Ⅰ 試験紹介 ポイント解説 Copyright 2011 Oracle. All rights reserved. 2

今さら聞けない!? Oracle入門 ~前編~

Oracle Database In-Memory 高可用性ベスト・プラクティス

Microsoft PowerPoint pptx

今さら聞けない!? Oracle入門 ~後編~

Oracle Advanced Compression:ディスクの節約とデータベースの高速化を可能にする包括的な圧縮機能

ORACLE TUNING PACK 11G

PowerPoint Presentation

Title Slide with Picture

TopLink È... 3 TopLink...5 TopLink åø... 6 TopLink å Workbench O/R ~... 8 Workbench À ~... 8 Foundation Library å... 8 TopL

PowerPoint Presentation

Oracle Solaris 仮想環境とプロビジョン環境の構築

Oracle Database 12c Release 1 ( ) CoreTech Seminar

Oracle Database 18cにおけるOracle Partitioning

Microsoft PowerPoint - J-S301167_idx_comp.ppt [互換モード]

Oracle パブリック・クラウド・サービス無料トライアル 申込手順書

Oracle 入門 ~ 研修受講後のスキルアップサポート ~ 対応バージョン :Oracle 10gR1 ~ 12cR1 本資料は アシスト Oracle 研修をご受講いただいたお客様からのご質問や 研修ではご案内できなかった情報などを FAQ にまとめたものです 研修受講後のスキルアップの一助とし

第 3 章 メディア障害とバックアップ リカバリ この章では メディア障害の発生に備えたバックアップ方法と 障害時の基本的なリカバリ方法につい て説明します 1. メディア リカバリ概要 2. ファイルの多重化 3. アーカイブ モードの設定 4. バックアップ概要 5. 一貫性バックアップ ( オ

1 SQL Server SQL Oracle SQL SQL* Plus PL/SQL 2 SQL Server SQL Server SQL Oracle SQL SQL*Plus SQL Server GUI 1-1 osql 1-1 Transact- SQL SELECTFROM 058

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

Oracle Data Pumpのパラレル機能


< 写真欄 > 11g R2 Real Application Clusters スキルチェック ポイント解説

Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest & Valid 1z0-882-JP

mySQLの利用

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

Microsoft Word - nvsi_050090jp_oracle10g_vlm.doc

PostgreSQL カンファレンス 2013 証券取引バックオフィスにおける Oracle から PostgreSQL への マイグレーション SBI ジャパンネクスト証券株式会社 イアン バーウィック

K5 DB powered by Oracle® Cloud FAQ

Oracleの領域管理~トラブル防止のテクニック~

データセンターの効率的な資源活用のためのデータ収集・照会システムの設計

Oracle Cloud Adapter for Oracle RightNow Cloud Service

はじめに コースの概要と目的 Oracle をより効率的に使用するための SQL のチューニング方法について説明します また 索引の有無 SQL の 記述方法がパフォーマンスにどのように影響するのかを実習を通して理解します 受講対象者 アプリケーション開発者 / データベース管理者の方 前提条件 S

Oracle Data Pumpのパラレル機能

スライド 1

OracleDBA(パフォーマンスチューニング(SQL編) - コピー

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

<Insert Picture Here> 30 分で理解する ORACLE MASTER 日本オラクル株式会社 Oracle University


スライド 1

Oracle Database Clientリリース・ノート, 10gリリース1( ) for Microsoft Windows

PowerPoint Presentation

今さら聞けない!?大規模テーブルのパフォーマンスチューニング ~パーティショニング~

Oracle Direct 無償支援サービス ヒアリング・シート利用手順

1,.,,,., RDBM, SQL. OSS,, SQL,,.

CA Federation ご紹介資料

Oracle Database Technology Night ~ 集え! オラクルの力 ( チカラ ) ~ Oracle Database 18c テクノロジーシリーズ 2 RAC/Sharding と Data Guard/HA の機能強化 ~ Data Guard & HA ~ 日本オラクル

第 5 章 結合 結合のパフォーマンスに影響を与える結合の種類と 表の結合順序について内部動作を交えて 説明します 1. 結合処理のチューニング概要 2. 結合の種類 3. 結合順序 4. 結合処理のチューニングポイント 5. 結合関連のヒント

Oracle Real Application Clusters 10g: 第4世代

関係データベース

OpenRulesモジュール

Transcription:

Oracle Database Technology Night ~ 集え! オラクルの力 ( チカラ ) ~ Oracle Database 18c テクノロジーシリーズ 2 RAC/Sharding と Data Guard/HA の機能強化 ~ RAC/Sharding~ 日本オラクル株式会社ソリューション エンジニアリング統括クラウド インフラストラクチャー本部日下部明

以下の事項は 弊社の一般的な製品の方向性に関する概要を説明するものです また 情報提供を唯一の目的とするものであり いかなる契約にも組み込むことはできません 以下の事項は マテリアルやコード 機能を提供することをコミットメント ( 確約 ) するものではないため 購買決定を行う際の判断材料になさらないで下さい オラクル製品に関して記載されている機能の開発 リリースおよび時期については 弊社の裁量により決定されます Oracle と Java は Oracle Corporation 及びその子会社 関連会社の米国及びその他の国における登録商標です 文中の社名 商品名等は各社の商標または登録商標である場合があります

アジェンダ 1 2 Sharding Scalable SEQUENCE 3

Sharding 4

シャーディング データを水平分割する クライアント アクセスを分散してスケーラビリティを得る オンライン トランザクション処理向け 5

2 種類のシャーディング機能 Oracle Database Sharding (12.2~) 複数のデータベースに表パーティションを分散 Oracle RAC Sharding (18.1~) 1 つのデータベースの複数インスタンスに表パーティションのアフィニティを持たせる 6

クライアントはシャーディング キーを指定してアクセス Oracle Database Sharding (12.2~) 複数のデータベースに表パーティションを分散 Oracle RAC Sharding (18.1~) 1 つのデータベースの複数インスタンスに表パーティションのアフィニティを持たせる 7

Java のコード : 従来のコネクション取得方法 データ ソース (UCP) の getconnection() メソッドを呼ぶ Connection con = ods.getconnection();... // SQL 実行 // コネクションをプールから取得 con.commit(); con.close(); // コネクションをプールに返却 8

Java のコード : シャーディング キーを指定 シャーディング キーを指定して build() メソッドを呼ぶ Date shardingkeyval = new java.sql.date(0l); // シャーディング キーになる値 OracleShardingKey sdkey = ods.createshardingkeybuilder().subkey(shardingkeyval, OracleType.DATE).build(); // シャーディング キーを生成 Connection con = ods.createconnectionbuilder().shardingkey(sdkey).build(); // シャーディング キーを指定してコネクションをプールから取得... // SQL 実行 con.commit(); con.close(); // コネクションをプールに返却 9

Oracle Database Sharding 必要なエディション : DBCS-EE&HP(Shard 3 つまで ) EE, EE-ES, DBCS-EP, ExaCS(Shard 数制限無し ) 10

Oracle Database Sharding 複数の DB サーバーで論理 DB を構成 水平分割 パーティション キーを指定 DB サーバー間で共有ハードウェアを持たない 1 つのデータベースをシャードと呼ぶ 全体はシャード データベースと呼ぶ Shard Shard Shard Shard Database 11

Sharding の構成要素 業務ロジック DB への接続リクエスト Sharding の構成 管理フレームワーク Shard Catalog Client Shard Director Shard Catalog Sharding の構成情報や構成 管理タスクを保持するリポジトリ DB Shard Director 各 Shard に対する構成 管理処理の実行アプリケーション接続ルーティングを行うインスタンス (OS プロセス群 + 共有メモリ ) アプリケーションのデータを分散配置する DB 群 (Shard) Shard Shard Shard 12

アプリケーションから Oracle Database Sharding への接続 Direct Routing Sharding Key を指定して Shard Director からのリダイレクトで適切な Shard に直接接続する Shard Catalog Shard Director 1 接続リクエスト Client 2 適切な Shard にリダイレクト Proxy Routing Client から Shard Catalog に SQL 実行 Shard Catalog は SQL から適切な Shard を判断し実行 結果を Client に戻す Client 1SQL 実行 3 結果を戻す Shard Catalog 2SQL を変換し 適切な Shard で実行 Shard Shard Shard Shard Shard Shard 13

シャードに使用できるデータベースの構成 Multitenant Support 12c まではシャードとして使えるのは non-cdb のみ 18c からはシャードとして PDB が使える ただし Oracle Database Sharding 構成に組み込むことができるPDBは1つのCDBにつき1つ CDBは他の非 Shard PDBを含むことができる Shard1 Shard2 Shard3 PDB1 PDB1 PDB1 Shard1 Shard2 Shard3 PDB1 PDB2 PDB3 CDB1 CDB2 CDB3 構成可 CDB1 構成不可 14

データの配置 シャード表 パーティション表 パーティション キーで水平分割 各シャードで排他な内容を持つ 重複表 パーティション化できない表 すべてのシャードで同じ内容を持つ シャード カタログにも同じ内容を持つ マテリアライズド ビューで伝搬 CREATE SHARDED TABLE... CREATE DUPLICATED TABLE... Shard Catalog Shard Catalog Shard Shard 15

シャード表のパーティショニング方式 12.2 システム管理シャーディング 各シャードへのデータの配置はシステムが決める コンシステント ハッシュ コンポジット シャーディング レンジ - コンシステント ハッシュ リスト - コンシステント ハッシュ 18~ ユーザー定義シャーディング 特定のパーティションを特定のシャードに対応付ける レンジ ( ただしインターバルは不可 ) リスト 16

シャード表の配置 fhash() コンシステント ハッシュ関数 P1 P2 P3 レンジ パーティション表 リスト パーティション表 表領域セット tbs1 tbs2 tbs3 表領域 Shard 1 Shard 2 Shard 3 システム管理シャーディング 1. 表領域セットを構成 2. システムがパーティション配置を決定 Shard 1 Shard 2 Shard 3 ユーザー定義シャーディング 1. 特定の表領域を特定のシャードに構成 2. 特定のパーティションを特定の表領域に配置 17

システム管理シャーディング複数のシャードにまたがる表領域セットを構成 CREATE TABLESPACE SET ts1 USING TEMPLATE ( DATAFILE SIZE 10M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K SEGMENT SPACE MANAGEMENT AUTO ONLINE ); 表領域セット ts1 Shard 1 Shard 2 Shard 3 18

システム管理シャーディングコンシステント ハッシュ表 CREATE SHARDED TABLE customers ( cust_id NUMBER NOT NULL :, CONSTRAINT cust_pk PRIMARY KEY(cust_id) ) PARTITION BY CONSISTENT HASH (cust_id) PARTITIONS AUTO TABLESPACE SET ts1 ; fhash() 表領域セット ts1 Shard 1 Shard 2 Shard 3 19

ユーザー定義シャーディングのメリット - 地理分散 リニアなスケーラビリティ / 計画停止の制御 Sharding 構成の DB Linear Scalability & Geo Distribution Customers Americas Customers Europe Customers Asia 20

ユーザー定義シャーディング シャード領域と表領域を対応付ける GDSCTL コマンドを使ってシャード領域を作成 GDSCTL> ADD SHARDSPACE -SHARDSPACE west; GDSCTL> ADD SHARDSPACE -SHARDSPACE central; GDSCTL> ADD SHARDSPACE -SHARDSPACE east; GDSCTL> ADD SHARD -CONNECT shard1 -SHARDSPACE west; GDSCTL> ADD SHARD -CONNECT shard2 -SHARDSPACE central; GDSCTL> ADD SHARD -CONNECT shard3 -SHARDSPACE east; シャード領域を指定して表領域を作成 CREATE TABLESPACE tbs1 IN SHARDSPACE west; CREATE TABLESPACE tbs2 IN SHARDSPACE west; shard1 shard2 Shard3 P_NorthWest Tablespace : tbs1 P_SouthWest Tablespace : tbs2 Shardspace west P_NorthCentral Tablespace : tbs3 P_SouchCentral Tablespace : tbs4 Shardspace central P_NorthEast Tablespace : tbs5 P_SouthEast Tablespace : tbs6 Shardspace east CREATE TABLESPACE tbs3 IN SHARDSPACE central; CREATE TABLESPACE tbs4 IN SHARDSPACE central; CREATE TABLESPACE tbs5 IN SHARDSPACE east; CREATE TABLESPACE tbs6 IN SHARDSPACE east; 21

ユーザー定義シャーディング レンジ / リスト パーティション表 各パーティションを格納する表領域を指定 CREATE SHARDED TABLE accounts ( id NUMBER, account_number NUMBER, customer_id NUMBER, branch_id NUMBER, state VARCHAR(2) NOT NULL, status VARCHAR2(1) ) PARTITION BY LIST (state) ( PARTITION p_northwest VALUES ('OR', 'WA') TABLESPACE tbs1, PARTITION p_southwest VALUES ('AZ', 'UT', 'NM') TABLESPACE tbs2, PARTITION p_northcentral VALUES ('SD', 'WI') TABLESPACE tbs3, PARTITION p_southcentral VALUES ('OK', 'TX') TABLESPACE tbs4, PARTITION p_northeast VALUES ('NY', 'VM', 'NJ') TABLESPACE tbs5, PARTITION p_southeast VALUES ('FL', 'GA') TABLESPACE tbs6 ) 22

シャード表に対する SQL 実行 あるシャードから別のシャードは参照できない スケーラビリティを得るためには Direct Routing を想定 シャード カタログからは全シャードのデータを参照できる マルチシャード クエリ Client Client Shard Catalog Shard 23

シャード表の参照 特定のシャードで実行 そのシャードにある行のみ見える SQL> select * from accounts; ID ACCOUNT_NUMBER CUSTOMER_ID BRANCH_ID ST S ---------- -------------- ----------- ---------- -- - 1 1 1 1 OR Y 2 2 2 2 WA Y 3 3 3 3 AZ Y 4 4 4 4 UT Y 5 5 5 5 NM Y シャード カタログで実行 すべての行が見える SQL> select * from accounts; ID ACCOUNT_NUMBER CUSTOMER_ID BRANCH_ID ST S ---------- -------------- ----------- ---------- -- - 1 1 1 1 OR Y 2 2 2 2 WA Y 3 3 3 3 AZ Y 4 4 4 4 UT Y 5 5 5 5 NM Y 6 6 6 6 SD Y 7 7 7 7 WI Y 8 8 8 8 OK Y 9 9 9 9 TX Y 10 10 10 10 NY Y 11 11 11 11 VM Y 12 12 12 12 NJ Y 13 13 13 13 FL Y 14 14 14 14 GA Y 24

シャード表の参照 シャード カタログからのデータの参照 停止しているシャードがある場合にはマルチシャード クエリは失敗する SQL> select * from accounts; select * from accounts * ERROR at line 1: ORA-02519: cannot perform cross-shard operation. Chunk "3" is unavailable ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 21843 ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86 ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 21808 ORA-06512: at "GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN", line 21860 ORA-06512: at line 1 25

シャード表の更新 別のシャードに対するデータは格納出来ない ( 下記は Shard1 で実行 ) ### Shard1 に配置されるはずのデータを Shard1 で INSERT SQL> insert into accounts values (1,1,1,1,'OR','Y'); 1 行が作成されました SQL> commit; コミットが完了しました ### Shard3 に配置されるはずのデータを Shard1 で INSERT SQL> insert into accounts values (14,14,14,14,'GA','Y'); insert into accounts values (14,14,14,14,'GA','Y') * 行 1 でエラーが発生しました : ORA-14466: 読取り専用のパーティションまたはサブパーティション内のデータは変更できません Client Shard1 Shard2 Shard3 26

シャード表のジョイン KVS モデルとは異なり RDMBS では表のジョインという概念がある ジョインする対象が同じシャードに配置されている必要がある Client 表 A 表 B Shard 1 Shard 2 Shard 3 27

表ファミリ 複数のシャード表の間に親子関係を持たせる システム管理シャーディングの親表のパーティションと子表のパーティションを同じシャードに配置する 親子関係がある一連のシャード表を表ファミリと呼ぶ 親を持たない表をルート表と呼ぶ 複数のルート表を持つことはできない 親子関係の定義 リファレンス パーティション PARENT 句 親表 A 子表 B Shard 1 Shard 2 Shard 3 28

表ファミリリファレンス パーティション - 外部キーで親表と同じパーティションの区切り方 親表 プライマリ キーとパーティション キーが CustNo 列 CREATE SHARDED TABLE Customers ( CustNo NUMBER NOT NULL, Name VARCHAR2(50), Address VARCHAR2(250), CONSTRAINT RootPK PRIMARY KEY(CustNo) ) PARTITION BY CONSISTENT HASH (CustNo) PARTITIONS AUTO TABLESPACE SET ts1 ; 子表 外部キーが親表のパーティション キー 外部キーでリファレンス パーティション CREATE SHARDED TABLE Orders ( OrderNo NUMBER NOT NULL, CustNo NUMBER NOT NULL, OrderDate DATE, CONSTRAINT OrderPK PRIMARY KEY (CustNo, OrderNo), CONSTRAINT CustFK FOREIGN KEY (CustNo) REFERENCES Customers(CustNo) ) PARTITION BY REFERENCE (CustFK) ; 29

表ファミリ PARENT 句 - 明示的に親子関係を定義 親表 パーティション キーが CustNo 列 CREATE SHARDED TABLE Customers ( CustNo NUMBER NOT NULL, Name VARCHAR2(50), Address VARCHAR2(250), region VARCHAR2(20), class VARCHAR2(3), signup DATE ) PARTITION BY CONSISTENT HASH (CustNo) PARTITIONS AUTO TABLESPACE SET ts1 ; 子表 親表と同じパーティション キー PARENT 句で親表の名前を指定 CREATE SHARDED TABLE Orders ( OrderNo NUMBER, CustNo NUMBER NOT NULL, OrderDate DATE ) PARENT Customers PARTITION BY CONSISTENT HASH (CustNo) PARTITIONS AUTO TABLESPACE SET ts1 ; 30

重複表 必ずしもすべての表がシャード表にできるとは限らない シャード表はシャードをまたがったジョインができない すべてのシャードで同じ内容を持つ表を構成できる シャード カタログにある内容をマテリアライズド ビューでシャードに伝搬 CREATE DUPLICATED TABLE... Shard Catalog Shard 31

重複表の更新 12.2 シャード カタログ上でのみ更新可能 各シャードに伝搬 18~ 各シャード上でも更新可能 シャード カタログで更新され各シャードに伝搬 UPDATE... Shard Catalog UPDATE... Shard Catalog Shard Shard 32

Oracle RAC Sharding 必要なエディション : RAC と同様 33

Oracle RAC Sharding SHARDING_KEY=1234 Client アプリケーション側で定義されたキー (Sharding Key) によって接続するインスタンスを自動的に決定 Instance 1 No. 0-3333 Instance 2 No. 3334-6667 Instance 3 No. 6668-9999 通常の RAC データベース構成における論理的なパーティショニング データは全インスタンスからアクセス可能 各インスタンスのキャッシュの効率利用 Cache Fusion インスタンス間競合の減少 Oracle RAC Database 34

Oracle RAC Sharding パーティション表のパーティションにキャッシュのアフィニティを持たせる SQL> ALTER SYSTEM ENABLE AFFINITY [ schema.]table [SERVICE service_name ]; パーティション表 35

データのアクセス範囲 Oracle Database Sharding (12.2~) 特定のシャードのみ ( パーティションをまたがるジョインは不可 ) Oracle RAC Sharding (18.1~) 複数のパーティションにまたがるアクセスは可能 ( シングル インスタンスと変わらない ) 36

Sharding データの水平分割でクライアント アクセスを分散 オンライン トランザクション処理向け シャーディング キーを指定したアクセス Oracle Database Sharding Oracle RAC Sharding データベース構成複数のデータベースの集合 1 つのデータベース スキーマ構成シャード表 / 重複表パーティション表 / 非パーティション表 データのアクセス範囲特定のシャードのみすべてのデータにアクセス可能 停止の影響 シャードの停止が別のシャードに影響しない インスタンス障害時わずかな時間ほかのインスタンスに影響する 37

リファレンス Oracle Database 12c Release 2 データベース管理者ガイド 第 VII 部シャード データベースの管理 Oracle Database 18c シャーディングに関するマニュアルが独立 Oracle Sharding の使用 38

Scalable SEQUENCE 39

SEQUENCE のよくある使い方 PRIMARY KEY などに使用する一意な値を採番する SQL> CREATE TABLE orders( orderid NUMBER, : CONSTRAINT orders_pk PRIMARY KEY (orderid) ); orders 表 INSERT INTO orders VALUES (seq.nextval,...) 40

索引の付いている列に SEQUENCE で生成した値を INSERT B* ツリー索引は列の値を昇順に格納している 最も大きな値を格納するリーフ ブロックに更新が集中する SQL> CREATE TABLE orders( orderid NUMBER, : CONSTRAINT orders_pk PRIMARY KEY (orderid) ); B* ツリー索引 INSERT INTO orders VALUES (seq.nextval,...) oracle oracle oracle 同時セッション数が多い場合に更新競合 41

RAC での問題 最も大きな値を格納するリーフ ブロックの転送待ちが頻発する oracle oracle oracle INSERT INTO orders VALUES (seq.nextval,...) oracle oracle oracle Buffer Cache Buffer Cache インスタンス 1 インスタンス 2 42

R12.2までの緩和方法更新されるリーフ ブロックを分散させる fhash(x) INSERT INTO table_name VALUES (seq.nextval,...) 1 0 1 1 0 0 0 1 ビット列反転 1 0 0 0 1 1 0 1 ALTER SEQUENCE seq CACHE 10000 NOORDER; 1 : 10000 10001 : 20000 ハッシュ パーティション索引 逆キー索引 CACHE 値増加 43

Scalable SEQUENCE CREATE SEQUENCE seq SCALE [ NOEXTEND EXTEND ] インスタンス ID とセッション ID がインクリメントされる値のプレフィックスに付く 1 0 1 2 7 1 0 0 0 0 1 セッションID % 1000 インスタンスID % 100 + 100 インクリメントされていく値 44

Scalable SEQUENCE INSERT INTO table_name VALUES (seq.nextval,...) 異なるインスタンス間ではインスタンス ID で分散される 同一インスタンス内の異なるセッション間ではセッション ID で分散される インスタンス 1 インスタンス 2 セッション 100 セッション 200 セッション 300 セッション 400 oracle oracle oracle oracle B* ツリー索引 45

CREATE SEQUENCE... SCALE [NOEXTEND EXTEND] NOEXTEND と EXTEND の桁数の処理の違い NUMBER 型 : 最大 38 桁 ( 従来の )SEQUENCE: 最大 28 桁 SCALE NOEXTEND プレフィックス 6 桁を含めて最大 28 桁 SCALE EXTEND プレフィックス 6 桁 + 最大 28 桁 46

CREATE SEQUENCE... SCALE NOEXTEND; 従来のSEQUENCEの最大桁数に収まる SQL> SELECT seq3.nextval as val FROM dual; VAL ----------------------------------------- 1012710000000000000000000002 101 271 0000000000000000000002 インクリメントされていく値 (MAXVALUEの桁 - 3 桁 - 3 桁 ) セッションID % 1000 (3 桁 ) インスタンスID % 100 + 100 (3 桁 ) MAXVALUE の桁 ( 最大 28 桁 ) 47

CREATE SEQUENCE... SCALE EXTEND; SEQUENCEの最大桁数が拡張される ( インクリメントされる桁の互換性 ) SQL> SELECT seq2.nextval as val FROM dual; VAL ----------------------------------------- 1012710000000000000000000000000003 101 271 0000000000000000000000000003 インクリメントされていく値 (MAXVALUEの桁: 最大 28 桁 ) セッションID % 1000 (3 桁 ) インスタンスID % 100 + 100 (3 桁 ) 3 桁 + 3 桁 + MAXVALUE の桁 48

Scalable SEQUENCE 索引をつけた列に SEQUENCE の値を INSERT するときに発生する問題 索引リーフ ブロックの更新競合が発生しやすい 更新ブロックを分散させて競合を緩和するチューニング Scalable SEQUENCE 生成される値をインスタンス ID とセッション ID のプレフィックスで大きく離す 連番でも単調増加でもない一意な値 桁数が固定 49

テック ナイトアーカイブ資料とお役立ち情報 各回テック ナイトセッション資料ダウンロードサイト oracle technight 技術コラムしばちょう先生の試して納得! DBA への道 技術コラム津島博士のパフォーマンス講座 もしもみなみんが DB をクラウドで動かしてみたら 50

51

みなさまの投稿をお待ちしております Twitter #OracleTechNight 52

Oracle Digital は オラクル製品の導入をご検討いただく際の総合窓口 電話とインターネットによるダイレクトなコニュニケーションで どんなお問い合わせにもすばやく対応します もちろん 無償 どんなことでも ご相談ください 53

54