技術ブログ
目次
Oracle ACE Proの渡部です。 主要なRDBMS製品を比較します。
立場の表明
表と同様に索引もパーティション化できます。
索引をパーティション化する方法として、ローカルとグローバルがあります。
Oracleはローカル索引とグローバル索引に対応していますが、MySQLとPostgreSQLはローカル索引にのみ対応しています。
ローカル索引を使用した実行計画と、グローバル索引を使用した実行計画を以下に示します。
SELECT * FROM sales1 WHERE order_id = 50
Plan hash value: 622186933
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | Pstart| Pstop | A-Rows | A-Time | Buffers |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | | 2 (100)| | | | 1 |00:00:00.01 | 3 |
| 1 | PARTITION RANGE SINGLE | | 1 | 1 | 12 | 2 (0)| 00:00:01 | 1 | 1 | 1 |00:00:00.01 | 3 |
| 2 | TABLE ACCESS BY LOCAL INDEX ROWID BATCHED| T1 | 1 | 1 | 12 | 2 (0)| 00:00:01 | 1 | 1 | 1 |00:00:00.01 | 3 |
|* 3 | INDEX RANGE SCAN | LIX_T1_ORD | 1 | 1 | | 1 (0)| 00:00:01 | 1 | 1 | 1 |00:00:00.01 | 2 |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access("ORDER_ID"=50)
SELECT * FROM t1 WHERE cust_id = 1001
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | Pstart| Pstop | A-Rows | A-Time | Buffers |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | | 2 (100)| | | | 3 |00:00:00.01 | 5 |
| 1 | PARTITION HASH SINGLE | | 1 | 1 | 16 | 2 (0)| 00:00:01 | 4 | 4 | 3 |00:00:00.01 | 5 |
| 2 | TABLE ACCESS BY GLOBAL INDEX ROWID BATCHED| T1 | 1 | 1 | 16 | 2 (0)| 00:00:01 | ROWID | ROWID | 3 |00:00:00.01 | 5 |
|* 3 | INDEX RANGE SCAN | GIX_T1_CST | 1 | 1 | | 1 (0)| 00:00:01 | 4 | 4 | 3 |00:00:00.01 | 2 |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access("CUST_ID"=1001)
Oracleは12.2以降で、パーティションの一部を索引対象外とする部分索引(パーシャル インデックス)に対応しています。
索引不要なパーティションに対して、索引を作成しないことで、 索引のメンテナンスコストを下げることができます。
リレーショナルデータベースで索引(インデックス)というと、たいていBツリー索引(Bツリーインデックス)のことです。当然ながら、今回取り上げたRDBMS製品はBツリー索引に対応しています。
Bツリー索引については、以下の記事を参照してください。
主要RDBMS製品の比較 – インデックスの仕組みと物理構造
しかし、リレーショナルデータベースにはBツリー以外の索引も存在します。 各RDBMS製品の、Bツリー以外の索引の対応状況は以下のとおりです。
Database Performance Analyzer (DPA) は、オンプレミス&クラウドに対応するデータベース性能監視/分析ツールです。
この記事で取り上げたRDBMS製品を含む、非常に多くのデータベース製品/サービスに対応しています。
以下の特徴があり、導入しやすく有用な製品です。
コーソルはDatabase Performance Analyzer (DPA)の一次代理店で、Database Performance Analyzer (DPA)の製品販売を行います。 SIer様、販社様がDatabase Performance Analyzer (DPA)を販売および導入することも可能です。
コーソルはデータベースの技術力を強みとしています。なかでもOracle Database技術力は日本随一です。MySQL、PostgreSQL、MS SQL Serverの資格や実績を持つエンジニアも多数在籍しております。
DPAの導入や監視設定に関する手順をナレッジとして公開しています。評価版をご利用される際の参考にしていただけると幸いです。
7年連続ORACLE MASTER Platinum取得者数No.1! Oracle Certification Award 2020
コーソルでは、データベース運用を製品とサービスでご支援します。
Database Performance Analyzer (DPA)は、オンプレミスとクラウド上の多くのデータベース製品に対応したデータベース性能管理製品です。低価格であるため、非常に導入しやすいです。
Database Performance Analyzer (DPA)で検出された問題SQLをチューニングする際に、Toad for Oracle / Toad for SQL Serverの SQL Optimizer機能を使用できます。
リモートDBAサービスはDB・運用の専門家がお客様のデータベースに対して 必要な時に必要な対応を行うリモート接続型運用保守サービスです。
データベース運用・保守なら常駐しないリモートDBA
時間制コンサルティングサービスは”必要な時に” ”必要な時間だけ”契約できる 時間契約型のコンサルティングサービスです。
データベース コンサルティングなら時間制コンサルティング