Sybase Home Theater System 127 User Manual

パフォーマンス&チューニング・ガイド  
®
Sybase IQ  
12.7  
Download from Www.Somanuals.com. All Manuals Search And Download.  
目次  
1 章  
発音によるローのマッチング ....................................................... 10  
探索条件を入力するためのショートカット.................................. 10  
2 章  
外部キーによって関連付けられたテーブル.................................. 22  
ジョイン演算子 .................................................................................... 22  
キー・ジョインを使用したテーブルのジョイン........................... 22  
ナチュラル・ジョインを使用したテーブルのジョイン................ 24  
アドホック・ジョインとジョイン・インデックスの使用 ................... 25  
ジョインとデータ型 ............................................................................. 25  
ストアまたはデータベース間ジョインのサポート .............................. 26  
リモート・データベースと異種データベースのクエ....................... 27  
サブクエリによるジョインの置き換え ................................................ 28  
パフォーマンス&チューニング・ガイド  
iii  
Download from Www.Somanuals.com. All Manuals Search And Download.  
目次  
3 章  
HTML クエリ・プランの使用 ....................................................... 37  
クエリ処理の制御 ................................................................................ 37  
4 章  
例:クエリ内でのウィンドウ関数................................................ 89  
例:ORDER BY の結................................................................ 93  
例:1 つのクエリ内で複数の集合関数を使用 .............................. 94  
例:ウィンドウ・フレーム指定の ROWS RANGE の比較 ..... 94  
例:現在のローを除外するウィンドウ・フレーム....................... 95  
例:ROW のデフォルトのウィンドウ・フレーム........................ 96  
例:UNBOUNDED PRECEDING と  
UNBOUNDED FOLLOWING................................................. 96  
例:RANGE のデフォルトのウィンドウ・フレーム.................... 97  
OLAP 関数の BNF 文法 ....................................................................... 98  
iv  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
目次  
5 章  
リソースを効率的に利用するための他の方法.................................... 137  
マルチプレックス・データベースのディスク領域の管理 .......... 137  
クエリ・サーバ間のロード・バランス ....................................... 137  
データベース・アクセスの制限 .................................................. 137  
ディスクのキャッシュ................................................................. 138  
インデックスのヒント........................................................................ 138  
正しいインデックス・タイプの選........................................... 138  
ジョイン・インデックスの使用 .................................................. 139  
削除のための十分なディスク領域の確保.................................... 139  
パフォーマンス&チューニング・ガイド  
v
Download from Www.Somanuals.com. All Manuals Search And Download.  
目次  
非正規化の決定........................................................................... 142  
ロードを高速化するための UNION ALL ビューの使用 ..................... 143  
6 章  
バッファ・キャッシュ・モニタの停止....................................... 164  
モニタリング結果の検査と保存 ................................................. 164  
7 章  
Windows システムでのサーバのチューニン.................................. 177  
パフォーマンスについての一般的なガイドライ............................ 177  
スループットの最大................................................................ 177  
メモリの割り付け超過の防止 ..................................................... 178  
物理メモリのモニタリング......................................................... 178  
ファイル・システム ................................................................... 178  
パフォーマンスのモニタリング......................................................... 179  
仮想アドレス空間とワーキング・セットのモニタリン.......... 179  
ページ・フォールトのモニタリング .......................................... 180  
vi  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
目次  
NTFS キャッシュの使用..................................................................... 180  
挿入とクエリのチューニン............................................................. 181  
適切にチューニングされた挿入オペレーションの特性 .............. 181  
クエリのチューニング................................................................. 182  
バックアップ操作のチューニング...................................................... 182  
索引....................................................................................................................................................... 185  
パフォーマンス&チューニング・ガイド  
vii  
Download from Www.Somanuals.com. All Manuals Search And Download.  
目次  
viii  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
はじめに  
このマニュアルの内容  
対象読者  
このマニュアルではフォーマンスとチューニングの推奨事項について  
説明します。  
ム管理者とデータベース管理者を対象としています。リレーショナル・  
データベース・システムの基礎知識と、Sybase IQ のユーザ・レベルの基  
本的な経験があることを前提にしています。このマニュアルは、他のマ  
ニュアルとともに使用してください。  
このマニュアルの使用方法  
次のリストは、行う作業や必要性に応じてどの章を参照すべきかを示し  
ます。  
SELECT 文の構築については「第 1 章 データベース・テーブルから  
のデータの選択」を参照してください。  
ジョイン条件については「第 2 章 テーブルのジョイン」を参照して  
ください。  
クエリの最適化については「第 3 クエリと削除の最適化」を参照  
してください。  
メモリ、ディスク I/OCPU の調整については「第 5 章 システム・  
リソースの管理」を参照してください。  
パフォーマンスについては「第 6 章 パフォーマンスのモニタリング  
とチューニング」を参照してください。  
Windows パフォーマンスについては「第 7 Windows システムでの  
サーバのチューニング」を参照してください。  
関連マニュアル  
Sybase IQ には次のマニュアルが用意されています。  
Sybase IQ の概要Sybase IQ Sybase Central™ データベース管理  
ツールに慣れていないユーザのための説明と練習が記載されています。  
Sybase IQ 12.7 の新機能Sybase IQ の新機能の概略を説明してい  
ます。  
Sybase IQ パフォーマンス&チューニンイド大なデータ  
ベースのクエリ最適化ューニングについて説明しています。  
Sybase IQ システム管理ガイドSybase IQ がサポートする、管理  
面の概念と手順および最適なパフォーマンスのチューニングについ  
て説明していますIQ ストアの管理方法についても説明しています。  
パフォーマンス&チューニング・ガイド  
ix  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
Sybase IQ トラブルシューティングおよびリカバイド題の解  
決方法ステム・リカバリの実行方法ータベースの修復方法を紹介  
しています。  
Sybase IQ エラッセージSybase IQ エラッセージ (SQLCode、  
SQLStateSybase エラードによって参照 )お よ び SQL プリプロセッ  
サのエラーと警告を示します。  
Sybase IQ ユーティリティ・ガイドSybase IQ ユーティリティ・プロ  
グラムのリファレンス項目 ( 使用可能な構文ラメータプションな  
) について説明しています。  
Sybase IQ によるラージ・オブジェクト管理Sybase IQ データ・リポ  
ジトリ内での BLOB (Binary Large Object) よび CLOB (Character Large  
Object) の格納と取得について説明しています。このオプションの製品を  
インストールするには、別のライセンスが必要です。  
Sybase IQ インストールおよび設定ガイド』- プラットフォーム固有の  
Sybase IQ のインストール手順バージョンの Sybase IQ へのマイグレー  
ト、特定のプラットフォームでの Sybase IQ の設定について説明してい  
ます。  
Sybase IQ リリーート品およびマニュアルに加えられた最新  
の変更内容について説明しています。  
Sybase IQ の暗号化カラムSybase IQ データ・リポジトリ内でのユー  
ザによるカラムの暗号化の使用について説明していますのオプション  
の製品をインストールするには、別のライセンスが必要です。  
Sybase IQ Adaptive Server Anywhere  
Sybase IQ SQL Anywhere® Studio のコンポーネントである Adaptive Server®  
Anywhere を拡張した製品のため、Adaptive Server Anywhere と同じ機能を数多  
くサポートしています。Sybase IQ のマニュアル・セットは、SQL Anywhere  
Studio のマニュアルの該当する箇所を参照しています。  
Adaptive Server Anywhere には、次のマニュアルがあります。  
Adaptive Server Anywhere プログラミング・ガイドODBCEmbedded  
SQL™、または Open Client™ インタフェースに直接アクセスするプログ  
ラムを開発するアプリケーション開発者を対象にしていますのマニュ  
アルでは、Adaptive Server Anywhere アプリケーションの開発方法につい  
て説明しています。  
Adaptive Server Anywhere データベース管理ガイドべてのユーザを  
対象にータベースとデータベース・サーバの運用、管理、設定につい  
て説明しています。  
x
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
はじめに  
Adaptive Server Anywhere SQL リファレンス・マニュアル』- Adaptive  
Server Anywhere 使用する SQL 語のリファレンスで、  
Adaptive Server Anywhere のシステム・テーブルとプロシージャについて  
も説明します。  
Sybase Product Manuals Web サイトでもSQL Anywhere Studio 9.0.2 コレクショ  
ンの Adaptive Server Anywhere マニュアルを参照できます。Product Manuals  
(http://www.sybase.com/support/manuals/) にアクセスしてください。  
その他の情報ソース  
Sybase Getting Started CDSybase CDSybase Product Manuals Web サイトを利  
用すると、製品について詳しく知ることができます。  
Getting Started CD にはPDF 形式のリリース・ノートとインストール・ガイ  
よび SyBooks CD に含まれていないその他のマニュアルや更新情報が  
収録されています。この CD は製品のソフトウェアに同梱されています。  
Getting Started CD に収録されているマニュアルを参照または印刷するには、  
Adobe Acrobat Reader が必要です (CD 内のリンクを使用して Adobe Web サ  
イトから無料でダウンロードできます )。  
SyBooks CD には製品マニュアルが収録されています。この CD は製品の  
ソフトウェアに同梱されています。Eclipse ベースの SyBooks ブラウザで  
は、使いやすい HTML 形式のマニュアルにアクセスできます。  
一部のマニュアルは PDF 形式で提供されています。それらのマニュアル  
SyBooks CD PDF ディレクトリに収録されています。PDF ファイル  
を開いたり印刷したりするには、Adobe Acrobat Reader が必要です。  
SyBooks をインストールして起動するまでの手順については、Getting Started  
CD の『SyBooks Installation Guide』または SyBooks CD README.txt ファイ  
ルを参照してください。  
Sybase Product Manuals Web サイトはSyBooks CD のオンライン版であり、  
標準の Web ブラウザを使ってアクセスできます。また、製品マニュアル  
のほかEBFs/MaintenanceTechnical DocumentsCase ManagementSolved  
Cases、ニュース・グループ、Sybase Developer Network へのリンクもあり  
ます。  
Sybase Product Manuals Web サイトにアクセスするには、Product Manuals  
(http://www.sybase.com/support/manuals/) にアクセスしてください。  
Infocenter はオンライン・バージョンの SyBooks であり、標準の Web ブラ  
ウザで表示できますInfocenter Web サイトにアクセスするにはSybooks  
Online Help (http://infocenter.sybase.com/help/index.jsp) にアクセスして  
ください。  
パフォーマンス&チューニング・ガイド  
xi  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
Web 上の Sybase 製品  
の動作確認情報  
Sybase Web サイトの技術的な資料は頻繁に更新されます。  
製品動作確認の最新情報にアクセスする  
1
Web ブラウザで Technical Documents を指定します。  
2
3
[Certification Report] をクリックします。  
[Certification Report] フィルタで製品ラットフォーム間枠を指定し  
[Go] をクリックします。  
4
[Certification Report] のタイトルをクリックして、レポートを表示します。  
コンポーネント動作確認の最新情報にアクセスする  
1
2
3
Web ブラウザで Availability and Certification Reports を指定します。  
[Search By Base Product] で製品ファミリとベース製品を選択するか、  
[Search by Platform] でプラットフォームとベース製品を選択します。  
[Search] をクリックして、入手状況と動作確認レポートを表示します。  
Sybase Web サイト ( サポート・ページを含む ) の自分専用のビューを作成する  
MySybase プロファイルを設定します。MySybase は無料サービスです。この  
サービスを使用すると、Sybase Web ページの表示方法を自分専用にカスタマ  
イズできます。  
1
Web ブラウザで Technical Documents を指定します。  
2
[MySybase] をクリックし、MySybase プロファイルを作成します。  
Sybase EBF とソフト  
ウェア・メンテナンス  
EBF とソフトウェア・メンテナンスの最新情報にアクセスする  
1
2
3
Web ブラウザで Sybase Support Page (http://www.sybase.com/support)  
を指定します。  
[EBFs/Maintenance] を選択します。ユーザ名とパスワードの入力が求めら  
れたら、MySybase のユーザ名とパスワードを入力します。  
製品を選択します。  
xii  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
はじめに  
4
5
時間枠を指定して [Go] をクリックしますEBF/Maintenance リリースのリ  
ストが表示されます。  
鍵のアイコンは、自分が Technical Support Contact として登録されていな  
いため部の EBF/Maintenance リリースをダウンロードする権限がない  
ことを示しています。未登録ではあるが、Sybase 担当者またはサポート・  
コンタクトから有効な情報を得ている場合は、[Edit Roles] をクリックし  
Technical Support Contact割を MySybase プロファイルに追加します。  
EBF/Maintenance レポートを表示するには [Info] アイコンをクリックします。  
ソフトウェアをダウンロードするには製品の説明をクリックします。  
SQL 構文の表記規則  
このマニュアルで、構文の説明に使用する表記規則は次のとおりです。  
キーワード SQL キーワードは大文字で示します。ただし、SQL キーワー  
ドは大文字と小文字を区別しないので力するときはどちらで入力して  
もかまいません。たとえば、SELECT Select でも select でも同じです。  
プレースホルダ 適切な識別子または式で置き換えられる項目は体で表  
記します。  
継続 省略記号 (…) で始まる行はの行から文が続いていることを表し  
ます。  
繰り返し項目 繰り返し項目のリストはストの要素の後ろに省略記号 ( ピ  
リオド 3 ...) を付けて表します。複数の要素を指定できます。複数の要素  
を指定する場合は、各要素間はカンマで区切る必要があります。  
オプション指定部分 文のオプション指定部分はカッコで囲みます:  
RELEASE SAVEPOINT [ savepoint-name ]  
この例では、savepoint-name がオプション部分です。角カッコは入力しな  
いでください。  
オプション 項目リストから 1 つだけ選択しなければならない場合、また  
何も選択する必要のない場合は目間を縦線で区切りスト全体を角  
カッコで囲みます。例:  
[ ASC | DESC ]  
この例では、ASCDESC のどちらか 1 つを選択しても、何も選択しなく  
てもかまいません。角カッコは入力しないでください。  
選択肢 オプションの中の 1 つを必ず選択しなければならない場合は、選  
択肢を大カッコ { } で囲みます。例:  
QUOTES { ON | OFF }  
この例では、ONOFF のどちらかを必ず入力しなければなりません。大  
カッコ自体は入力しないでください。  
パフォーマンス&チューニング・ガイド  
xiii  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
書体の表記規則  
1 に、このマニュアルで使用している書体の表記規則を示します。  
1: 書体の表記規則  
項目  
説明  
Code  
SQL およびプログラム・コードは等幅 ( 固定幅 ) 文字フォントで  
表記します。  
User entry  
ユーザが入力するテキストには等幅 ( 固定幅 ) 文字フォントを使  
用します。  
「強調」  
強調する言葉は「 」で囲みます。  
ファイル名は斜体で表記します。  
file names  
database objects  
テーブルロシージャなどのデータベース・オブジェクトの名  
前は刷物ではゴシック体フォントでンラインでは斜体で  
表記します。  
サンプル・データベース  
Sybase IQ にはサンプル・データベースが用意されています。Sybase IQ マニュ  
アルで紹介している例の多くはのサンプータベースによるものです。  
サンプル・データベースは小規模企業の例を示しています。データベースに  
の企業の内部情報 (employeedepartment) とともに品情報 (product)、  
販売情報 (sles_ordercustomercontact)、財務情報 (fin_codefin_data) が入っ  
ています。  
サンプータベース ( ファイル名 asiqdemo.db) UNIX システムでは  
$ASDIR/demo ディレクトリにWindows システムでは %ASDIR%¥demo ディ  
レクトリにあります。  
アクセシビリティ機能  
このマニュアルには、アクセシビリティを重視した HTML 版もあります。こ  
HTML 版マニュアルは、スクリーン・リーダーで読み上げる、または画面  
を拡大表示するなどの方法により、その内容を理解できるよう配慮されてい  
ます。  
Sybase IQ 12.7 HTML マニュアルは、連邦リハビリテーション法第 508 条の  
アクセシビリティ規定に準拠していることがテストにより確認されています。  
508 条に準拠しているマニュアルは通常World Wide Web Consortium (W3C)  
Web サイト用ガイドラインなど、米国以外のアクセシビリティ・ガイドラ  
インにも準拠しています。  
Sybase Central Sybase IQ プラグインのアクセシビリティへの対応について  
Sybase IQ の概要』の「アクセシビリティ機能の使用」を参照してくださ  
の製品のオンライン・ヘルプは、スクリーン・リーダーの読み上げで内  
容を理解でき、Sybase Central のキーボード・ショートカットなどのアクセシ  
ビリティ機能についての説明もあります。  
xiv  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
はじめに  
アクセシビリティ・ツールの設定  
アクセシビリティ・ツールを効率的に使用するには定が必要な場合もありま  
部のスクリーン・リーダーは、テキストの大文字と小文字を区別して発音  
しますとえばべて大文字のテキスト (ALL UPPERCASE TEXT など ) はイ  
ニシャルで発音し文字と小文字の混在したテキスト (MixedCase Text など ) は  
単語として発音します文規則を発音するようにツールを設定すると便利かも  
しれません細についてはールのマニュアルSybase IQ の概要「ス  
クリーン・リーダの使用」を参照してください。  
Sybase のアクセシビリティに対する取り組みについてはSybase Accessibility  
(http://www.sybase.com/accessibility) を参照してくださいSybase Accessibility  
サイトには、第 508 条と W3C 標準に関する情報へのリンクもあります。  
Sybase IQ の第 508 条準拠の声明については、Sybase Accessibility  
(http://www.sybase.com/accessibility) を参照してください。  
不明な点があるときは  
サポート契約を購入済みの Sybase 製品のインストールには、定められた 1 人  
以上のユーザに対してSybase 製品の保守契約を結んでいるサポーンタ  
を利用する権利が付属しますニュアルだけでは解決できない問題があった  
場合には、担当の方を通して Sybase のサポート・センタまでご連絡ください。  
パフォーマンス&チューニング・ガイド  
xv  
Download from Www.Somanuals.com. All Manuals Search And Download.  
xvi  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
1
データベース・テーブルからのデータの  
選択  
この章について  
この章では本的なクエリの構築と製品設計を活用するための手法に  
け、カラムとローの選択、探索条件を使ったクエリの絞り込みを行う  
内容  
トピック名  
ページ  
2
前提条件  
3
テーブル情報の表示  
クエリ結果の順序付け  
カラムとローの選択  
探索条件の使用  
集約データの取得  
分析データの取得  
重複したローの削除  
5
6
7
11  
17  
18  
パフォーマンス&チューニング・ガイド  
1
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
前提条件  
前提条件  
DBISQL の代わりにグラフィカルなフロントエンールを使用してデータ  
ベースへのクエリを実行すると、ツールが生成する SQL 構文を表示できる場  
合があります。たとえば、InfoMaker では [ テーブル ] ペインタ・バーの [SQL  
構文 ] ボタンを選択して SQL 文を表示できます。  
このチュートリアルでは、データベースから情報を取得するときに使用する  
SELECT 文について説明しますSELECT 文のことを一般にクエリと呼びます。  
これは、SELECT 文がデータベース内の情報についてデータベース・サーバに  
問い合わせるためです。  
注意 SELECT 文は用途の広いコマンドです。大きなデータベースから非常に  
具体的な情報を取得するアプリケーションではSELECT 文がきわめて複雑に  
なる場合があります。このチュートリアルでは、単純な SELECT 文だけを使  
用します。以降のチュートリアルで、より高度なクエリについて説明します。  
SELECT 文の完全な構文についてはSybase IQ リファレンス・マニュアル』  
「第 6 SQL 文」SELECT 文」を参照してください。  
チュートリアルのレッスンを読んで実行している間はンピュータで Sybase  
IQ ソフトウェアを実行しておくことが理想的です。  
このチュートリアルではでに DBISQL を起動しンプル・データベース  
に接続していることを前提にしています。まだこれらを行っていない場合は、  
Sybase IQ ユーティリティ・ガイド』の「第 2 Interactive SQL (dbisql) の使  
用」を参照してください。  
2
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
1 章 データベース・テーブルからのデータの選択  
テーブル情報の表示  
ここでは、employee テーブルのデータを表示します。  
このチュートリアルで使用するサンプータベースは空の会社のもの  
ですータベースには業員文などについての情報が格納され  
ています。すべての情報はテーブルに編成されています。  
テーブルのリスト  
Sybase IQ の概要Sybase Central [ テーブル ] フォルダを開いてテー  
ブルのリストを表示する方法について説明しましたステム・ストアド・プ  
ロシージャの sp_iqtable を使用して、Interactive SQL からユーザ・テーブルを  
リストすることもできますステム・ストアド・プロシージャはSybase IQ  
にストアド・プロシージャとして実装されているシステム関数です。  
[SQL ] ウィンドウで sp_iqtableと入力し、同じ名前のシステム・ストア  
ド・プロシージャを実行します。  
システム・ストアド・プロシージャの詳細についてはSybase IQ リファレン  
ス・マニュアル「第 10 章 システム・プロシージャを参照してください。  
パフォーマンス&チューニング・ガイド  
3
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
テーブル情報の表示  
SELECT 文の使用  
このレッスンではータベース内のテーブルの 1 つを表示します使用する  
コマンドは、employee という名前のテーブル全体を表示します。  
次のコマンドを実行します。  
SELECT * FROM employee  
アスタリスクは、テーブル内のすべてのカラムを表す省略記号です。  
SELECT 文は employee テーブルのすべてのローとカラムを取得し、DBISQL  
[ 結果 ] ウィンドウに次の該当するものが表示されます。  
emp_id  
102  
manager_id  
emp_fname  
Fran  
emp_lname  
Whitney  
Cobb  
dept_id  
100  
501  
501  
902  
1293  
501  
105  
Matthew  
Philip  
100  
129  
Chin  
200  
148  
Julie  
Jordan  
300  
160  
Robert  
Breault  
100  
employee テーブルにはカラムに編成された複数のローが格納されています。  
各カラムにはemp_lname emp_id などの名前が付いています社の従業  
1 人ずつに 1 つのローがあり、それぞれのローは各カラムに値を持ちます。  
たとえば、従業員 ID 102 の従業員は Fran Whitney であり、そのマネージャ  
は従業員 ID 501 です。  
DBISQL [ メッセージ ] ウィンドウにも一部の情報が表示されます。この情報  
については後で説明します。  
大文字と小文字の区別  
テーブル名 employee 際のテーブル名がすべて小文字の場合にも頭  
は大文字の E で表示されます。Sybase IQ データベースは、文字列の比較で大  
文字と小文字を区別するもの ( デフォルト ) と区別しないものを作成できます  
が、その識別子では常に大文字と小文字は区別されません。  
注意 このマニュアルの例は、CREATE DATABASE 修飾子の CASE IGNORE  
を使用して文字と小文字を区別しないように作成されていますフォル  
トは CASE RESPECT であり、こちらの方がパフォーマンスが向上します。  
データベースの作成方法についてはSybase IQ システム管理ガイド』の「第  
5 章 データベース・オブジェクトの使用」を参照してください。  
SELECT の代わりに select または Select と入力することもできますSybase IQ  
では、キーワードを大文字、小文字、またはその両方の組み合わせで入力でき  
ます。このマニュアルでは、通常、SQL キーワードに大文字を使用しています。  
DBISQL 環境の操作方法と DBISQL の使用法はペレーティング・システム  
によって異なります。  
データをスクロールして DBISQL 環境を操作する方法についてはSybase IQ  
ユーティリティ・ガイド』の「第 2 Interactive SQL (dbisql) の使用」を参照  
してください。  
4
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
1 章 データベース・テーブルからのデータの選択  
クエリ結果の順序付け  
ここでは、SELECT 文に ORDER BY 句を追加して、結果をアルファベット順  
または数値順に表示します。  
特に指定しないかぎりSybase IQ ではテーブルのローが順不同で表示されます。  
テーブルのローを意味のある順序で表示した方が便利なことがよくあります。  
たとえば、従業員をアルファベット順で表示したいような場合です。  
従業員をアルファベット  
順にリストする  
次の例は、SELECT 文に ORDER BY 句を追加して、結果をアルファベット順  
に取得する方法を示します。  
SELECT * FROM employee ORDER BY emp_lname  
emp_id  
1751  
1013  
591  
manager_id  
1576  
emp_fname  
Alex  
emp_lname  
Ahmed  
dept_id  
400  
703  
Joseph  
Barker  
500  
1576  
Irene  
Barletta  
400  
191  
703  
Jeannette  
Janet  
Bertrand  
Bigelow  
500  
1336  
1293  
300  
注意  
句の順序は重要ですORDER BY 句は FROM 句と SELECT 句の後に指定します。  
注意 FROM 句を省略した場合たはクエリ内のすべてのテーブルが SYSTEM  
dbspace にある場合、クエリは Sybase IQ ではなく Adaptive Server Anywhere に  
よって処理されます。これにより、特に構文上およびセマンティック上の制限  
とオプション設定の効果に関してエリが異なる動作をする場合があります。  
処理に適用されるルールについては Adaptive Server Anywhere のマニュアルを参  
照してください。  
FROM 句を必要としないクエリを実行する場合は、“FROM iq_dummy” 句を追  
加して、クエリを強制的に Sybase IQ で処理できます。iq_dummy は、データ  
ベースに作成される、ローが 1 つ、カラムが 1 つのテーブルです。  
パフォーマンス&チューニング・ガイド  
5
Download from Www.Somanuals.com. All Manuals Search And Download.  
           
カラムとローの選択  
カラムとローの選択  
多くの場合示する必要がある情報はーブル内の一部のカラムだけです。  
たとえば、従業員への誕生日カードを作成するには、emp_lnamedept_id、  
birth_date の各カラムを表示すれば十分です。  
各従業員の姓、部署、  
誕生日をリストする  
ここでは、各従業員の誕生日、姓、部署 ID を選択します。次のコマンドを入  
力します。  
SELECT emp_lname, dept_id, birth_date  
FROM employee  
emp_lname  
Whitney  
Cobb  
dept_id  
100  
birth_date  
1958-06-05  
1960-12-04  
1966-10-30  
1951-12-13  
1947-05-13  
...  
...  
...  
...  
...  
...  
100  
Chin  
200  
Jordan  
300  
Breault  
100  
カラムの並べ替え  
ローの順序付け  
この 3 つのカラムは、SELECT コマンドに入力した順序で表示されています。  
カラムを並べ替えるには、コマンドで指定するカラム名の順序を変更します。  
たとえばbirth_date カラムを左側に配置するにはのコマンドを使用します。  
SELECT birth_date, emp_lname, dept_id  
FROM employee  
次のように定のカラムだけを表示すると同時にーの順序を指定できます。  
SELECT birth_date, emp_lname, dept_id  
FROM employee  
ORDER BY emp_lname  
次のコマンドのアスタリスクはーブル内のすべてのカラムを表す省略記号  
です。  
SELECT * FROM employee  
6
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
1 章 データベース・テーブルからのデータの選択  
探索条件の使用  
ここではWHERE 句の複合探索条件ターッチング索条件ショー  
トカットを使用して、日付を比較する手順について説明します。  
employee テーブルにある一部の従業員の情報だけを表示したいことがあり  
ます。SELECT 文に WHERE 句を追加すると、テーブルから一部のローだけ  
を選択できます。  
たとえば、John という名前の従業員だけを表示するとします。  
John という名前のすべての従業員をリストするには  
次のコマンドを入力します。  
SELECT *  
FROM employee  
WHERE emp_fname = 'John'  
emp_id  
318  
manager_id  
1576  
emp_fname  
John  
emp_lname  
Crow  
dept_id  
400  
862  
501  
John  
Sheffield  
Letiecq  
100  
1483  
1293  
John  
300  
アポストロフィおよび  
大文字と小文字の区別  
名前 'John' はアポストロフィ ( 一重引用符 ) で囲む必要があります。アポ  
ストロフィは、John が文字列であることを示します。引用符 ( 二重引用符 )  
には別の意味があります用符を使用すると効な文字列を有効なカ  
ラム名やその他の識別子として使用できるようになります。  
サンプータベースでは大文字と小文字が区別されないため'JOHN'、  
'john''John' のいずれで検索しても同じ結果が返ります。  
次のように、これまで学習した句を組み合わせて実行できます。  
SELECT emp_fname, emp_lname, birth_date  
FROM employee  
WHERE emp_fname = 'John'  
ORDER BY birth_date  
注意  
句を指定する順序は重要ですFROM 句を最初に指定しの後に WHERE  
句、ORDER BY 句の順に指定します。これ以外の順序で句を入力すると、  
構文エラーが返されます。  
文を複数の行に分ける必要はありません。[SQL ] ウィンドウに自由な  
フォーマットで文を入力できます。入力した文が画面の行数を超えると、  
[SQL ] ウィンドウのテキストがスクロールします。  
パフォーマンス&チューニング・ガイド  
7
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
探索条件の使用  
クエリでの日付の比較  
検索対象の正確な値がわからない場合や、一連の値を表示したい場合があり  
ますWHERE 句で比較を使用すると索条件を満たす一連のローを選択で  
きます。  
1964 3 3 日より前に  
生まれた従業員をリスト  
する  
次の例は付の不等号探索条件の使い方を示しますのコマンドを入力し  
ます。  
SELECT emp_lname, birth_date  
FROM employee  
WHERE birth_date < 'March 3, 1964'  
emp_lname  
Whitney  
Cobb  
birth_date  
1958-06-05 00:00:00.000  
1960-12-04 00:00:00.000  
1951-12-13 00:00:00.000  
1947-05-13 00:00:00.000  
1939-12-14 00:00:00.000  
1963-07-19 00:00:00.000  
Jordan  
Breault  
Espinoza  
Dill  
Sybase IQ birth_date カラムに日付が格納されていることを認識し動的  
'March 3, 1964' を日付に変換します。  
WHERE 句での複合探索条件  
これまでに較演算子の等号 (=) と未満 (<) を見てきましたSybase IQ では、  
より大きい (>)、以上 (>=)、以下 (<=)、等しくない (<>) などのその他の比較演  
算子もサポートされています。  
これらの条件を AND OR を使って組み合わせると、より複雑な探索条件を  
作成できます。  
リストの修飾  
1964 3 3 日より前に生まれた従業員のうちWhitney という名前の従業員  
を除くすべての従業員をリストするには、次のコマンドを入力します。  
SELECT emp_lname, birth_date  
FROM employee  
WHERE birth_date < '1964-3-3'  
AND emp_lname <> 'Whitney'  
emp_lname  
Cobb  
birth_date  
1960-12-04 00:00:00.000  
1951-12-13 00:00:00.000  
1947-05-13 00:00:00.000  
1939-12-14 00:00:00.000  
1963-07-19 00:00:00.000  
1954-09-12 00:00:00.000  
Jordan  
Breault  
Espinoza  
Dill  
Francis  
8
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
1 章 データベース・テーブルからのデータの選択  
探索条件でのパターン・マッチング  
もう 1 つの便利な検索方法が、パターンによる検索です。SQL では、LIKE と  
いう語を使用してパターンを検索します。LIKE の使い方について、例を挙げ  
て説明します。  
姓が BR で始まる従業員  
をリストする  
次のコマンドを入力します。  
SELECT emp_lname, emp_fname  
FROM employee  
WHERE emp_lname LIKE 'br%'  
emp_lname  
Breault  
emp_fname  
Robert  
Braun  
Jane  
探索条件内の % BR という文字の後に別の文字が何文字続いてもかまわな  
いことを示します。  
姓検索の修飾  
姓が BR で始まり、その直後または数文字後に T という文字を含み、T で終わ  
るかさらに別の文字が続くすべての従業員をリストするにはのコマンドを  
使用します。  
SELECT emp_lname, emp_fname  
FROM employee  
WHERE emp_lname LIKE 'BR%T%'  
emp_lname  
emp_fname  
Breault  
Robert  
最初の % 記号は文字列 “eaul” と一致し、2 番目の % 記号は空の文字列 ( 文字  
なし ) と一致します。  
LIKE で使用できるもう 1 つの特殊文字に _ ( アンダースコ) 文字があります。  
これは 1 文字と一致します。  
BR_U% というパターンは、BR で始まり、4 番目の文字が U であるすべての名  
前と一致しますBraun では_ A という文字と一致し% N と一致します。  
パフォーマンス&チューニング・ガイド  
9
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
探索条件の使用  
発音によるローのマッチング  
SOUNDEX 関数を使用するとペルだけでなく読みによってもローをマッチ  
ングできます。たとえば、電話メッセージが残されていて、その宛先が “Ms.  
Brown” のように発音されていたとします。社内で Brown のように発音される  
名前を持つ従業員を見つける必要があります。  
発音による姓の検索  
Brown のように発音される姓を持つ従業員をリストするにはのコマンドを  
入力します。  
SELECT emp_lname, emp_fname  
FROM employee  
WHERE SOUNDEX( emp_lname ) = SOUNDEX( 'Brown' )  
emp_lname  
emp_fname  
Braun  
Jane  
この探索条件に一致する従業員は Jane Braun だけです。  
探索条件を入力するためのショートカット  
省略形 BETWEEN の  
使用  
SQL には索条件を入力するための省略形が 2 つあります1 つは BETWEEN  
であり、値を範囲で検索するときに使用します。この例を次に示します。  
SELECT emp_lname, birth_date  
FROM employee  
WHERE birth_date BETWEEN '1964-1-1'  
AND '1965-3-31'  
これは次のコマンドに相当します。  
SELECT emp_lname, birth_date  
FROM employee  
WHERE birth_date >= '1964-1-1'  
AND birth_date <= '1965-3-31'  
省略形 IN の使用  
もう 1 つの省略形 IN は、複数のいずれかの値を検索するときに使用します。  
次にコマンド例を示します。  
SELECT emp_lname, emp_id  
FROM employee  
WHERE emp_lname IN ('Yeung','Bucceri','Charlton')  
上記のコマンドは、次のコマンドと同じです。  
SELECT emp_lname, emp_id  
FROM employee  
WHERE emp_lname = 'Yeung'  
OR emp_lname = 'Bucceri'  
OR emp_lname = 'Charlton'  
10  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
         
1 章 データベース・テーブルからのデータの選択  
集約データの取得  
ここでは約情報を返すクエリを構築する方法について説明します約情  
報の例を次に示します。  
カラム内のすべての値の合計  
カラム内のエントリの数  
カラム内のエントリの平均値  
集合関数の概要  
従業員の人数を調べたいとします。次の文は、employee テーブルのローの数  
を取得します。  
SELECT count( * )  
FROM employee  
count(*)  
75  
このクエリによって、1 つのカラム (count(*) というタイトル ) 1 つのロー  
( 従業員数が格納されている ) だけで構成されるテーブルが返されます。  
次のコマンドは、やや複雑な集約クエリです。  
SELECT  
count( * ),  
min( birth_date ),  
max( birth_date )  
FROM employee  
count(*)  
75  
min( birth_date )  
max( birth_date )  
1936-01-02  
1973-01-18  
このクエリの結果セットは、3 つのカラムと 1 つのローで構成されます。3 つ  
のカラムには業員数齢が最も高い従業員の誕生日齢が最も低い従  
業員の誕生日が格納されています。  
COUNTMINMAX を「集合関数」と呼びます。これらの各関数は、テーブ  
ル全体の情報を要約します合関数はMINMAXCOUNTAVGSUM、  
STDDEVVARIANCE と全部で 7 個あります。すべての関数が、パラメータ  
としてカラム名または式を使用します。前述のように、COUNT はアスタリス  
クもパラメータとして使用します。  
パフォーマンス&チューニング・ガイド  
11  
Download from Www.Somanuals.com. All Manuals Search And Download.  
             
集約データの取得  
集合関数によるグループ化されたデータの取得  
テーブル全体についての情報を取得することに加えて、集合関数をローのグ  
ループに対して使うこともできます。  
ローのグループに対する  
集合関数の使用  
各営業担当者が受け持つ注文数をリストするには、次のコマンドを入力します。  
SELECT sales_rep, count( * )  
FROM sales_order  
GROUP BY sales_rep  
sales_rep  
129  
count(*)  
57  
50  
114  
56  
54  
195  
299  
467  
667  
このクエリの結果は営業担当者の ID 番号別に業担当者の ID が格納さ  
れたローとsales_order テーブル内でその ID 番号を持つローの数で構成され  
ます。  
GROUP BY 句を使用すると、結果のテーブルには、GROUP BY で指定したカ  
ラムで見つかった値別のローが表示されます。  
グループの制限  
WHERE 句を使用してエリでローを制限する方法についてはすでに説明し  
ました。GROUP BY 句の制限には、HAVING キーワードを使用します。  
GROUP BY 句の制限  
注文数が 55 を超えるすべての営業担当者をリストするには、次のコマンドを  
入力します。  
SELECT sales_rep, count( * )  
FROM sales_order  
GROUP BY sales_rep  
HAVING count( * ) > 55  
sales_rep  
129  
count(*)  
57  
299  
114  
56  
467  
1142  
57  
注意 GROUP BY は常に HAVING の前に指定します様にWHERE GROUP  
BY の前に指定します。  
12  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
1 章 データベース・テーブルからのデータの選択  
WHERE GROUP BY  
の使用  
注文数が 55 を超えており、ID 1000 より大きいすべての営業担当者をリス  
トするには、次のコマンドを入力します。  
SELECT sales_rep, count( * )  
FROM sales_order  
WHERE sales_rep > 1000  
GROUP BY sales_rep  
HAVING count( * ) > 55  
Sybase IQ クエリ・オプティマイザは、それによってパフォーマンスが向上す  
る場合、述部を HAVING 句から WHERE 句に移動します。たとえば、上記の  
例で WHERE 句の代わりに述部を次のように指定した場合プティ  
マイザは述部を WHERE 句に移動します。  
GROUP BY sales_rep  
HAVING count( *) > 55  
AND sales_rep > 1000  
Sybase IQ の最適化を (OR IN を伴わない ) 単純な条件を使って実行し  
ますのためWHERE 句と HAVING 句の両方を含むクエリを構築するとき  
は、できるだけ多くの条件を WHERE 句で指定するようにします。  
小計計算の活用  
日付や場所などの次元によって異なるデータがある場合に次元でデータが  
どのように異なるかを調べることが必要になる場合があります。ROLLUP 演  
算子と CUBE 演算子を使用すると、グループ化カラムへの参照のリストから  
複数レベルの小計と総計を作成できます計はも詳細なレベルから総計  
まで「ロールアップ」します。たとえば、販売データを分析している場合は、  
同じクエリを使用して全体の平均と年別の平均販売数を計算できます。  
ROLLUP の使用  
年別デル別別の合計自動車販売数を選択するにはのコマンドを使  
用します。  
SELECT year, model, color, sum(sales)  
FROM sales_tab  
GROUP BY ROLLUP (year, model, color);  
year  
1990  
1990  
1990  
1990  
1990  
1990  
1990  
1990  
1990  
model  
Chevrolet  
Chevrolet  
Chevrolet  
Chevrolet  
Ford  
color  
red  
sales  
5
white  
blue  
87  
62  
NULL  
blue  
154  
64  
Ford  
red  
62  
Ford  
white  
NULL  
NULL  
63  
Ford  
189  
343  
NULL  
パフォーマンス&チューニング・ガイド  
13  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
集約データの取得  
year  
1991  
1991  
1991  
1991  
1991  
1991  
1991  
1991  
1991  
NULL  
model  
Chevrolet  
Chevrolet  
Chevrolet  
Chevrolet  
Ford  
color  
blue  
sales  
54  
red  
95  
white  
NULL  
blue  
49  
198  
52  
Ford  
red  
55  
Ford  
white  
NULL  
NULL  
NULL  
9
Ford  
116  
314  
657  
NULL  
NULL  
このクエリを処理するときに、Sybase IQ は最初に、指定された 3 つすべての  
グループ化式 (yearmodelcolor) によってデータをグループ化し、次に最後  
の式 (color) を除くすべてのグループ化式によってデータをグループ化します。  
5 番目のローの NULL は、color カラムの ROLLUP 値、つまり、そのモデルの  
すべての色の合計販売数を示します343 1990 年のすべてのモデルと色の  
合計販売数を表し314 1991 年の合計販売数を表します後のローはす  
べての年のすべてのモデルとすべての色の合計販売数を表します。  
ROLLUP 演算子には、引数としてグループ化式の順番リストを指定する必要  
がありますのグループを含むグループをリストするときはに大きい方  
のグループをリストします ( たとえば、state をリストしてから city をリスト  
します )。  
ROLLUP 演算子は合関数の SUMCOUNTAVGMINMAXSTDDEV、  
VARIANCE とともに使用できますだしROLLUP COUNT DISTINCT と  
SUM DISTINCT をサポートしていません。  
CUBE の使用  
次のクエリでは、人々の州 ( 地理的位置 )、性別、教育水準、所得を含む国勢調  
査のデータを使用します。GROUP BY 句の CUBE 拡張を使用すると、census  
テーブル内の国勢調査データを 1 回参照するだけで、州、性別、教育水準の国  
勢調査全体の平均所得を計算しstategendereducation の各カラムの可能な  
すべての組み合わせの平均所得を計算できます。たとえば、すべての州のすべ  
ての女性の平均所得を計算する場合や、教育水準と地理的位置を基準に国勢調  
査のすべての人々の平均所得を計算する場合に、CUBE 演算子を使用します。  
CUBE でグループを計算するときにCUBE は計算されたグループのカラムに  
NULL 値を挿入しますローが表すグループの種類とNULL がデータ  
ベースに格納されている NULL なのか、CUBE が挿入した NULL なのかを区  
別することは困難ですの問題を解決するのが GROUPING 関数です定  
されたカラムが上位レベルのグループにマージされている場合の関数は 1  
を返します。  
14  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
1 章 データベース・テーブルからのデータの選択  
次のクエリは、GROUPING 関数を GROUP BY CUBE と組み合わせた使用例  
です。  
SELECT  
CASE GROUPING ( state ) WHEN 1 THEN 'ALL' ELSE state END  
AS c_state,  
CASE GROUPING ( gender ) WHEN 1 THEN 'ALL' ELSE gender  
END AS c_gender,  
CASE GROUPING ( education ) WHEN 1 THEN 'ALL' ELSE  
education END AS c_education,  
COUNT(*), CAST (ROUND ( AVG ( income ), 2 ) AS NUMERIC  
(18,2)) AS average  
FROM census  
GROUP BY CUBE (state, gender, education);  
このクエリの結果は次のとおりですCUBE が生成した小計ローを示す NULL  
値が、クエリ内の指定によって小計ローで ALL に置き換わっています。  
c_state  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
NH  
c_gender  
c_education  
BA  
count(*)  
average  
48333.33  
40000.00  
45000.00  
45000.00  
55000.00  
55000.00  
85000.00  
66250.00  
57142.86  
50000.00  
85000.00  
61666.67  
55000.00  
49000.00  
53500.00  
57000.00  
57095.24  
53000.00  
72333.33  
47000.00  
50555.56  
f
3
2
f
f
HS  
MS  
1
f
ALL  
BA  
6
m
4
m
HS  
1
m
MS  
3
m
ALL  
ALL  
HS  
8
ALL  
f
14  
2
NH  
f
MS  
1
NH  
f
ALL  
BA  
3
NH  
m
3
NH  
m
MS  
1
NH  
m
ALL  
ALL  
ALL  
BA  
4
NH  
ALL  
ALL  
ALL  
ALL  
ALL  
f
7
ALL  
ALL  
ALL  
ALL  
ALL  
21  
10  
6
MS  
HS  
5
ALL  
9
パフォーマンス&チューニング・ガイド  
15  
Download from Www.Somanuals.com. All Manuals Search And Download.  
集約データの取得  
c_state  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
NH  
c_gender  
c_education  
count(*)  
average  
62000.00  
48333.33  
55000.00  
76000.00  
55000.00  
65000.00  
45000.00  
50000.00  
67000.00  
75000.00  
45000.00  
52142.86  
55000.00  
m
f
ALL  
BA  
HS  
12  
3
1
4
7
2
4
2
2
4
3
7
3
m
m
MS  
BA  
MS  
HS  
m
f
f
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
HS  
NH  
MS  
MS  
HS  
MA  
MA  
MA  
BA  
BA  
NH  
ROLLUP CUBE は、データ・ウェアハウス管理者が次のような処理を行う  
ときに特に役立ちます。  
地理や時間などの階層的な次元での小計 ( たとえば、年/月/日や国/  
州/市 )  
要約テーブルへのデータの格納  
ROLLUP CUBE を使用すると、レベルごとに別々のクエリを使用する代わ  
りに、1 つのクエリを使用して、複数レベルのグループ化を使ってデータを計  
算できます。  
ROLLUP 演算子と CUBE 演算子の詳細についてはSybase IQ リファレン・  
マニュアル』の「第 6 SQL 文」SELECT 文」を参照してください。  
16  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
1 章 データベース・テーブルからのデータの選択  
分析データの取得  
ここでは析情報を返すクエリを構築する方法について説明します計関  
数には、ランク付けと逆分散統計の 2 種類があります。ランク付け統計関数  
ループ内の項目をランク付けしたり散統計を計算したり果セッ  
トを複数のグループに分割したりします。逆分散統計関数は、K- 理論パーセ  
ンタイル値を返しますれはとまとまりのデータの値として許容し得る  
しきい値を決定する際に使用します。  
ランク分析関数には、RANKDENSE_RANKPERCENT_RANKNTILE が  
あります。逆分散統計関数には、PERCENTILE_CONT PERCENTILE_DISC  
があります。  
たとえば動車販売店の販売状況を調べたいとしますNTILE 関数で販  
売店が販売した車の台数に基づいて、販売店を 4 つのグループに分類します。  
ntile = 1 になっているのは、車の販売台数で上位 25% までのディーラです。  
SELECT dealer_name, sales,  
NTILE(4) OVER ( ORDER BY sales DESC )  
FROM carSales;  
dealer_name  
Boston  
Worcester  
Providence  
SF  
Lowell  
Seattle  
Natick  
New Haven  
Portland  
Houston  
Hartford  
Dublin  
sales  
1000  
950  
950  
940  
900  
900  
870  
850  
800  
780  
780  
750  
650  
640  
600  
ntile  
1
1
1
1
2
2
2
2
3
3
3
3
4
4
4
Austin  
Dallas  
Dover  
販売台数で上位 10% の販売店を調べるには、この例の SELECT 文で NTILE(10)  
を指定します。同様に、販売台数で 50% の販売店を調べるには、NTILE(2) を指  
定します。  
NTILE はクエリ結果を指定された数のバケットに分割しケット内の各ロー  
にバケット番号を割り当てるランク分析関数です。結果セットは 10 ( 十分  
位数 )4 ( 四分位数 )、その他の数のグループに分割できます。  
ランク分析関数では、OVER (ORDER BY) 句を指定する必要があります。  
ORDER BY 句は、ランク付けを実行するパラメータと、各グループ内でロー  
をソートする順序を指定します。この ORDER BY 句は、OVER 句の中だけで  
使用されるもので、SELECT ORDER BY とは異なります。  
パフォーマンス&チューニング・ガイド  
17  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
重複したローの削除  
OVER 句は、関数がクエリの結果セットに対して処理を行うことを示します。  
結果セットは、FROMWHEREGROUP BYHAVING の各句がすべて評価  
された後で返されるローですOVER 句にはンク付け統計関数の計算の対  
象となるローのデータ・セットを定義します。  
同様に分布関数では WITHIN GROUP (ORDER BY) 句を指定する必要があ  
ります。ORDER BY 句は、百分位関数を実行する式と、各グループでローを  
ソートする順序を指定します。この ORDER BY 句は、WITHIN GROUP 句の  
中でだけ使用されるものでSELECT ORDER BY とは異なりますWITHIN  
GROUP 句は、クエリの結果を並べ替えて、関数が結果を計算するためのデー  
タ・セットを形成します。  
分析関数の詳細についてはSybase IQ リファレンス・マニュアル』の「第 5  
SQL 関数」「統計関数」を参照してください。個別の分析関数について  
SQL 関数」の章の各関数の項を参照してください。  
重複したローの削除  
SELECT 文の結果テーブルに、重複したローが含まれることがあります。  
DISTINCT キーワードを使用すると複したローを削除できますとえば、  
次のコマンドを実行すると、多くの重複したローが返ります。  
SELECT city, state FROM employee  
市と州のユニークな組み合わせだけをリストするにはのコマンドを使用し  
ます。  
SELECT DISTINCT city, state FROM employee  
注意 ROLLUP 演算子と CUBE 演算子は、DISTINCT キーワードをサポートし  
ていません。  
この章では、単一テーブルの SELECT 文の概要について説明しました。単一  
テーブルの SELECT 文の詳細についてはSybase IQ システム管理ガイドの  
「第 5 章 データベース・オブジェクトの使用Sybase IQ リファレンス・マ  
ニュアル』の「第 3 SQL 言語の要素Sybase IQ リファレンス・マニュア  
ル』の「第 6 SQL 文」SELECT 文」を参照してください。  
次の章では、SELECT 文の高度な使い方について説明します。  
18  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
2
テーブルのジョイン  
この章について  
内容  
トピック名  
ページ  
19  
ジョインの制限  
20  
21  
テーブル間の関係  
22  
ジョイン演算子  
25  
アドホック・ジョインとジョイン・インデックスの使用  
ジョインとデータ型  
25  
26  
ストアまたはデータベース間ジョインのサポート  
リモート・データベースと異種データベースのクエリ  
サブクエリによるジョインの置き換え  
27  
28  
外積を使用したテーブルのジョイン  
サンプータベースに社の財務データをリストする fin_data とい  
うテーブルがあります。各データ・レコードには、そのレコードの部署  
れが支出レコードか収入レコードかを示す code カラムがあります。  
fin_data テーブルには 84 のローがあります。  
2 つのテーブルから同時に情報を取り出すにはSELECT クエリの FROM  
句で、両方のテーブルをカンマで区切って指定します。  
次の dbisql SELECT コマンドはfin_code テーブルと fin_data テーブルの  
すべてのデータをリストします。  
SELECT *  
FROM fin_code, fin_data  
dbisql [ データ ] ウィンドウに表示されるこのクエリの結果はfin_code テー  
ブルのすべてのローと fin_data テーブルのすべてのローに一致しますの  
ジョインを完全外積または直積と呼びますローはfin_code テーブルの  
すべてのカラム、fin_data テーブルのすべてのカラムの順で構成されます。  
パフォーマンス&チューニング・ガイド  
19  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
ジョインの制限  
外積ジョインはョインを理解するための単純な出発点にすぎずれ自体  
はあまり役に立ちませんれ以降の項でり選択性の高いジョインを構築  
する方法について説明しますのジョインは積テーブルへの制限の適用  
と考えることができます。  
ジョインの制限  
外積ジョインを有効に利用するにはらかの条件を満たすローだけを結果に  
含める必要があります。ジョイン条件と呼ばれるこの条件では、比較演算子  
(==>< など ) を使用して、あるテーブルの 1 つのカラムを別のテーブルの  
1 つのカラムと比較します。これにより、外積の結果から一部のローを除外し  
ます。  
たとえば、前の項のジョインを有効に利用するには、sales_order テーブルの  
sales_rep employee テーブルの従業員番号が一致するローだけを結果に含  
めるように指定しますれによりローには注文との注文を担当する  
営業担当者の情報が格納されます。  
1  
これを実行するにはのクエリに WHERE 句を追加し業員とその担当登  
録のリストを表示します。  
SELECT *  
FROM sales_order, employee  
WHERE sales_order.sales_rep = employee.emp_id  
カラムを識別するためにーブル名をプレフィクスとして指定しますの  
例では必ずしも必要ありませんがーブル名のプレフィクスを使用すると文  
が明確になります。2 つのテーブルに同じ名前のカラムがあるときは、このプ  
レフィクスを指定する必要があります。このようなコンテキストで使用する  
テーブル名を「修飾子」と呼びます。  
このクエリの結果には 648 のローしかありません (sales_order テーブルの各  
ローに 1 つずつ )。ジョインした元の 48,600 のローのうち、648 のローにだけ  
2 つのテーブルで共通する従業員番号が含まれています。  
2  
次のクエリでは部のカラムだけをフェッチし果を順序付けするように  
変更を加えています。  
SELECT employee.emp_lname, sales_order.id,  
sales_order.order_date  
FROM sales_order, employee  
WHERE sales_order.sales_rep = employee.emp_id  
ORDER BY employee.emp_lname  
SELECT コマンドに多くのテーブルがある場合は飾子名をいくつも入力し  
なければならないことがありますのようなときは関名を使用して入力  
の手間を省くことができます。  
20  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
2 章 テーブルのジョイン  
相関名  
相関名ーブルの特定のインスタンスのエイリアスですのエイリアス  
は、1 つの文中でのみ有効です。相関名を作成するには、テーブル名のすぐ後  
ろに、テーブル名の省略形をキーワード AS で区切って指定します。それ以降  
飾子としてテーブル名の代わりにこの省略形を使用する必要があります。  
SELECT E.emp_lname, S.id, S.order_date  
FROM sales_order AS S, employee AS E  
WHERE S.sales_rep = E.emp_id  
ORDER BY E.emp_lname  
この例では、sales_order テーブルと employee テーブルに対応する S E と  
いう 2 つの相関名を作成しています。  
注意 テーブル名や相関名が必要になるのは、異なるテーブルに同じ名前のカ  
ラムがあり明確になることを避ける場合だけです関名を作成した場合  
ーブル名の代わりに必ず相関名を使用します関名を作成していない  
場合は、テーブル名を使用します。  
テーブル間の関係  
他の種類のジョインを構築するにはるテーブルの情報が別のテーブルの情  
報とどのように関係するかを先に理解する必要があります。  
テーブルのプライマリ・キーは、そのテーブル内の各ローを識別します。各  
テーブルは、外部キーを使って互いに関連付けられます。  
ここではライマリ・キーと外部キーを組み合わせて数のテーブルから  
クエリを構築する方法について説明します。  
プライマリ・キーによるローの識別  
asiqdemo データベースのすべてのテーブルには、プライマリ・キーが設定さ  
れています ( 各テーブルにプライマリ・キーを定義することをおすすめします )。  
プライマーはーブル内のローをユニークに識別する 1 つまたは複数  
のカラムです。たとえば、従業員番号は従業員をユニークに識別するため、  
emp_id employee テーブルのプライマリ・キーになります。  
sales_order_items テーブルは、2 つのカラムでプライマリ・キーを構成して  
いるテーブルの例ですID だけではsales_order_items テーブルのロー  
がユニークに識別されません文には複数の項目が含まれる場合があるから  
です。また、line_id 番号も sales_order_items テーブルのローをユニークに識  
別しません。sales_order_items テーブルのローをユニークに識別するには、  
注文 ID 名と line_id の両方が必要です方のカラムが一緒になってテーブル  
のプライマリ・キーになります。  
パフォーマンス&チューニング・ガイド  
21  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
ジョイン演算子  
外部キーによって関連付けられたテーブル  
asiqdemo データベースのいくつかのテーブルは、データベース内の他のテー  
ブルを参照しています。たとえば、sales_order テーブルには、注文を担当す  
る従業員を示す sales_rep カラムがありますsales_order テーブルには業  
員をユニークに識別するために必要な最小限の情報だけが格納されています。  
sales_order テーブルの sales_rep カラムは、employee テーブルに対する外部  
キーになっています。  
外部キー  
外部キーはのテーブルの候補キーの値を含む 1 つまたは複数のカラムです  
( 候補キーの詳細についてはSybase IQ システム管理ガイド「第 5 章 デー  
タベース・オブジェクトの使用」を参照してください )。従業員データベース  
内の各外部キーの関係は、2 つのテーブル間の矢印によって図示されます。  
Sybase IQ の概要1-1 (11 ページ ) のサンプル・データベースの図にこ  
れらの矢印が示されています印は関係の外部キー側を起点とし補キー  
側を指し示しています。  
ジョイン演算子  
多くの一般的なジョインは部キーで関連付けられた 2 つのテーブル間で行  
われますも一般的なジョインでは部キーの値がプライマリ・キーの値  
と等しいものに制限されます。すでに見てきた例では、sales_order テーブル  
の外部キーの値がemployee テーブルの候補キーの値と等しいものに制限され  
ています。  
SELECT emp_lname, id, order_date  
FROM sales_order, employee  
WHERE sales_order.sales_rep = employee.emp_id  
KEY JOIN を使用すると、クエリをより簡単に表現できます。  
キー・ジョインを使用したテーブルのジョイン  
ョインは部キーで関連付けられたテーブルを簡単にジョインする  
方法です。例:  
SELECT emp_lname, id, order_date  
FROM sales_order  
KEY JOIN employee  
このコマンドはのように 2 つの従業員 ID 番号カラムを結び付ける WHERE  
句を使ったクエリと同じ結果をもたらします。  
SELECT emp_lname, id, order_date  
FROM sales_order, employee  
WHERE sales_order.sales_rep = employee.emp_id  
22  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
           
2 章 テーブルのジョイン  
ジョイン演算子 (KEY JOIN) は、単に WHERE 句の入力の手間を省くためのも  
ので、2 つのクエリはまったく同じものです。  
Sybase IQ の概要』の asiqdemo データベースの図では、外部キーがテーブル  
間の線で表されています。図中で 2 つのテーブルが線で結合されていれば、  
KEY JOIN 演算子を使用できます。キー・ジョインによるクエリで期待どおり  
の結果を得るにはプリケーションで外部キーを強制的に適用する必要があ  
ります。  
複数のテーブルの  
ジョイン  
ジョイン演算子を使用して数のテーブルをジョインできますのクエリ  
では4 つのテーブルを使用して文の合計額を顧客別にリストしています。  
customersales_ordersales_order_itemsproduct 4 つのテーブルをー  
ブルの各ペア間の 1 つの外部キー関係で接続しています。  
SELECT company_name,  
CAST( SUM(sales_order_items.quantity *  
product.unit_price) AS INTEGER) AS value  
FROM customer  
KEY JOIN sales_order  
KEY JOIN sales_order_items  
KEY JOIN product  
GROUP BY company_name  
company_name  
McManus Inc.  
Salt & Peppers.  
The Real Deal  
Totos Active Wear  
The Ristuccia Center  
...  
value  
3,156  
4,980  
1,884  
2,496  
4,596  
このクエリで使用している CAST 関数はのデータ型を変換しますの例  
では、整数として返される合計が値に変換されます。  
パフォーマンス&チューニング・ガイド  
23  
Download from Www.Somanuals.com. All Manuals Search And Download.  
ジョイン演算子  
ナチュラル・ジョインを使用したテーブルのジョイン  
NATURAL JOIN 演算子は、共通のカラム名に基づいて 2 つのテーブルをジョ  
インします。言い換えると、Sybase IQ が各テーブルに共通するカラムを結び  
付ける WHERE 句を生成します。  
たとえば、次のようなクエリがあるとします。  
SELECT emp_lname, dept_name  
FROM employee  
NATURAL JOIN department  
この例ではータベース・サーバが 2 つのテーブルを参照し通するカラ  
ム名は dept_id だけであると判断しますON フレーズが内部的に生成さ  
れ、ジョインの実行に使用されます。  
FROM employee JOIN department  
...  
ON employee.dept_id = department.dept_id  
NATURAL JOIN を使用  
したときのエラー  
このジョイン演算子では図しないカラムを結び付けてしまう問題が起きる  
可能性がありますとえばのクエリは意図しなかった結果をもたらします。  
SELECT *  
FROM sales_order  
NATURAL JOIN customer  
このクエリの結果には、ローが 1 つもありません。  
データベース・サーバは、内部的に次の ON フレーズを生成します。  
FROM sales_order JOIN customer  
ON sales_order.id = customer.id  
sales_order テーブルの id カラムは文の ID 番号ですcustomer テー  
ブルの id カラムは客の ID 番号ですれらの番号は 1 つも一致しません。  
たとえ一致する番号があったとしても、当然それは意味を持ちません。  
ジョイン演算子をむやみに使用しないように注意してくださいョイン演算  
子はに強制力のない外部キーや共通のカラム名で WHERE 句を入力する手  
間を省くためのものであることを忘れないでくださいWHERE 句を注意して  
使用しないと図しない結果をもたらすクエリを作成してしまう可能性があ  
ります。  
24  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
2 章 テーブルのジョイン  
アドホック・ジョインとジョイン・インデックスの使用  
クエリで参照されるジョイン・カラムにジョイン・インデックスを定義して  
いる場合、Sybase IQ は自動的にそれらを使用してクエリ処理を高速化しま  
( ジョイン・インデックスの定義についてはSybase IQ システム管理ガ  
イド』の「第 6 Sybase IQ インデックスの使用」を参照してください )。  
ジョイン・インデックスを使用しないジョインを「アドホック・ジョイン呼  
びますエリでいくつものテーブルを参照しておりの中にジョイン・イ  
ンデックスが定義されていないテーブルがある場合、Sybase IQ は定義されて  
いるテーブルではジョイン・インデックスを、それ以外のテーブルではアド  
ホック・ジョインを使用します。  
可能なすべてのジョインに対してジョインデックスを作成することはで  
きないため、ときにはアドホック・ジョインが必要になることがあります。  
Sybase IQ の最適化によって、クエリはジョイン・インデックスなしでも同等  
かそれ以上のパフォーマンスで実行されます。  
ジョイン・インデックスの作成には、次の制約があります。  
インデックス内では全な外部ジョインだけがサポートされますエ  
リはンデックス付けされている場合外部外部のジョイ  
ンになります。  
完全な外部ジョインでは定された左右両方のテーブルのすべてのロー  
が結果に含まれ、対応するカラムに一致する値がないカラムについては  
NULL が返されます。  
ジョイン述部の ON 句で使用できる比較演算子は EQUALS だけです。  
ON 句の代わりに NATURAL キーワードを使用できますが、1 対のテーブ  
ルしか指定できません。  
ジョイン・インデックス・カラムはいずれも同じデータ型、精度、位取り  
でなければなりません。  
ジョインとデータ型  
最適なパフォーマンスを得るにはョイラムを類似のデータ型にする  
必要があります。Sybase IQ では、暗黙の変換が存在する任意のデータ型でア  
ドホック・ジョインを行うことができます。ただしョイン・カラムのデー  
タ型が同じでない場合はータ型とテーブルのサイズによってフォーマ  
ンスがさまざまな範囲で低下する可能性がありますとえばINT BIGINT  
のカラムにジョインすることはできますがのジョインによって特定の種類  
の最適化ができなくなります。Sybase IQ インデックス・アドバイザは、データ  
型が異なるジョイン・カラムにパフォーマンス上の問題があると見なします。  
暗黙のデータ型変換のテーブルについてはSybase IQ システム管理ガイド』  
「第 7 章 データベースへのデータの入出力」を参照してください。  
パフォーマンス&チューニング・ガイド  
25  
Download from Www.Somanuals.com. All Manuals Search And Download.  
         
ストアまたはデータベース間ジョインのサポート  
ストアまたはデータベース間ジョインのサポート  
この項ではトア間またはデータベース間ジョインに対する現在のサポート  
を明確にします。  
Sybase IQ データベー  
ス内でのテーブルの  
ジョイン  
指定された Sybase IQ データベース内では、あらゆる種類のジョインがサポー  
トされますまりタログ・ストアの任意のシステムまたはユーザ・テー  
ブルを、IQ ストアの任意のテーブルに任意の順序でジョインできます。  
Adaptive Server  
Sybase IQ テーブルと Adaptive Server Enterprise データベースのテーブルのジョ  
インは、次の条件下でサポートされます。  
Enterprise テーブルと  
Sybase IQ テーブルの  
ジョイン  
Sybase IQ データベースは、ローカル・データベースとリモート・データ  
ベースのどちらでもかまいません。  
ASE Sybase IQ テーブルをプロキシ・テーブルとして使用する場合は、  
テーブル名を 30 文字以内にしてください。  
ローカルの Adaptive Server Enterprise テーブルをリモートの Sybase IQ 12  
テーブルにジョインするにはASE のバージョンが 11.9.2 以降である必要  
があります。また、次の適切なサーバ・クラスを使用してください。  
Adaptive Server Enterprise 12.5 以降のフロントエンドからリモートの  
Sybase IQ 12.5 以降に接続するにはASE 12.5 で追加された ASIQ サー  
バ・クラスを使用します。  
Adaptive Server Enterprise 11.9.2 から 12.0 までのフロントエンドから  
リモートの Sybase IQ 12.x ( または Adaptive Server Anywhere 6.x 以降 )  
に接続するには、サーバ・クラス ASAnywhere を使用します。  
ローカルの Sybase IQ テーブルを任意のリモート・テーブルとジョインす  
る場合は、ローカルのテーブルを FROM 句の最初に指定する必要があり  
ますまりーカルのテーブルはョインの最も外側のテーブルに  
なります。  
Sybase IQ Adaptive Server Enterprise の間のジョインはンポーネント統合  
サービス (CIS) に依存します。  
Adaptive Server Enterprise データベースから Sybase IQ へのクエリの詳細につい  
てはAdaptive Server Enterprise 主要マニュアル・セットコンポーネント統  
合サービス・ユーザーズ・ガイド』を参照してください。  
Sybase IQ から他のデータベースへのクエリの詳細については「リモート・  
データベースと異種データベースのクエリ」を参照してください。  
26  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
2 章 テーブルのジョイン  
Adaptive Server  
データベースが BLANK PADDING OFF を指定して構築された場合、CHAR  
データ型は Adaptive Server Anywhere Sybase IQ の間で互換性がありません。  
文字データをジョイン・キーとして使用して、Adaptive Server Anywhere テー  
ブルと Sybase IQ テーブルの間でデータベースのジョインを実行する場合は、  
BLANK PADDING ON を指定して CHAR データ型を使用します。  
Anywhere テーブルと  
Sybase IQ テーブルの  
ジョイン  
注意 Sybase IQ CREATE DATABASE しいデータベースについては BLANK  
PADDING OFF をサポートしなくなりましたの変更は存のデータベース  
には影響しません。BlankPadding database プロパティを使用して、既存のデータ  
ベースの状態をテストすることができます。  
select db_property ( ‘BlankPadding’ )  
Sybase ではョイン結果が正しくなるようにBLANK PADDING OFF によっ  
て影響を受ける既存のカラムをすべて変更することを推奨していますョイ  
ン・ラムを VARCHAR ではなく CHAR データ型として再作成しますCHAR  
カラムでは、常にブランクが埋め込まれます。  
リモート・データベースと異種データベースのクエリ  
ここではSybase IQ をコンポーネント統合サービス (CIS) と組み合わせて使用  
する方法について説明しますCIS を使用するとSybase IQ を通して Adaptive  
Server Enterprise データベースとリモート・データベースまたは非リレーショ  
ナル・データ・ソースにクエリを実行できます。CIS Sybase IQ の一部とし  
てインストールされます。  
CIS を使用すると、リモート・サーバ上のテーブルに、ローカルのテーブルの  
ようにアクセスできます。CIS 数のリモート異種サーバのテーブル間で  
ジョインを実行し、1 つのテーブルの内容を、サポートされているリモート・  
サーバへ転送します。  
リモートのデータベースやデーースにクエリを実行するにはのテー  
ブルをローカル・プロキシ・テーブルにマッピングする必要があります。CIS  
ータがローカルに格納されているかのようにロキシ・テーブルをク  
ライアント・アプリケーションに示します。テーブルにクエリを実行すると、  
CIS は実際のサーバ記憶位置を判別します。  
リモート・データベースをジョインするには  
1
Sybase IQ システム管理ガイド』の手順に従って、プロキシ・テーブルを  
作成します。  
2
リモート・テーブルをプロキシ・テーブルにマッピングします。  
パフォーマンス&チューニング・ガイド  
27  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
サブクエリによるジョインの置き換え  
3
プロキシ・データベース名を各リモート・テーブルの修飾名として使用  
し、SELECT 文でプロキシ・テーブルを参照します。たとえば、次のよう  
な文を発行します。  
SELECT a.c_custkey, b.o_orderkey  
FROM proxy_asiqdemo..cust2 a,  
asiqdemo..orders b  
WHERE a.c_custkey = b.o_custkey  
詳細についてはSybase IQ システム管理ガイド「第 16 章 リモーー  
タへのアクセス」「第 17 章 リモート・データ・アクセス用のサーバ・クラ  
ス」を参照してください。  
サブクエリによるジョインの置き換え  
ジョインは数のテーブルのデータから構築される結果テーブルを返します。  
サブクエリを使用して、同じ結果テーブルを取得することもできます。サブク  
エリは、単に別の SELECT 文の中にある SELECT 文です。より複雑で多くの情  
報を与えるクエリを構築するときに、このツールが役立ちます。  
たとえば、注文とその発注先の会社を時系列にリストする必要があり、顧客  
ID の代わりに会社名を使いたいとします。この結果を得るには、次のような  
ジョインを使用します。  
ジョインの使用  
1994 年の年初以降の各注文の order_idorder_datecompany_name をリス  
トするには、次のコマンドを入力します。  
SELECT sales_order.id,  
sales_order.order_date,  
customer.company_name  
FROM sales_order  
KEY JOIN customer  
WHERE order_date > '1994/01/01'  
ORDER BY order_date  
id  
order_date  
1994-01-04  
1994-01-04  
1994-01-05  
1994-01-05  
1994-01-05  
company_name  
Peachtree Active Wear  
Sampson & Sons  
Hermanns  
2473  
2474  
2036  
2475  
2106  
Salt & Peppers  
Cinnamon Rainbows  
28  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
2 章 テーブルのジョイン  
外部ジョインの使用  
前項のチュートリアルのジョインはり正確に内部ジョイン呼ばれ  
ます。  
外部ジョインを明示的に指定します。この場合は、GROUP BY 句も必要です。  
SELECT company_name,  
MAX( sales_order.id ),state  
FROM customer  
KEY LEFT OUTER JOIN sales_order  
WHERE state = 'WA'  
GROUP BY company_name, state  
company_name  
Custom Designs  
Its a Hit!  
max(sales_order.id)  
state  
WA  
2547  
(NULL)  
WA  
サブクエリの使用  
在庫が少ない製品の注文項目をリストするには、次のコマンドを入力します。  
SELECT *  
FROM sales_order_items  
WHERE prod_id IN  
( SELECT id  
FROM product  
WHERE quantity < 20 )  
ORDER BY ship_date DESC  
id  
line_id  
prod_id  
401  
quantity  
ship_date  
1994-07-09  
1994-06-30  
1994-06-28  
1994-06-17  
1994-06-17  
2082  
2053  
2125  
2027  
2062  
1
1
2
1
1
48  
60  
36  
12  
36  
401  
401  
401  
401  
カッコで囲まれたフレーズが、この文のサブクエリです。  
( SELECT id  
FROM product  
WHERE quantity < 20 )  
サブクエリを使用すると、検索を 1 回のクエリだけで実行できるようになり  
ます。このため、在庫が少ない製品のリストをクエリで検索し、さらにその  
製品の注文を別のクエリで検索する必要がなくなります。  
このサブクエリは、製品テーブルの id カラムで WHERE 句の探索条件を満た  
すすべての値をリストします。  
パフォーマンス&チューニング・ガイド  
29  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
サブクエリによるジョインの置き換え  
クエリの別の表現方法  
受注した 10 枚のタンクトップが出荷され、タンクトップの数量カラムの値が  
18 になった場合にどうなるかを考えてみますブクエリを使ったクエリは、  
ウールの帽子とタンクトップの両方のすべての注文をリストしますれに対  
して、最初に使用した文は次のように変更する必要があります。  
SELECT *  
FROM sales_order_items  
WHERE prod_id IN ( 401, 300 )  
ORDER BY ship_date DESC  
サブクエリを使用するコマンドはータベースのデータが変更されてもその  
まま機能するように、改善されています。  
サブクエリについては、次の点に注意してください。  
NOT EXISTS 述部を使用するクエリなどョインの構築に問題がある場  
合もサブクエリが役立つことがあります。  
サブクエリが返せるのは 1 つのカラムだけです。  
サブクエリは、比較の引数、IN、または EXISTS 句としてのみ使用でき  
ます。  
外部ジョインの ON 句の中に、サブクエリを使用することはできません。  
30  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
3
クエリと削除の最適化  
この章について  
この章ではのようなクエリと削除のパフォーマンスに関する推奨事項  
について説明します。  
クエリ処理オプションの設定  
削除オペレーションの最適化  
内容  
トピック名  
ページ  
31  
クエリ構築のヒント  
クエリ・プラン  
35  
37  
クエリ処理の制御  
40  
削除オペレーションの最適化  
クエリ構築のヒント  
ここでは、クエリ構造を改良するためのヒントを示します。  
サブクエリを含むコマンド文をジョインとして構成することによっ  
て、実行速度を高めることができる場合があります。  
GROUP BY 句で複数のカラムをグループ化する場合、カラムに対応  
するユニークな値をもとに降順にカラムをリストしますれによっ  
て最適なクエリのパフォーマンスが実現されます。  
ジョイン・インデックスを使用すると、多くの場合、ジョイン・クエ  
リはアドホック・ジョインより高速に実行されますが、より多くの  
ディスク領域が必要となりますだしョイン・クエリがマルチ  
テーブョインデックスの最大のテーブルを参照しない場  
合は、アドホック・ジョインの方がジョイン・インデックスよりパ  
フォーマンスが高くなります。  
追加のカラムを使用して、頻繁に行う計算の結果を格納すると、パ  
フォーマンスを向上させることができます。  
パフォーマンス&チューニング・ガイド  
31  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
クエリ構築のヒント  
UNION ALL での GROUP BY がクエリ・パフォーマンスに与える影響  
パフォーマンスを向上させるために、非常に大きなテーブルを複数の小さな  
テーブルにセグメント化しューで UNION ALL を使用してアクセスするこ  
とがよくあります。このようなビューを GROUP BY とともに使用する特定の  
非常に個別的なクエリでは、Sybase IQ オプティマイザがいくつかの GROUP  
BY 処理を UNION ALL の各分岐に挿入して、処理を並列に実行し、結果を結  
合することでパフォーマンスを向上させることができます。分割 GROUP BY  
と呼ばれるこの方法では、最上位レベルの GROUP BY で処理されるデータの  
量が減少し、その結果、クエリ処理時間が減少します。  
パフォーマンスが向上するのは、UNION ALL GROUP BY を使用する特定  
のクエリだけです。たとえば、次の簡単なクエリは分割 GROUP BY によって  
パフォーマンスが向上します。  
CREATE VIEW vtable (v1 int, v2 char(4)) AS  
SELECT a1, a2 FROM tableA  
UNION ALL  
SELECT b1, b2 FROM tableB;  
SELECT COUNT(*), SUM(v1) FROM vtable GROUP BY v2;  
このクエリを分析するときに、オプティマイザは先に tableA COUNT(*)  
GROUP BY を実行し、tableB COUNT(*) GROUP BY を実行した後、結果を  
最上位レベルの GROUP BY に渡します。最上位レベルの GROUP BY は、2 つ  
COUNT(*) の結果の SUM を実行し、最終的なクエリ結果を生成します。最  
上位レベルの GROUP BY の役割が変化していることに注意してください。最  
上位レベルの GROUP BY が使用している集合関数は COUNT ではなく SUM  
です。  
分割 GROUP BY の制限  
分割 GROUP BY によってパフォーマンスが向上する状況とクエリには、いく  
つかの制限があります。  
クエリで UNION ではなく UNION ALL を使用している場合にGROUP  
BY によってクエリのパフォーマンスが向上する可能性がありますのク  
エリでは UNION GROUP BY を使用しているためGROUP BY によ  
るメリットはありません。  
CREATE VIEW viewA (va1 int, va2 int, va3 int,  
va4 int) AS  
SELECT b1, b2, b3, b4 FROM tableB  
UNION  
SELECT c1, c2, c3, c4 FROM tableC;  
SELECT SUM(va1) FROM viewA GROUP BY va3;  
32  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
3 章 クエリと削除の最適化  
クエリ内の集合関数で DISTINCT が指定されていない場合にGROUP  
BY によってクエリのパフォーマンスが向上する可能性があります。次の  
クエリでは SUM DISTINCT を使用しているため、分割 GROUP BY による  
メリットはありません。  
CREATE VIEW viewA (va1 int, va2 int, va3 int,  
va4 int) AS  
SELECT b1, b2, b3, b4 FROM tableB  
UNION ALL  
SELECT c1, c2, c3, c4 FROM tableC;  
SELECT SUM(DISTINCT va1) FROM viewA GROUP BY va3;  
分割 GROUP BY によってクエリのパフォーマンスを向上させるには、追  
加の GROUP BY 演算子の処理に使われる集合情報とデータを格納するた  
めに、テンポラリ共有バッファ・キャッシュに十分なメモリが必要です。  
CREATE VIEW viewA (va1 int, va2 int, va3 int,  
va4 int) AS  
SELECT b1, b2, b3, b4 FROM tableB  
UNION ALL  
SELECT c1, c2, c3, c4 FROM tableC  
UNION ALL  
SELECT d1, d2, d3, d4 FROM tableD  
UNION ALL  
SELECT e1, e2, e3, e4 FROM tableE  
UNION ALL  
SELECT f1, f2, f3, f4 FROM tableF  
UNION ALL  
SELECT g1, g2, g3, g4 FROM tableG;  
SELECT SUM(va1) FROM viewA GROUP BY va3;  
この例では、Sybase IQ オプティマイザが GROUP BY を分割し、6 個の  
合情報とデータを格納するために、クエリにより多くのテンポラリ・  
キャッシュが必要となりますステムが十分なキャッシュを割り付けら  
れない場合、オプティマイザは GROUP BY を分割しません。  
メモリに空きがある場合はTEMP_CACHE_MEMORY_MB データベー  
ス・オプションを使用してテンポラリ・キャッシュのサイズを増やす  
ことができます。バッファ・キャッシュのサイズの設定方法について  
Sybase IQ リファレンニュアルデータベープショ  
ン」の「バッファ・キャッシュ・サイズの決定」(107 ページ ) および  
TEMP_CACHE_MEMORY_MB オプション」を参照してください。  
パフォーマンス&チューニング・ガイド  
33  
Download from Www.Somanuals.com. All Manuals Search And Download.  
クエリ構築のヒント  
分割 GROUP BY によってクエリのパフォーマンスを向上させるには、  
AGGREGATION_PREFERENCE データベース・オプションをデフォルト値  
0 に設定します。これにより、Sybase IQ オプティマイザは GROUP BY に  
適用する最善のアルゴリズムを判断できるようになります。Sybase IQ オプ  
ティマイザが GROUP BY の処理にソート・アルゴリズムを選択するように  
AGGREGATION_PREFERENCE の値が設定されている場合は、分割 GROUP  
BY によるメリットはありません。AGGREGATION_PREFERENCE オプショ  
ンを使用すると、オプティマイザが GROUP BY の処理に選択するアルゴリ  
ズムを上書きできます。分割 GROUP BY では、この値を 1 または 2 に設定  
しないでください。  
分割 GROUP BY の例  
次の例では、tableA という大きなテーブルを、tabA1tabA2tabA3tabA4  
という 4 つの小さなテーブルにセグメント化しています。この 4 つの小さな  
テーブルと UNION ALL を使用して、unionTab ビューを作成します。  
CREATE VIEW unionTab (v1 int, v2 int, v3 int, v4 int) AS  
SELECT a, b, c, d FROM tabA1  
UNION ALL  
SELECT a, b, c, d FROM tabA2  
UNION ALL  
SELECT a, b, c, d FROM tabA3  
UNION ALL  
SELECT a, b, c, d FROM tabA4;  
Sybase IQ オプティマイザは GROUP BY の処理を次のクエリに分割しエリ  
のパフォーマンスを向上させます。  
SELECT v1, v2, SUM(v3), COUNT(*) FROM unionTab  
GROUP BY v1, v2;  
SELECT v3, SUM(v1*v2) FROM unionTab  
GROUP BY v3;  
Adaptive Server Anywhere による処理を引き起こす条件  
Sybase IQ アーキテクチャには、Adaptive Server Anywhere のルールに従ってク  
エリを処理する製品の部分が含まれていますCIS ( 以前は OMNI) 機能補正と  
呼ばれるこの機能を使用すると、Sybase IQ のセマンティックで直接サポート  
されないクエリを処理できますが、パフォーマンスが大幅に低下します。  
CIS は次のクエリを傍受します。  
ユーザ定義関数を参照するクエリ  
データベース間のジョインまたはプロキシ・テーブルを含むクエリ  
特定のシステム関数を含むクエリ  
カタログ・ストア・テーブルまたは SYSTEM dbspace で作成されたテーブ  
ルを参照するクエリ  
34  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
3 章 クエリと削除の最適化  
Sybase IQ Adaptive Server Anywhere の違いの詳細についてはSybase IQ リ  
ファレンス・マニュアル』の「付録 A 他の Sybase データベースとの互換性」  
を参照してください。  
クエリ・プラン  
最も効果的な構文を使用していなくてもしいインデックスを作成していれ  
ば、通常は Sybase IQ クエリ・オプティマイザによって、最も効率的な方法で  
クエリを実行できます。もちろん、クエリを正しく設計することは重要です。  
クエリを計画する場合にエリの実行速度と得られる結果の正確さが主要な  
問題点となります。  
クエリを実行する前に、Sybase IQ クエリ・オプティマイザはクエリ・プラン  
を作成します。Sybase IQ では、これ以降の項で説明するオプションを使用し  
て、クエリ・プランを調査および変更し、クエリを評価できます。このオプ  
ションを指定する方法の詳細についてはSybase IQ リファレンス・マニュア  
ル』を参照してください。  
注意 整数値を指定できるデータベース・オプションでは、小数の option-value  
の設定が常に整数値にトランケートされます。たとえば、3.8 という値は 3 に  
トランケートされます。  
クエリ評価オプション  
次のオプションはエリ・プランの評価に役立ちますれらのオプション  
の詳細についてはSybase IQ リファレンニュアル参照してください。  
INDEX_ADVISOR - このオプションを ON に設定すると、インデックス・  
アドバイザは、Sybase IQ クエリ・プランの一部として、またクエリ・プラ  
ンが無効の場合には、Sybase IQ メッセージ・ログ・ファイル内の独立した  
メッセージとしてンデックスの推奨を出力しますれらのメッセージ  
は、“Index Advisor” という文字列で始まります。この文字列を検索すること  
で、Sybase IQ メッセージ・ファイルからこれらのメッセージをフィルタで  
きますのオプションはメッセージを OWNER.TABLE.COLUMN 形式で出  
力します。このオプションのデフォルト設定は OFF です。  
Sybase IQ リファレンニュアルsp_iqindexadvice プロシージャ」  
も参照してください。  
INDEX_ADVISOR_MAX_ROWS - このオプションはインデックド  
バイザによって格納されるメッセージの数を制限します定された制限  
値に達すると、INDEX_ADVISOR は新しいアドバイスの保存を停止しま  
すが、既存のアドバイスのカウントとタイムスタンプの更新は続行します。  
パフォーマンス&チューニング・ガイド  
35  
Download from Www.Somanuals.com. All Manuals Search And Download.  
         
クエリ・プラン  
NOEXEC - このオプションを ON に設定すると、Sybase IQ はクエ  
リ・プランを生成しますが、クエリを実行しません。ただし、  
EARLY_PREDICATE_EXECUTION オプションが ON の場合を除き  
ます。  
QUERY_DETAIL - このオプションと、QUERY_PLAN または  
QUERY_PLAN_AS_HTML の両方が ON の場合、Sybase IQ はクエ  
リ・プランを生成するときに、クエリについての追加情報を表示し  
ます。QUERY_PLAN QUERY_PLAN_AS_HTML OFF の場合、  
このオプションは無視されます。  
QUERY_PLAN - このオプションが ON に設定されている場合 ( デフォル  
)Sybase IQ はクエリについてのメッセージを生成します。ジョイン・  
インデックスの使用方法ョイン順序エリのジョイン・アルゴリズ  
ムについてのメッセージなどが生成されます。  
QUERY_PLAN_AFTER_RUN - このオプションを ON に設定するとク  
エリの実行が終了した後でクエリ・プランが出力されます。これにより、  
クエリの各ノードから渡された実際のローの数など加情報をプランに  
含めることができます。このオプションを使用するには、QUERY_PLAN  
ON にしますのオプションはフォルトでは OFF になっています。  
QUERY_PLAN_AS_HTML - このオプションは、Web ブラウザで表示で  
きるように、HTML 形式のグラフィカルなクエリ・プランを生成します。  
HTML 形式では、ノード間にハイパーリンクが設定されるため、.iqmsg  
ファイルのテキスト形式よりはるかに使いやすくなりますラ  
ンのファイル名にクエリ名を含めるには、QUERY_NAME オプションを  
使用します。このオプションは、デフォルトでは OFF になっています。  
QUERY_PLAN_AS_HTML_DIRECTORY - このオプションを ON に設定  
し、QUERY_PLAN_AS_HTML_DIRECTORY でディレクトリが指定され  
ている場合、Sybase IQ は指定されたディレクトリに HTML クエリ・プラ  
ンを書き込みます。  
QUERY_TIMING - このオプションはブクエリのタイミング統計の収  
集などのクエンジンの反復的な機能を制御するのに使用します非  
常に短い相関サブクエリの場合サブクエリを実行するタイミングを合  
わせる処理のために体のパフォーマンスが大幅に低下するための  
オプションは、通常、OFF ( デフォルト ) にします。  
注意 クエリ・プランを生成すると、.iqmsg ファイルに大量のテキストが追加  
される場合がありますQUERY_PLAN ON の場合でQUERY_DETAIL  
ON の場合はIQMSG_LENGTH_MB を正の値に設定しッセージ・ログ  
の循環を有効にすることをおすすめします。  
36  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
             
3 章 クエリと削除の最適化  
クエリ・ツリー  
オプティマイザはエリ内のデータの流れを表すクエツリー作成し  
ます。クエリ・プランでは、クエリ・ツリーが .iqmsg ファイル内にテキスト  
形式で表示されますプションでラフィカル形式のクエリ・ツリーも作  
成できます。  
クエリーはノードで構成されますれぞれのノードは処理の段階を表  
します。ツリーの一番下のノードはリーフ・ノードです。各リーフ・ノード  
は、クエリ内のテーブルまたはプリジョイン・インデックス・セットを表し  
ます。  
プランの最上部にあるのは算子ツリーのルートです報はテーブルから  
上方向に、ジョイン、ソート、フィルタ、格納、集合、サブクエリを表す演算  
子を通じて流れます。  
HTML クエリ・プランの使用  
クエランを初めて使用するときはQUERY_PLAN_AS_HTML オプショ  
ンを ON に設定することをおすすめします。このオプションを設定すると、  
.iqmsg ファイルと同じディレクトリにグラフィカル版のクエランが作成  
されます。このファイルは、ほとんどの Web ブラウザで表示できます。  
HTML クエリ・プランでは、ツリーの各ノードが詳細へのハイパーリンクに  
なっていますボックスが上位のツリーへハイパーリンクされています任  
意のノードをクリックし、プラン内をすばやく移動できます。  
クエリ処理の制御  
すべてのユーザが、特定のクエリの処理にかかる時間に制限を設定できます。  
DBA 権限を持つユーザは、特定のユーザのクエリに他のクエリより高い優先  
度を与えることや理のアルゴリズムを変更しエリ処理の速度を操作す  
ることができます。この項で説明するオプションの詳細についてはSybase  
IQ リファレンス・マニュアル』を参照してください。  
クエリの時間制限の設定  
MAX_QUERY_TIME オプションを設定すると、ユーザは長い時間がかかるク  
エリを禁止できます。指定した時間よりクエリの実行時間が長くかかった場  
合、Sybase IQ は適切なエラーを表示してクエリを停止します。  
注意 Sybase IQ では、小数の option-value の設定がすべて整数値にトランケー  
トされます。たとえば、3.8 という値は 3 にトランケートされます。  
パフォーマンス&チューニング・ガイド  
37  
Download from Www.Somanuals.com. All Manuals Search And Download.  
           
クエリ処理の制御  
クエリの優先度の設定  
処理をキューで待機しているクエリは、そのクエリを送信したユーザの優先  
してクエリが送信された順序の順に実行されます先度の高いクエリ  
がすべて実行されるまで、優先度の低いキューのクエリは実行されません。  
次のオプションは、クエリにユーザ別の処理の優先度を割り当てます。  
IQGOVERN_PRIORITY - 処理キューで待機しているクエリに数字の優  
先度 (12、または 3 で、1 が最も高い ) を割り当てます。  
IQGOVERN_MAX_PRIORITY DBA はユーザまたはグループの  
IQGOVERN_PRIORITY に上限値を設定できます。  
IQ_GOVERN_PRIORITY_TIME - 優先度の高い ( 優先度 1 ) クエリが、  
指定した時間より長く -iqgovern キューで待機している場合に、優先度の  
高いユーザを開始できます。  
クエリの優先度を調べるにはsp_iqcontext ストアド・プロシージャによって  
返される IQGovernPriority 属性を確認します。  
クエリ最適化オプションの設定  
次のオプションは、クエリの処理速度に影響を与えます。  
AGGREGATION_PREFERENCE - 集合 (GROUP BYDISTINCTSET  
の各関数 ) を処理するためのアルゴリズムの選択を制御しますこのオプ  
ションはに内部用として設計されているため験のあるデータベー  
ス管理者のみが使用してください。  
DEFAULT_HAVING_SELECTIVITY - クエリ内のすべての HAVING 述部  
の選択性を設定しますれがHAVING 句によってフィルタされるロー  
数についてのオプティマイザの見積もりに優先して使用されます。  
DEFAULT_LIKE_MATCH_SELECTIVITY LIKE 'string%string'  
(% はワイルドカード文字 ) などのLIKE 述部のデフォルトの選択性  
を設定しますの選択性情報が利用できず合文字列が一連の定数文  
字と 1 つのワイルドカードで始まっていない場合プティマイザはこの  
オプションを利用します。  
DEFAULT_LIKE_RANGE_SELECTIVITY - 照合文字列が一連の定数文字  
1 つのワイルドカード文字 (%) でできている LIKE 'string%'形式の  
先行定数 LIKE 述部のデフォルトの選択性を設定しますの選択性情報  
が利用できない場合、オプティマイザはこのオプションを利用します。  
EARLY_PREDICATE_EXECUTION - ジョインの最適化の前に簡単なロー  
カル述部を実行するかどうかを制御します。通常は、このオプションを変  
更しないでください。  
38  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
               
3 章 クエリと削除の最適化  
ENABLED_ORDERED_PUSHDOWN_INSERTION - クエリ・オプティ  
マイザが、ジョイン・オプティマイザによって選択されたプッシュダウ  
ン・ョイン用のセミジョイン述部に追加する方法を制御しますれら  
のセミジョインによって間接的に影響を受ける可能性のある中間のジョ  
インを再分析します。通常は、このオプションを変更しないでください。  
IN_SUBQUERY_PREFERENCE IN サブクエリを処理するためのアル  
ゴリズムの選択を制御しますのオプションはに内部用として設計  
されているため験のあるデータベース管理者のみが使用してください。  
INDEX_PREFERENCE - クエリ処理に使用するインデックスを設定し  
ますSybase IQ オプティマイザは常最適なインデックスを使用して、  
ローカルな WHERE 句 の述部など1 つの IQ インデックスの範囲内で処  
理できる操作を実行しますのオプションはスト目的にオプティマ  
イザの選択を無効にするために使用します。通常の使用の際はこのオプ  
ションの値を変更しないでください。  
JOIN_PREFERENCE - ジョインを処理するときのアルゴリズムの選択を  
制御しますのオプションはに内部用として設計されているため経  
験のあるデータベース管理者のみが使用してください。  
JOIN_SIMPLIFICATION_THRESHOLD - ジョイプティマイザの単  
純化が適用される前にジョインされるテーブルの最小数を制御します通  
常は、この値を変更する必要はありません。  
MAX_HASH_ROWS - クエリ・オプティマイザがハッシュ・アルゴリズ  
ムを使用するときに考慮する最大ロー数の推測値を設定しますフォル  
トは1,250,000 のローですとえば2 つのテーブル間にジョインがあ  
方のテーブルからジョインに入力されるロー数がこのオプションで  
設定された値を超えるとプティマイザはハッショインを選択肢  
から外します。TEMP_CACHE_MEMORY_MB がユーザあたり 50 MB を  
超えるシステムの場合はのオプションにさらに大きな値を設定します。  
MAX_JOIN_ENUMERATION - オプティマイザの単純化が適用された後  
ョイン順のために最適化するテーブルの最大数を設定します常  
は、このオプションを設定する必要はありません。  
述部ヒントの設定  
Sybase IQ は、選択性、有用性、インデックス設定、実行モードなどの述部単  
位のヒントを指定できるヒント文字列をサポートします。  
選択性は他の 3 つのクエリ最適化と組み合わせて設定できます。  
インデックス設定オプションに相当する機能の設定  
有用性の設定 ( 述部の順序付け )  
1 つ以上の述部の遅延  
パフォーマンス&チューニング・ガイド  
39  
Download from Www.Somanuals.com. All Manuals Search And Download.  
             
削除オペレーションの最適化  
通常の状況では価を遅らせることにメリットはなくエリの処理が遅く  
なるだけですだしれによって次の 4 つの動作のいずれかをクエリ内の  
もっと後ろに移動できます。  
最適化の前  
初回の「最初のフェッチ」時  
2 回目の「最初のフェッチ」時 ( 相関サブクエリの内部またはネストルー  
プ・プッシュダウン・ジョインの左側のみ )  
インデックスの不使用 ( 水平処理 )  
構文、パラメータ、使用例についてはSybase IQ リファレンス・マニュアル』  
「第 3 SQL 言語の要素」「ユーザ指定の条件ヒント文字列」を参照し  
てください。  
削除オペレーションの最適化  
Sybase IQ は、削除オペレーションを処理するために次の 3 つのアルゴリズム  
から 1 つを選択します。  
スモール・デリート  
スモーリートでは常に少数のグループからローを削除するとき  
に最適なパフォーマンスが得られます常は除するローが 1 つだけ  
か、HG (High_Group) インデックスを持つカラムに等号述部がある場合に  
選択されます。スモール・デリート・アルゴリズムは、HG にランダムに  
アクセスできます。最悪の場合、I/O はアクセスされるグループの数に比  
例します。  
ミッド・デリート  
ミッリートではくつかのグループからローを削除するときに最  
適なパフォーマンスが得られますだしれらのグループが十分に分  
散されているか分に少なくてまり多くの HG ページがアクセスさ  
れないことが条件です。ミッド・デリート・アルゴリズムは、HG への順  
序付けられたアクセスを提供します。最悪の場合、I/O はインデックス・  
ページ数によって制限されますッド・デリートは除するレコード  
のソートという追加的なコストを伴います。  
ラージ・デリート  
ラーリートでは数のグループからローを削除するときに最適な  
パフォーマンスが得られますージ・デリートではべてのローが削  
除されるまで HG が順番にスキャンされます悪の場合I/O はインデッ  
クス・ページ数によって制限されますージ・デリートは並列処理です  
列処理はインデックスの内部構造および削除対象のグループの分散  
度によって制限されます。HG カラムの範囲述部を使用して、ラージ・デ  
リートのスキャン範囲を狭めることができます。  
40  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
3 章 クエリと削除の最適化  
削除コスト  
12.6 より前の HG 削除コスト・モデルでは悪の場合の I/O パフォーマンス  
だけが考慮されていたためいていラーリートが優先的に使用されて  
いました。現在のコスト・モデルでは、I/O コスト、CPU コスト、使用可能な  
リソースンデックス・メタデータ列度エリから使用できる述部な  
ど、多数の要素が考慮されます。  
HG インデックスを持つカラムの述部を指定するとストが大幅に改善され  
ます。HG コスト計算でラージ・デリート以外のアルゴリズムを選択するため  
には除によって影響を受ける重複しない個別の値の数を判定できる必要が  
あります別カウント数はめはインデックス・グループの数および削除  
されるローの数より少ないものと見なされます部は個別カウント数の改善  
された見積もりや、正確な見積もりでさえも提供できます。  
現在のコスト計算ではリートにおける範囲述部の効果を考慮して  
いませんのためージ・デリートのほうが速いケースでミッド・デリー  
トが選択されることもありますうしたケースでは要に応じて強制的に  
ラージ・デリート・アルゴリズムを適用できますれについてはの項で  
説明します。  
削除パフォーマンス・オプションの使用  
HG_DELETE_METHOD オプションを使用するとHG 削除パフォーマンスを  
制御できます。  
HG_DELETE_METHOD オプションでは定した削除アルゴリズムを強制的  
に適用できます。  
1 = スモール・デリート  
2 = ラージ・デリート  
3 = ミッド・デリート  
パフォーマンス&チューニング・ガイド  
41  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
削除オペレーションの最適化  
42  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
4
OLAP の使用  
この章について  
オンライン分析処理 (OLAP: Online Analytical Processing) レーショナ・  
データベースに格納されている情報を効率的に分析するための手法です。  
OLAP を使用するとータをさまざまな次元で分析し計ローを含んだ  
結果セットを取得し、データを多次元キューブに編成するという処理をす  
べて 1 つの SQL クエリで行うことができますィルタを使用して  
データを絞り込み、結果セットを迅速に返すことができます。この章では、  
Sybase IQ サポートする SQL/OLAP 関数について説明します。  
注意 以降で紹介する OLAP の例に出てくるテーブルは、asiqdemo データ  
内容  
トピック名  
ページ  
44  
OLAP ついて  
統計関数  
47  
61  
61  
単純な集合関数  
ウィンドウ  
62  
75  
ランク付け関数  
ウィンドウ集合関数  
統計集合関数  
80  
81  
82  
分散統計関数  
85  
数値関数  
88  
OLAP の規則と制限  
その他の OLAP の例  
OLAP 関数の BNF 文法  
89  
98  
パフォーマンス&チューニング・ガイド  
43  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
OLAP について  
OLAP について  
1999 年の SQL 標準の改正によって、ANSI SQL 標準に複雑なデータ分析操作  
を行うための拡張機能が導入されました。Sybase IQ では、以前のリリースで  
これらの SQL 拡張機能の一部が取り入れられていますがSybase IQ 12.7 では、  
これらの拡張機能が包括的にサポートされています。  
この分析機能を使って複雑なデータ分析を 1 つの SQL 文で実行することがで  
きますが、これはオンライン分析処理 (OLAP) と呼ばれるソフトウェア・テク  
ノロジに基づいています。OLAP の関数には、GROUP BY 句の拡張機能や、  
次のような統計関数が含まれています。  
GROUP BY 句の拡張機能 - CUBEROLLUP  
統計関数  
単純な集合 - AVGCOUNTMAXMINSUMSTDDEVVARIANCE  
注意 Grouping() 以外の単純な集合関数はすべて OLAP ウィンドウ関  
数と併用できます。  
ウィンドウ関数  
ウィンドウでの集合 - AVGCOUNTMAX, MINSUM  
ランク付け関数 - RANKDENSE_RANKPERCENT_RANK、  
NTILE  
統計関数 - STDDEVSTDDEV_SAMPSTDDEV_POP、  
VARIANCEVAR_SAMPVAR_POP  
分散統計関数 - PERCENTILE_CONTPERCENTILE_DISC  
数値関数 - WIDTH_BUCKETCEILLNEXPPOWERSQRT、  
FLOOR  
データベース製品によっては、OLAP モジュールが独立しており、分析前に  
データをデータベースから OLAP モジュールに移動しなければならないもの  
もあります。一方、Sybase IQ では OLAP 機能がデータベースそのものに組み  
込まれているためトアロシージャなどのデータベース機能との配備  
や統合を簡単かつシームレスに行うことができます。  
44  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
                 
4 OLAP の使用  
OLAP の利点  
使用すると2 つの大きな利点があります一に次元のデータ分析ー  
タ・マイニング、時系列分析、傾向分析、コストの割り当て、ゴール・シー  
時的な多次元構造変更手続き型モデリング外の警告を多くの場  
1 つの SQL 文で実行できます。第二に、OLAP のウィンドウおよびレポー  
ト集合関数ではウィンドウという関係演算子を使用することができれは  
セルフジョインや相関サブクエリを使用するセマンティック的に等価なクエ  
リよりも効率的に実行できますOLAP を使用して取得した結果セットには小  
計ローを含めることができの結果セットを多次元キューブに編成すること  
もできます細については「ウィンドウ(62 ページ ) を参照してください。  
さまざまな期間での移動平均と移動和を計算したり択したカラムの値が変  
化したときに集計とランクをリセットしたり雑な比率を単純な言葉で表現  
したりできます。1 つのクエリ式のスコープ内で、それぞれ独自のパーティ  
ショニンールを持ついくつかの異なる OLAP 関数を定義することができ  
ます。  
OLAP の評価について  
OLAP の評価は終的な結果に影響を及ぼすクエリ実行のいくつかのフェー  
ズとして概念化できますOLAP の実行フェーズはエリ内の対応する句に  
よって識別されます。たとえば、SQL クエリの指定にウィンドウ関数が含ま  
れている場合は、WHEREJOINGROUP BYHAVING 句が先に処理され  
ます。GROUP BY 句でグループが定義された後、クエリの ORDER BY 句に  
含まれる最後の SELECT リストが評価される前に、パーティションが作成さ  
れます。  
グループ化の際にはNULL 値はすべて同じグループと見なされます ( それぞ  
れの NULL 値が等しくない場合でも同様です )。  
HAVING 句は、WHERE 句に似ており、GROUP BY 句の結果に対するフィル  
タとして機能します。  
ANSI SQL 標準に基づく SQL 文と SELECTFROMWHEREGROUP BY、  
HAVING 句を含んだ単純なクエリ仕様のセマンティックを考えてみます。  
1
クエリにより、FROM 句のテーブル式を満たすロー・セットが取得され  
ます。  
2
3
WHERE 句の述部がーブルから取得したロットに適用されます。  
WHERE 句の条件を満たさない ( 条件が true にならない ) ローが除外され  
ます。  
残りの各ローについてSELECT リストおよび GROUP BY 句に含まれて  
いる式 ( 集合関数を除く ) が評価されます。  
パフォーマンス&チューニング・ガイド  
45  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
OLAP について  
4
5
GROUP BY 句の式の重複しない値に基づいて、結果のローがグループ化  
されます (NULL はそれぞれのドメインで特殊な値として扱われます )。  
PARTITION BY 句がある場合は、GROUP BY 句の式はパーティション・  
キーとして使用されます。  
各パーティションについて、SELECT リストまたは HAVING 句の集合関  
数が評価されますったん集合関数を適用すると間の結果セットに  
は個々のテーブル・ローが含まれなくなります。新しい結果セットには、  
GROUP BY の式と、各パーティションについて計算した集合関数の値が  
含まれます。  
6
7
HAVING 句の条件が結果グループに適用されますHAVING 句の条件を満  
たさないグループが除外されます。  
PARTITION BY 句で定義された境界に基づいて結果が分割されます果  
ウィンドウについて、OLAP ウィンドウ関数 ( ランク付け関数および集合  
関数 ) が計算されます。  
4-1: 実行のセマンティック・フェーズ  
詳細については「文法規則 2(98 ページ ) を参照してください。OLAP 構文の  
詳細についてはOLAP 関数の BNF 文法」(98 ページ ) も参照してください。  
46  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
4 OLAP の使用  
GROUP BY 句の拡張機能  
GROUP BY 句の拡張機能によりのような処理を行う複雑な SQL 文を書く  
ことができます。  
入力ローを複数の次元に分割し果グループの複数のサブセットを組み  
合わせる。  
データ・キューブ を作成し、データ・マイニング分析のための疎密度  
の多次元結果セットを用意する。  
元のグループを含んだ結果セットを作成する ( 必要に応じて計ローと  
合計ローを含める場合もある )。  
ROLLUP CUBE などの OLAP Grouping() ( グループ化 ) 操作はレフィ  
クスや小計ローとして概念化できます。  
プレフィクス  
GROUP BY 句を含むクエリでは、プレフィクスのリストが作成されます。プ  
レフィクスとはGROUP BY 句の項目のサブセットでありエリの GROUP  
BY 句の項目のうち最も右にある 1 つまたは複数の項目を除外することで作成  
されます。残りのカラムはプレフィクス・カラムと呼ばれます。  
ROLLUP 1 次に示す ROLLUP のクエリの例では、GROUP BY のリストに  
2 つの変数 (Year Quarter) が含まれています。  
SELECT year (order_date) Year, quarter(order_date)  
Quarter, COUNT(*) Orders  
FROM alt_sales_order  
GROUP BY ROLLUP(Year, Quarter)  
ORDER BY Year, Quarter  
このクエリには次の 2 つのプレフィクスがあります。  
Quarter を除外するプレフィクス - プレフィクス・カラムには 1 つのカラ  
(Year) が含まれます。  
Quarter Year の両方を除外するプレフィクス - プレフィクス・カラム  
は存在しません。  
注意 GROUP BY リストには、項目と同じ数のプレフィクスが含まれます。  
パフォーマンス&チューニング・ガイド  
47  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
GROUP BY 句の拡張機能  
GROUP BY での ROLLUP CUBE  
プレフィクスに関する一般的なグループ化を簡単に指定するために2 つの重  
要な構文簡略化パターンが用意されています。1 つ目のパターンは ROLLUP、  
2 つ目のパターンは CUBE と呼ばれます。  
GROUP BY ROLLUP  
ROLLUP 演算子には、引数として適用するグループ化の式を、次の構文の中  
で順序リストで指定します。  
SELECT [ GROUPING (column-name) ] …  
GROUP BY [ expression [, ]  
| ROLLUP ( expression [, ] ) ]  
GROUPING は、カラム名をパラメータとして受け取り、4-1 に示すように  
ブール値を返します。  
4-1: ROLLUP 演算子が指定された GROUPING によって返される値  
結果値の種類  
GROUPING の戻り値  
1 ( )  
ROLLUP 演算子によって作成された NULL  
ローが小計であることを示す NULL  
ROLLUP 演算子によって作成された以外の NULL  
格納されていた NULL  
1 ( )  
0 ( )  
0 ( )  
ROLLUP GROUP BY 句に指定された標準的な集合関数値を計算します。  
次にROLLUP はグループ化を行うカラムのリストを右から左に移動しり高  
いレベルの小計を連続して作成します後に総計が作成されますループ化  
するカラムの数が n 個の場合、ROLLUP n+1 レベルの小計を作成します。  
SQL 構文の例  
定義されるセット  
GROUP BY ROLLUP (A, B, C);  
(A, B, C)  
(A, B)  
(A)  
( )  
ROLLUP と小計ロー  
ROLLUP は、GROUP BY のクエリ・セットに対して UNION を行うのと同じ  
ことです2 つのクエリの結果セットは等しくなりますGROUP BY (A,  
B) の結果セットは、A B に定数が含まれているすべてのローについての小  
計から成りますUNION を可能にするために、カラム C には NULL が割り当  
てられます。  
48  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
4 OLAP の使用  
ROLLUP クエリの例  
ROLLUP を使用せずに記述した同じ内容のクエリ  
SELECT A, B, C,  
SELECT *  
SUM( D )  
FROM T1  
GROUP BY ROLLUP (A, B,  
C);  
FROM ( ( SELECT A, B, C, SUM( D )  
GROUP BY A, B, C ) UNION ALL ( SELECT  
A, B, NULL, SUM( D ) GROUP BY A,  
B ) UNION ALL ( SELECT A, NULL,  
NULL, SUM( D ) GROUP BY A )  
UNION ALL ( SELECT NULL, NULL,  
NULL, SUM( D ) ) )  
小計ローはデータの分析に役立ちますータが大量にある場合ー  
タにさまざまな次元がある場合データがさまざまなテーブルに含まれている  
場合るいはまったく異なるデータベースに含まれている場合に威力を発揮  
しますとえば販売マネージャが上高についてのレポートを営業担当者  
域別半期別に整理して上パターンの理解に役立てることができ  
ますータの小計は売マネージャが売上高の全体像をさまざまな視点か  
ら分析するのに役立ちます売マネージャが比較したいと考える基準に基づ  
いて要約情報が提供されていればータの分析を容易に行うことができます。  
OLAP を使用するとーおよびカラムの小計を分析算する処理をユーザ  
の目から隠すことができます。4-2 に、Sybase IQ での小計の計算の概念を  
示します。  
4-2: 小計  
1
このステップで、まだ ROLLUP とは見なされない中間の結果セットが生  
成されます。  
2
3
小計が評価され、結果セットに付加されます。  
クエリ内の ORDER BY 句に従ってローが並べられます。  
NULL 値と小計ロー  
GROUP BY 操作に対する入力のローに NULL が含まれているときは、その中  
に、ROLLUP または CUBE 操作によって追加された小計ローと、最初の入力  
データの一部として NULL 値を含んでいるローが混在している可能性があり  
ます。  
Grouping() 関数は、小計ローをその他のローから区別します。具体的には、  
GROUP BY リストのカラムを引数として受け取り、そのカラムが小計ローで  
あるために NULL になっている場合は 1 を返し、それ以外の場合は 0 を返し  
ます。  
パフォーマンス&チューニング・ガイド  
49  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
GROUP BY 句の拡張機能  
次の例では果セットの中に Grouping() カラムが含まれています調表示  
されているローは計ローであるために NULL を含んでいるのではなく入  
力データの結果として NULL を含んでいるローですGrouping() カラムは強調  
表示されています。このクエリは、employee テーブルと sales_order テーブ  
ルの間の外部ジョインですのクエリではキサスューヨークた  
はカリフォルニアに住んでいる女性従業員を選択しています業担当者でな  
( したがって売上がない ) 女性従業員についてはラムに NULL が表示さ  
れます。  
SELECT employee.emp_id AS Employee, year(order_date) AS  
Year, COUNT(*) AS Orders, GROUPING(Employee) AS  
GE, GROUPING(Year) AS GY  
FROM employee LEFT OUTER JOIN alt_sales_order ON  
employee.emp_id = alt_sales_order.sales_rep  
WHERE employee.sex IN ('F') AND employee.state  
IN ('TX', 'CA', 'NY')  
GROUP BY ROLLUP (Year, Employee)  
ORDER BY Year, Employee  
このクエリの結果セットを次に示します。  
emp_id  
------  
NULL  
NULL  
1090  
NULL  
667  
year  
----  
NULL  
NULL  
NULL  
2000  
2000  
2000  
2000  
2001  
2001  
2001  
2001  
Orders  
------  
1
GY  
--  
1
1
0
1
0
0
0
1
0
0
0
GE  
--  
0
1
0
0
0
0
0
0
0
0
0
165  
1
98  
34  
31  
33  
66  
20  
22  
949  
1142  
NULL  
667  
949  
1142  
24  
個々のプレフィクスについてレフィクラムに同じ値が含まれている  
すべてのローに関する小計ローが作成されます。  
ROLLUP の結果を具体的に説明するために、前述のクエリの例をもう一度詳  
しく見ていきます。  
SELECT year (order_date) AS Year, quarter  
(order_date) AS Quarter, COUNT (*) Orders  
FROM sales_order  
GROUP BY ROLLUP (Year, Quarter)  
ORDER BY Year, Quarter  
このクエリではYear カラムを含んでいるプレフィクスによりYear=2000 の  
合計ローと Year=2001 の合計ローが作成されますのプレフィクスに関する  
1 つの合計ローはカラムを含んでいません。これは、中間の結果セットに含ま  
れているすべてのローの小計です。  
50  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
4 OLAP の使用  
小計ローの各カラムの値は、次のようになっています。  
プレフィクスに含まれているカラム - そのカラムの値です。たとえば前  
述のクエリでは、Year=2000 のローに関する小計ローの Year カラムの値  
2000 になります。  
プレフィクスから除外されたカラム - NULL です。たとえば、Year カラ  
ムから成るプレフィクスにより生成された小計ローでは、Quarter カラム  
の値は NULL になります。  
集合関数 - 除外されているカラムの値を計算した結果です。  
小計値は、集計されたローではなく基本データのローに対して計算され  
ますくの場合とえば SUM COUNT などでは結果は等しくなり  
ますが、AVGSTDDEVVARIANCE などの統計関数では結果が異なっ  
てくるため、この区別は重要です。  
ROLLUP 演算子には次の制限があります。  
ROLLUP 演算子はCOUNT DISTINCT SUM DISTINCT を除きGROUP  
BY 句で使用可能なすべての集合関数をサポートしています。  
ROLLUP SELECT 文でのみ使用できますブクエリでは ROLLUP を  
使用できません。  
1 つの GROUP BY 句の中で複数の ROLLUPCUBEよび GROUP BY  
カラムを組み合わせるグループ化の指定は時点ではサポートされてい  
ません。  
GROUP BY のキーに定数式を指定することはできません。  
式の一般的なフォーマットについてはSybase IQ リファレンス・マニュア  
ル』の「式」SQL 言語の要素」を参照してください。  
ROLLUP 2 次はROLLUP GROUPING の使用例ですGROUPING によっ  
て作成される一連のマスク・カラムを表示します。カラム SNC に表示され  
ている数字 0 1 は、GROUPING からの戻り値で ROLLUP の結果の値を表現  
しています。マスクが “011” であれば小計のローであり、“111” であれば総計の  
ローであると特定できます。これを利用して、クエリの結果をプログラムで分  
析することが可能です。  
SELECT size, name, color, SUM(quantity),  
GROUPING(size) AS S,  
GROUPING(name) AS N,  
GROUPING(color) AS C  
FROM product  
GROUP BY ROLLUP(size, name, color) HAVING (S=1 or N=1 or C=1)  
ORDER BY size, name, color;  
このクエリの結果セットを次に示します。  
size  
----  
(NULL)  
name  
-----  
(NULL)  
color  
------  
(NULL)  
SUM S N C  
--- - - -  
496 1 1 1  
パフォーマンス&チューニング・ガイド  
51  
Download from Www.Somanuals.com. All Manuals Search And Download.  
GROUP BY 句の拡張機能  
Large  
Large  
Medium  
Medium  
Medium  
(NULL)  
Sweatshirt  
(NULL)  
Shorts  
Tee Shirt  
(NULL)  
(NULL)  
(NULL)  
(NULL)  
(NULL)  
(NULL)  
(NULL)  
(NULL)  
(NULL)  
(NULL)  
(NULL)  
71 0 1 1  
71 0 0 1  
134 0 1 1  
80 0 0 1  
54 0 0 1  
263 0 1 1  
124 0 0 1  
75 0 0 1  
64 0 0 1  
28 0 1 1  
28 0 1 1  
One size fits all (NULL)  
One size fits all Baseball Cap  
One size fits all Tee Shirt  
One size fits all Visor  
Small  
Small  
(NULL)  
Tee Shirt  
ROLLUP 3 次の例は、GROUPING を使用して、最初から格納されていた  
NULL 値と ROLLUP 操作によって生成された “NULL” 値とを区別する方法を  
示していますのクエリで指定されているとおり初から格納されていた  
NULL 値はカラム prod_id [NULL] として表示されROLLUP によって生成  
された “NULL” 値はカラム PROD_IDS ALL に置き換えられます。  
SELECT year(ship_date) AS Year, prod_id, SUM(quantity)  
AS OSum, CASE WHEN GROUPING(Year) = 1 THEN 'ALL' ELSE  
CAST(Year AS char(8)) END, CASE WHEN  
GROUPING(prod_id) = 1 THEN 'ALL' ELSE CAST(prod_id  
as char(8)) END  
FROM alt_sales_order_items  
GROUP BY ROLLUP(Year, prod_id) HAVING OSum > 36  
ORDER BY Year, prod_id;  
このクエリの結果セットを次に示します。  
ship_date  
---------  
NULL  
2000  
2000  
2000  
2000  
2000  
2000  
2000  
2000  
2000  
2000  
2000  
2001  
2001  
prod_id  
-------  
NULL  
NULL  
300  
301  
302  
400  
401  
500  
501  
600  
601  
700  
NULL  
300  
SUM  
---  
SHIP_DATES  
----------  
ALL  
2000  
2000  
2000  
2000  
2000  
2000  
2000  
2000  
2000  
2000  
2000  
2001  
2001  
PROD_IDS  
--------  
ALL  
ALL  
300  
301  
302  
400  
401  
500  
501  
600  
601  
700  
ALL  
300  
28359  
17642  
1476  
1440  
1152  
1946  
1596  
1704  
1572  
2124  
1932  
2700  
10717  
888  
2001  
301  
948  
2001  
301  
2001  
302  
996  
2001  
302  
2001  
2001  
2001  
400  
401  
500  
1332  
1105  
948  
2001  
2001  
2001  
400  
401  
500  
52  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
4 OLAP の使用  
2001  
2001  
2001  
2001  
501  
600  
601  
700  
936  
936  
792  
2001  
2001  
2001  
2001  
501  
600  
601  
700  
1836  
ROLLUP 4 次のクエリ例は、注文数を年別および四半期別に集計したデー  
タを返します。  
SELECT year(order_date) AS Year, quarter(order_date)  
AS Quarter, COUNT(*) AS Orders  
FROM alt_sales_order  
GROUP BY ROLLUP(Year, Quarter)  
ORDER BY Year, Quarter  
次の図はのクエリの結果を示しています果セット内の小計ローは強調  
表示されています。各小計ローでは、その小計の計算対象になったカラムに  
NULL 値が格納されています。  
ロー [1] 方の年 (2000 年および 2001 ) のすべての四半期の注文数の合  
計を示していますのローはYear カラムと Quarter カラムの両方が NULL  
であり、すべてのカラムがプレフィクスから除外されています。  
注意 ROLLUP 操作によって返される結果セットには、集合カラムを除くすべ  
てのカラムが NULL であるローが必ず 1 つ含まれています。このローは、集  
合関数に対する全カラムの要約を表しています。たとえば、集合関数として  
SUM を使用している場合は、このローはすべての値の総計を表します。  
ロー [2] は、2000 年および 2001 年の注文数の合計をそれぞれ示しています。  
どちらのローも、Quarter カラムの値は NULL になっています。このカラムの  
値を加算して、Year の小計を出しているためです。結果セットにこのような  
ローがいくつ含まれるかは、ROLLUP クエリに登場する変数の数によって決  
まります。  
[3] としてマークされている残りのローは要約情報を示し、それぞれの年の各  
四半期の注文数の合計を表しています。  
パフォーマンス&チューニング・ガイド  
53  
Download from Www.Somanuals.com. All Manuals Search And Download.  
GROUP BY 句の拡張機能  
ROLLUP 5 この ROLLUP 操作の例では半期別域別の注文数  
を集計するというやや複雑な結果セットを返しますの例では1 および  
2 四半期と 2 つの地域 ( カナダと東部地区 ) だけを分析します。  
SELECT year(order_date) AS Year, quarter(order_date)  
AS Quarter, region, COUNT(*) AS Orders  
FROM alt_sales_order WHERE region IN ('Canada',  
'Eastern') AND quarter IN (1, 2)  
GROUP BY ROLLUP (Year, Quarter, Region)  
ORDER BY Year, Quarter, Region  
次の図はのクエリの結果セットを示しています小計ローではの小  
計の計算対象になったカラムに NULL が格納されています。  
ロー [1] はすべてのローの集計結果であり、YearQuarterRegion カラムに  
NULL が含まれています。このローの Orders カラムの値は、カナダと東部地  
区の 2000 年および 2001 年の第 1 および第 2 四半期の注文数の合計を示してい  
ます。  
[2] としてマークされているローは、それぞれの年 (2000 年と 2001 ) におけ  
るカナダと東部地区の第 1 および第 2 四半期の注文数の合計を示しています。  
ロー [2] の値を足すと、ロー [1] に示されている総計に等しくなります。  
54  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
4 OLAP の使用  
[3] としてマークされているローは、特定の年および四半期の全地域の注文数  
の合計を示しています。  
[4] としてマークされているローは、結果セット内のそれぞれの年の各四半期  
の各地域の注文の合計数を示しています。  
パフォーマンス&チューニング・ガイド  
55  
Download from Www.Somanuals.com. All Manuals Search And Download.  
GROUP BY 句の拡張機能  
GROUP BY CUBE  
GROUP BY 句の CUBE 演算子は、データを複数の次元 ( グループ化の式 ) で  
グループ化することでデータを分析しますCUBE に次元の順序リストを引数  
として指定すると、SELECT 文の中で、そのクエリに指定した次元の考えら  
れるすべての組み合わせの小計を計算し択した複数のカラムのすべての値  
の組み合わせについての要約を示す結果セットを生成することができます。  
CUBE の構文は次のとおりです。  
SELECT [ GROUPING (column-name) ] …  
GROUP BY [ expression [,]  
| CUBE ( expression [,] ) ]  
GROUPING は、カラム名をパラメータとして受け取り、4-2 に示すように  
ブール値を返します。  
4-2: CUBE 演算子が指定された GROUPING によって返される値  
結果値の種類  
GROUPING の戻り値  
1 ( )  
CUBE 演算子によって作成された NULL  
ローが小計であることを示す NULL  
CUBE 演算子によって作成された以外の NULL  
格納されていた NULL  
1 ( )  
0 ( )  
0 ( )  
CUBE は、同じ階層の一部ではない次元を扱うときに特に威力を発揮します。  
SQL 構文の例  
定義されるセット  
GROUP BY CUBE (A, B, C);  
(A, B, C)  
(A, B)  
(A, C)  
(A)  
(B, C)  
(B)  
(C)  
( )  
CUBE 演算子には次の制限があります。  
CUBE 演算子は GROUP BY 句で使用可能なすべての集合関数をサポート  
しますが、CUBE は現在 COUNT DISTINCT および SUM DISTINCT では  
サポートされていません。  
CUBE は、現在、逆分散統計関数である PERCENTILE_CONT と  
PERCENTILE_DISC ではサポートされていません。  
CUBE SELECT 文でのみ使用できますCUBE SELECT のサブクエ  
リで使用することはできません。  
1 つの GROUP BY 句の中で ROLLUPCUBEGROUP BY カラムを組み  
合わせる GROUPING の指定は、現時点ではサポートされていません。  
56  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
4 OLAP の使用  
GROUP BY のキーに定数式を指定することはできません。  
注意 キューブのサイズがテンポラャッシュのサイズを超えるとCUBE  
のパフォーマンスが低下します。  
GROUPING CUBE 演算子を併用すると納されていた NULL 値と CUBE  
によって作成されたクエリ結果の “NULL” 値を区別することができます。  
GROUPING 関数を使用して結果を分析する方法についてはROLLUP 演算子  
の説明で紹介した例を参照してください。  
CUBE 操作が返す結果セットには、集計カラムを除くすべてのカラムの値が  
NULL であるローが少なくとも 1 つは含まれていますのローは合関数  
に対する全カラムの要約を表しています。  
CUBE 1 次の例は、対象者の州 ( 地理的な位置 )、性別、教育レベル、およ  
び収入などで構成される調査データを使用したクエリです初に紹介するク  
エリには GROUP BY 句が指定されています。この句は、クエリの結果を  
census テーブルの stategendereducation カラムの値に応じてロルー  
プに分類し入の平均とローの合計数をグループごとに計算しますのク  
エリには GROUP BY 句だけを使用しーのグループ化に CUBE 演算子を使  
用していません。  
SELECT state, sex as gender, dept_id, COUNT(*),  
CAST(ROUND(AVG(salary),2) AS NUMERIC(18,2))  
AS average  
FROM employee WHERE state IN ('MA' , 'CA')  
GROUP BY state, sex, dept_id  
ORDER BY 1,2;  
このクエリの結果セットを次に示します。  
state gender dept_id count(*) avg salary  
----- ------ ------- -------- ----------  
CA  
CA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
F
M
F
F
F
F
F
M
M
M
M
M
200  
200  
500  
400  
300  
200  
100  
300  
500  
400  
100  
200  
2
1
4
8
7
3
6
2
5
58650.00  
39300.00  
29950.00  
41959.88  
59685.71  
60451.00  
58243.42  
58850.00  
36793.96  
45321.47  
58563.59  
46810.63  
8
13  
8
パフォーマンス&チューニング・ガイド  
57  
Download from Www.Somanuals.com. All Manuals Search And Download.  
GROUP BY 句の拡張機能  
GROUP BY 句の CUBE 拡張機能を使用すると調査データを 1 回参照するだ  
けで調査データ全体における州別育別の平均収入を計算しstate、  
gendereducation カラムの考えられるすべての組み合わせにおける平均収入  
を計算することができますCUBE 演算子を使用するととえばべての  
州における全女性の平均収入を計算したり調査対象者全員の平均収入を各  
自の教育別および州別に計算したりすることができます。  
CUBE でグループを計算するときには、計算されたグループのカラムに NULL  
値が挿入されます。最初からデータベース内に格納されていた NULL なのか、  
CUBE の結果として生成された NULL なのかを区別するためにはGROUPING  
関数を使用する必要がありますGROUPING 関数は定されたカラムが上位  
レベルのグループにマージされている場合は 1 を返します。  
CUBE 2 次のクエリはGROUP BY CUBE GROUPING 関数を併用する  
方法を示しています。  
SELECT case grouping(state) WHEN 1 THEN 'ALL' ELSE state  
END AS c_state, case grouping(sex) WHEN 1 THEN 'ALL'  
ELSE sex end AS c_gender, case grouping(dept_id)  
WHEN 1 THEN 'ALL' ELSE cast(dept_id as char(4)) end  
AS c_dept, COUNT(*), CAST(ROUND(AVG(salary),2) AS  
NUMERIC(18,2))AS AVERAGE  
FROM employee WHERE state IN ('MA' , 'CA')  
GROUP BY CUBE(state, sex, dept_id)  
ORDER BY 1,2,3;  
このクエリの結果は次のとおりです。クエリで指定されているとおり、小計  
ローを示すために CUBE によって生成された NULL 計ロー内で ALL に  
置き換えられています。  
state  
-----  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
CA  
sex  
---  
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
F
F
F
F
F
F
M
M
M
M
M
M
ALL  
dept_id  
-------  
100  
200  
300  
400  
500  
ALL  
100  
200  
300  
400  
500  
ALL  
100  
200  
300  
count  
avg salary  
----------  
58462.48  
50888.43  
59500.00  
43640.67  
33752.20  
50160.38  
58243.42  
59730.60  
59685.71  
41959.88  
29950.00  
50713.08  
58563.59  
45976.11  
58850.00  
45321.47  
36793.96  
49712.25  
52200.00  
-----  
19  
14  
9
16  
9
67  
6
5
7
8
4
30  
13  
9
2
8
400  
500  
ALL  
200  
5
37  
3
58  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
4 OLAP の使用  
CA  
CA  
CA  
CA  
CA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
MA  
ALL  
F
F
M
M
ALL  
ALL  
ALL  
ALL  
ALL  
ALL  
F
F
F
F
F
F
M
M
M
ALL  
200  
ALL  
200  
ALL  
100  
200  
300  
400  
500  
ALL  
100  
200  
300  
400  
500  
ALL  
100  
200  
300  
400  
500  
ALL  
3
2
2
1
1
19  
11  
9
16  
9
64  
6
3
7
8
4
28  
13  
8
2
8
52200.00  
58650.00  
58650.00  
39300.00  
39300.00  
58462.48  
50530.73  
59500.00  
43640.67  
33752.20  
50064.78  
58243.42  
60451.00  
59685.71  
41959.88  
29950.00  
50146.16  
58563.59  
46810.63  
58850.00  
45321.47  
36793.96  
50001.48  
M
M
M
5
36  
CUBE 3 この例のクエリは文数の合計を要約する結果セットを返し次  
に、年別および四半期別の注文数の小計を計算します。  
注意 比較する変数の数が増えると、キューブの計算のコストが急激に増大し  
ます。  
SELECT year(order_date) AS Year, quarter(order_date)  
AS Quarter, COUNT(*) AS Orders  
FROM alt_sales_order  
GROUP BY CUBE(Year, Quarter)  
ORDER BY Year, Quarter  
パフォーマンス&チューニング・ガイド  
59  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
GROUP BY 句の拡張機能  
次の図はのクエリの結果セットを示していますの結果セットでは小  
計ローが強調表示されています小計ローではの小計の計算対象になっ  
たカラムに NULL が格納されています。  
先頭のロー [1] 方の年のすべての四半期の注文数の合計を示しています。  
Orders カラムの値は、[3] としてマークされている各ローの値の合計です。こ  
れは、[2] としてマークされている 4 つのローの値の合計でもあります。  
[2] としてマークされている一連のローは、両方の年の四半期別の注文数の合  
計を示しています。[3] としてマークされている 2 つのローは、それぞれ 2000  
年および 2001 年のすべての四半期の注文数の合計を示しています。  
60  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
4 OLAP の使用  
統計関数  
Sybase IQ では、1 つの SQL 文内で複雑なデータ分析を実行できる機能を備え  
た単純な集合関数とウィンドウ集合関数の両方を提供していますれらの関  
数を使用してとえば ダウ工業株 30 種平均の四半期の移動平均はどうなっ  
ているか または 各部署のすべての従業員とその累積給与を一覧表示せよ ”  
というクエリに対する答えを計算することができますまざまな期間におけ  
る移動平均と累積和を計算したりーティション値が変化したときに集合計  
算がリセットされるような方法で集計とランクを分割したりできます1 つの  
クエリ式のスコープ内でれぞれ独自のパーティショニンールを持つ  
いくつかの異なる OLAP 関数を定義することができます計関数は 2 つのカ  
テゴリに分けられます。  
単純な集合関数 (AVGCOUNTMAXMINSUM など ) ータベー  
スに含まれるローのグループのデータを要約しまSELECT の  
GROUP BY 句を使ってグループを形成します。  
1 つの引数を取る単項の統計集合関数には、STDDEV()STDDEV_SAMP()、  
STDDEV_POP()VARIANCE()VAR_SAMP()、および VAR_POP() があり  
ます。  
単純な集合関数でも単項の集合関数でもータベース内のローのグループに  
関するデータを要約することができィンドウ指定と組み合わせて理の  
際に結果セットに対する移動ウィンドウを計算することができます。  
注意 合関数 AVGSUMSTDDEVSTDDEV_POPSTDDEV_SAMP、  
VAR_POPVAR_SAMPVARIANCE イナリ・データ型である BINARY  
VARBINARY をサポートしていません。  
単純な集合関数  
単純な集合関数 (AVGCOUNTMAXMINSUM など ) は、データベース  
には SELECT 文の GROUP BY 句を使用します合関数はselect リストと、  
SELECT 文の HAVING 句および ORDER BY 句の中だけで使用できます。  
注意 Grouping() 関数を除き、単純な集合関数と単項の集合関数はどちらも、  
SQL クエリの指定に「ウィンドウ句」( ウィンドウ ) を組み込むウィンドウ関  
数として使用できますれにより理時に結果セットに対して概念的に移  
動ウィンドウを作成することができます。詳細については「ウィンドウ」(62  
ページ ) を参照してください。  
詳細については、Sybase IQ リファレンス・マニュアルの「第 5 SQL 関数」  
「集合関数」を参照してください。  
パフォーマンス&チューニング・ガイド  
61  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
統計関数  
ウィンドウ  
OLAP に関する ANSI SQL 拡張機能で導入された主な機能はウィンドウと呼  
ぶ構造です。このウィンドウ拡張機能により、ユーザはクエリの結果セット  
( または、クエリの論理パーティション ) をパーティションと呼ばれるローの  
ことができます。  
1 つのウィンドウには 3 つのクラスのウィンドウ関数としてンク付け関数、  
ロー・ナンバリング関数、およびウィンドウ集合関数を使用できます。  
<WINDOWED TABLE FUNCTION TYPE> ::=  
<RANK FUNCTION TYPE> <LEFT PAREN> <RIGHT PAREN>  
| ROW_NUMBER <LEFT PAREN> <RIGHT PAREN>  
| <WINDOW AGGREGATE FUNCTION>  
詳細については「文法規則 6(98 ページ ) を参照してください。  
ウィンドウ拡張機能はィンドウ名または指定に対するウィンドウ関数の種  
類を指定し1 つのクエリ式のスコープ内のパーティション化された結果セッ  
トに適用されます。ウィンドウ・パーティションは、特殊な OVER 句の 1 つ  
以上のカラムで定義されている、クエリから返されるローのサブセットです。  
olap_function() OVER (PARTITION BY col1, col2...)  
ウィンドウ操作ではーティション内の各ローのランク付けーティショ  
ン内のローの値の分布、および同様の操作などの情報を設定できます。また、  
データの移動平均や合計を計算しータおよび操作に対するそのデータの影  
響を評価する機能を拡張することもできます。  
ウィンドウ・パーティションは殊な OVER() 句の 1 つ以上のカラムで定義  
されている、クエリから返されるローのサブセットです。  
OLAP_FUNCTION() OVER (PARTITION BY col1, col2...)  
OLAP ウィンドウの 3 つ  
の重要な側面  
ドウ・フレームという 3 つの重要な側面から成りますれぞれの要素はそ  
の時点でウィンドウ内で可視となるデーローに大きな影響を与えますま  
OLAP OVER 句は3 つの特徴的な機能によりOLAP 関数を他の  
統計関数やレポート関数から区別します。  
ウィンドウ・パーティションの定義 (PARTITION BY )。詳細について  
「ウィンドウ・パーティション」(64 ページ ) を参照してください。  
パーティション内でのローの順序付け (ORDER BY )細については、  
「ウィンドウ順序」(64 ページ ) を参照してください。  
ウィンドレームの定義 (ROWS/RANGE 指定 )「ウィンドレー  
ム」(65 ページ )。  
62  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
                     
4 OLAP の使用  
OLAP のウィンドウ指定に関して名前を指定することができます長なウィ  
ンドウ定義を避けるためにの名前を使用して複数のウィンドウ関数を指定  
できますの場合はーワード WINDOW の後に少なくとも 1 つのウィン  
ドウ定義を指定します ( 複数指定する場合はカンマで区切ります )。ウィンド  
ウ定義には、クエリ内でウィンドウを識別するための名前と、ウィンドウの  
パーティションレームを定義するためのウィンドウ指定の詳細を含  
めます。  
<WINDOW CLAUSE> ::= <WINDOW WINDOW DEFINITION LIST>  
<WINDOW DEFINITION LIST> ::=  
<WINDOW DEFINITION> [ { <COMMA> <WINDOW DEFINITION>  
} . . . ]  
<WINDOW DEFINITION> ::=  
<NEW WINDOW NAME> AS <WINDOW SPECIFICATION>  
<WINDOW SPECIFICATION DETAILS> ::=  
[ <EXISTING WINDOW NAME> ]  
[ <WINDOW PARTITION CLAUSE> ]  
[ <WINDOW ORDER CLAUSE> ]  
[ <WINDOW FRAME CLAUSE> ]  
義することができますィンドウ・フレームによりーティションの現在  
のローに対して計算を実行するときに使われるローの範囲を変更することが  
ウィンドウのサイズは理的なローの数 ( ウィンドウ・フレーム単位 ROWS  
を定義するウィンドウ指定を使用 ) または論理的な数値の間隔 ( ウィンドウ・  
フレーム単位 RANGE を定義するウィンドウ指定を使用 ) に基づきます細  
については「ウィンドウ・フレーム」(65 ページ ) を参照してください。  
OLAP のウィンドウ操作では、次のカテゴリの関数を使用できます。  
「ランク付け関数」(75 ページ )  
「ウィンドウ集合関数」(80 ページ )  
「統計集合関数」(81 ページ )  
「分散統計関数」(82 ページ )  
パフォーマンス&チューニング・ガイド  
63  
Download from Www.Somanuals.com. All Manuals Search And Download.  
             
統計関数  
ウィンドウ・パーティション  
ウィンドウ・パーティションとはPARTITION BY 句を使用してーザ指定  
の結果セット ( 入力ロー ) を分割することです。パーティションは、カンマで  
区切られた 1 つ以上の値の式によって定義されますーティションに分割さ  
れたデータは暗黙的にソートされフォルトのソート順序は昇順 (ASC) にな  
ります。  
<WINDOW PARTITION CLAUSE> ::=  
PARTITION BY <WINDOW PARTITION EXPRESSION LIST>  
ウィンドウ・パーティション句を指定しなかった場合は、入力が 1 つのパー  
ティションとして扱われます。  
注意 統計関数に対してパーティションという用語を使用した場合は、結果  
セットのローを PARTITION BY 句に基づいて分割することだけを意味します。  
ウィンドウ・パーティションは任意の式に基づいて定義できますィ  
ンドーティションの処理はグループ化の後に行われるので (GROUP BY  
句が指定されている場合 )SUMAVGVARIANCE などの集合関数の結果を  
パーティションの式で使用することができますたがってーティション  
を使用すると、GROUP BY 句や ORDER BY 句とはまた別に、グループ化と  
順序付けの操作を実行することができます。たとえば、ある数量の最大 SUM  
を求めるなど合関数に対して集合関数を計算するクエリを記述できます。  
GROUP BY 句がない場合でも、PARTITION BY 句を指定できます。  
ウィンドウ順序  
ウィンドウ順序とは、ウィンドウ・パーティション内の結果 ( ロー ) をウィン  
ドウ順序句に基づいて並べることです。ウィンドウ順序句には、1 つ以上の値  
の式をカンマ区切りで指定します。ウィンドウ順序句を指定しなかった場合  
は、入力ローが任意の順序で処理されることがあります。  
<WINDOW ORDER CLAUSE> ::= <ORDER SPECIFICATION>  
OLAP のウィンドウ順序句はウィンドエリの式に指定できる ORDER  
BY 句とは異なります細については「文法規則 31(100 ページ ) を参照し  
てください。  
OLAP 関数で使用する ORDER BY 句は、通常はウィンドウ・パーティション  
内のローをソートするための式を定義しますがPARTITION BY 句がなくても  
ORDER BY 句を使用することができますの場合はのソート指定によっ  
て、確実に意味のある ( かつ意図どおりの ) 順序で並べられた中間の結果セッ  
トに OLAP 関数を適用することができます。  
64  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
               
4 OLAP の使用  
OLAP のランク付け関数には順序の指定が必須でありンキング値の基準は、  
ランク付け関数の引数ではなく ORDER BY 句で指定します。OLAP の集合関  
数では、通常は ORDER BY 句の指定は必須ではありませんが、ウィンドウ・  
フレームを定義するときには必須とされています (「ウィンドウ・フレーム」  
(65 ページ ) を参照してください )。これは、各フレームの適切な集合値を計算  
する前に、パーティション内のローをソートしなければならないためです。  
この ORDER BY 句には、昇順および降順のソートを定義するためのセマン  
ティックと、NULL 値の取り扱いに関する規則を指定します。OLAP 関数は、  
デフォルトでは昇順 (最も小さい値が 1 番目にランク付けされる) を使用します。  
これは SELECT 文の最後に指定する ORDER BY 句のデフォルト動作と同じ  
ですが続的な計算を行う場合にはわかりにくいかもしれませんOLAP の  
計算では、降順 ( 最も大きい値が 1 番目にランク付けされる ) でのソートが必  
要になることがよくあります。この要件を満たすには、ORDER BY 句に明示  
的に DESC キーワードを指定する必要があります。  
注意 ランク付け関数は、ソートされた入力のみを扱うように定義されている  
ためウィンドウ順序句」の指定を必要としますクエリ指定」の「order  
by 句」と同様に、デフォルトのソート順序は昇順です。  
「ウィンドレーム単位RANGE を使用する場合も「ウィンドウ順序句」  
を指定する必要がありますRANGE の場合は「ウィンドウ順序句1 つの式  
のみを指定します「ウィンドウ・フレーム」(65 ページ ) を参照してください。  
ウィンドウ・フレーム  
ランク付け関数を除く OLAP 集合関数ではィンドレーム句を使用し  
てウィンドウ・フレームを定義することができますィンドウ・フレーム句  
には在のローを基準としてウィンドウの開始位置と終了位置を指定します。  
<WINDOW FRAME CLAUSE> ::=  
<WINDOW FRAME UNIT>  
<WINDOW FRAME EXTENT>  
これによりーティション全体の固定的な内容ではなく動するフレーム  
の内容に対して OLAP 関数を計算できます。定義にもよりますが、パーティ  
ションには開始ローと終了ローがありィンドレームは開始ポイント  
からパーティションの終了位置に向けてスライドします。  
パフォーマンス&チューニング・ガイド  
65  
Download from Www.Somanuals.com. All Manuals Search And Download.  
         
統計関数  
4-3: 分割された入力と、3 ロー分の移動ウィンドウ  
UNBOUNDED  
PRECEEDING と  
FOLLOWING  
ウィンドレームはーティションの先頭 (UNBOUNDED PRECEDING)、  
最後 (UNBOUNDED FOLLOWING)、または両方まで到達する無制限の集合グ  
ループによって定義されます。  
UNBOUNDED PRECEDING にはーティション内の現在のロー以前にあるすべ  
てのローが含まれておりROWS または RANGE で指定できますUNBOUNDED  
FOLLOWING にはーティション内の現在のロー以後にあるすべてのローが含  
まれており、ROWS または RANGE で指定できます。詳細についてはROWS」  
(67 ページ ) RANGE(70 ページ ) を参照してください。  
FOLLOWING の値では、現在のロー以降にあるローの範囲または数を指定し  
ます。ROWS を指定する場合、その値には、ローの数を表す正の数を指定し  
ます。RANGE を指定する場合、そのウィンドウには、現在のローに指定の数  
値を足した数よりも少ないローが含まれます。RANGE を指定する場合、その  
ウィンドウ値のデータ型は、ORDER BY 句のソート・キー式の型に対応して  
いる必要があります。指定できるソート・キー式は 1 つだけで、このソート・  
キー式のデータ型は「加算」を許可していなければなりません。  
PREDCEEDING の値では在のロー以前にあるローの範囲または数を指定し  
ます。ROWS を指定する場合、その値には、ローの数を表す正の数を指定しま  
す。RANGE を指定する場合、そのウィンドウには、現在のローから指定の数  
値を引いた数よりも少ないローが含まれます。RANGE を指定する場合、その  
ウィンドウ値のデータ型はORDER BY 句のソーー式の型に対応してい  
る必要があります定できるソーー式は 1 つだけでのソーー  
式のデータ型は「減算」を許可していなければなりません。1 つ目のバインド  
されたグループで CURRENT ROW または FOLLOWING の値を指定している場  
合は2 つ目のバインドされたグループにこの句を指定することはできません。  
66  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
4 OLAP の使用  
BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING の組  
み合わせを使用すると、グループ化したクエリとのジョインを構築しなくて  
ーティション全体についての集合を計算できますーティション全体  
についての集合は、レポート集合とも呼ばれます。  
CURRENT ROW の概念  
物理的な集合グループでは在のローに対する相対位置に基づき接する  
ローの数に応じて、ローを含めるか除外するかが判断されます。現在のロー  
エリの中間結果における次のローへの参照にすぎません在のローが  
前に進むとィンドウ内に含まれる新しいロットに基づいてウィンド  
ウが再評価されます在のローをウィンドウ内に含めるという要件はありま  
せん。  
ウィンドレーム句を指定しなかった場合のデフォルトのウィンド・フ  
レームは、ウィンドウ順序句を指定しているかどうかによって異なります。  
ウィンドウ指定にウィンドウ順序句が含まれている場合はィンドウの  
開始ポイントは UNBOUNDED PRECEDING了ポイントは CURRENT  
ROW になり積値の計算に適した可変サイズのウィンドウになります。  
ウィンドウ指定にウィンドウ順序句が含まれていない場合はィンドウの  
開始ポイントは UNBOUNDED PRECEDING了ポイントは UNBOUNDED  
FOLLOWING になり在のローに関係なく固定サイズのウィンドウになり  
ます。  
注意 ウィンドウ・フレーム句はランク付け関数とは併用できません。  
ローベース ( ロー指定 ) または値ベース ( 範囲指定 ) のウィンドウ・フレーム  
単位を指定してウィンドウを定義することもできます。  
<WINDOW FRAME UNIT> ::= ROWS | RANGE  
<WINDOW FRAME EXTENT> ::= <WINDOW FRAME START> | <WINDOW  
FRAME BETWEEN>  
ウィンドレーム句で BETWEEN を使用するときはィンドレー  
ムの開始ポイントと終了ポイントを明示的に指定します。  
ウィンドレーム句でこの 2 つの値のどちらか一方しか指定しなかった場  
合は、他方の値がデフォルトで CURRENT ROW になります。  
ROWS  
ウィンドウ・フレーム単位 ROWS では、現在のローの前後に指定の数のロー  
を含んでいるウィンドウを定義します ( 現在のローはィンドウの開始ポイ  
ントと終了ポイントを決定するための参照ポイントになります )。それぞれの  
分析計算はーティション内の現在のローに基づいて行われますーで表  
現されるウィンドウを使用して限定的な結果を生成するにはニークな順序  
付けの式を指定する必要があります。  
パフォーマンス&チューニング・ガイド  
67  
Download from Www.Somanuals.com. All Manuals Search And Download.  
             
統計関数  
どのウィンドウ・フレームでも、現在のローが参照ポイントになります。  
SQL/OLAP の構文にはーベースのウィンドウ・フレームを在のローの  
前または後にある任意の数のロー ( あるいは現在のローの前および後ろにある  
任意の数のロー ) として定義するためのメカニズムが用意されています。  
ウィンドウ・フレーム単位の代表的な例を次に示します。  
Rows Between Unbounded Preceding and Current Row - 各パーティションの  
先頭を開始ポイントとし在のローを終了ポイントとするウィンドウを  
指定します積和など積的な結果を計算するためのウィンドウを構  
築するときによく使用されます。  
Rows Between Unbounded Preceding and Unbounded Following - 現在のローに  
関係なく、パーティション全体についての固定ウィンドウを指定します。  
そのため、ウィンドウ集合関数の値は、パーティションのすべてのローで  
等しくなります。  
Rows Between 1 Preceding and 1 Following 3 つの隣接するロー ( 現在の  
ローとその前および後のロー) を含む固定サイズの移動ウィンドウを指定  
しますのウィンドウ・フレーム単位を使用してとえば 3 日間また  
3 か月間の移動平均を計算できます。詳細については、4-3 (66 ペー  
) を参照してください。  
ウィンドウ値にギャップがあると、ROWS を使用した場合に意味のない  
結果が生成されることがあるので注意してくださいセットが連続して  
いない場合はROWS の代わりに RANGE を使用することを検討してくだ  
さい。RANGE に基づくウィンドウ定義では、重複する値を含んだ隣接  
ローが自動的に処理され囲内にギャップがあるときに他のローが含ま  
れません。  
注意 移動ウィンドウでは、入力の最初のローの前、および入力の最後の  
ローの後ろにはNULL 値を含むローが存在することが想定されますつ  
まり、3 つのローから成る移動ウィンドウの場合は、入力の最後のローを  
現在のローとして計算するときに、直前のローと NULL 値が計算に含ま  
れます。  
Rows Between Current Row and Current Row - ウィンドウを現在のローのみ  
に制限します。  
Rows Between 1 Preceding and 1 Preceding - 現在のローの直前のローだけ  
を含む単一ローのウィンドウを指定しますの指定を在のローのみ  
に基づく値を計算する別のウィンドウ関数と組み合わせると、隣接する  
ロー同士のデルタ ( 値の差分 ) を簡単に計算することができます細につ  
いては「隣接ロー間のデルタの計算」(72 ページ ) を参照してください。  
68  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
         
4 OLAP の使用  
ローベースのウィンドウ・フレーム 4-4 の例では[1] [5] 1 つのパー  
ティションを表しています。それぞれのローは、OLAP のウィンドウ・フレー  
ムが前にスライドするにつれて現在のローになります。このウィンドウ・フ  
レームは Between Current Row And 2 Following として定義されているため、各  
フレームには大で 3 小で 1 つのローが含まれますレームがパー  
ティションの終わりに到達したときは在のローだけがフレームに含まれま  
掛けの部分は4-4 の各ステップでフレームから除外されているロー  
4-4: ローベースのウィンドウ・フレーム  
4-4 のウィンドウ・フレームは、次のような規則で機能しています。  
ロー [1] が現在のローであるときは、ロー [4] および [5] が除外される。  
ロー [2] が現在のローであるときは、ロー [5] および [1] が除外される。  
ロー [3] が現在のローであるときは、ロー [1] および [2] が除外される。  
ロー [4] が現在のローであるときは、ロー [1][2][3] が除外される。  
ロー [5] が現在のローであるときは[1][2][3][4] が除外される。  
次の図では、この規則を具体的な値セットに適用し、OLAP AVG 関数を使  
用して各ローの計算を行っていますライド計算により在のローの位置  
に応じて3 つまたはそれ以下のローを範囲として移動平均を算出しています。  
次のクエリは、移動ウィンドウの定義の例を示しています。  
SELECT dimension, measure,  
AVG(measure) OVER(partition BY dimension  
ORDER BY measure  
ROWS BETWEEN CURRENT ROW and 2 FOLLOWING)  
AS olap_avg  
FROM ...  
パフォーマンス&チューニング・ガイド  
69  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
統計関数  
平均値は次のようにして計算されています。  
ロー [1] = (10 + 50 + 100)/3  
ロー [2] = (50+ 100 + 120)/3  
ロー [3] = (100 + 120 + 500)/3  
ロー [4] = (120 + 500 + NULL)/3  
ロー [5] = (500 + NULL + NULL)/3  
結果セット内の以降のすべてのパーティション ( たとえば BC など ) につい  
ても、同様の計算が実行されます。  
現在のウィンドウにローが含まれていない場合、COUNT 以外のケースでは、  
結果は NULL になります。  
RANGE  
範囲ベースのウィンドウ・フレーム 前述のローベースのウィンドレームの  
例ではまざまなローベースのウィンドレーム定義の中から 1 つを紹  
介しましたSQL/OLAP 構文ではた別の種類のウィンドウ・フレームとし  
て、物理的なローのシーケンスではなく、値ベース ( または範囲ベース ) の  
ロー・セットに基づいて境界を定義する方法が用意されています。  
値ベースのウィンドウ・フレームは、ウィンドウ・パーティション内で、特定  
の範囲の数値を含んでいるローを定義します。OLAP 関数の ORDER BY 句で  
囲指定を適用する数値カラムを定義しますのカラムの現在のローの  
値が囲指定の基準となります囲指定ではロー指定と同じ構文を使用し  
ますが、構文の解釈の仕方は異なります。  
ウィンドウ・フレーム単位 RANGE では定の順序付けカラムについて現在  
のローを基準とする値範囲を指定し、その範囲内の値を持つローを検索して、  
ウィンドレームに含めますれは論理的なオフセットに基づくウィン  
ドウ・フレームと呼ばれ、“3 preceding” などの定数を指定することも、評価結  
果が数値定数となる任意の式を指定することもできます。RANGE に基づく  
ウィンドウを使用するときはORDER BY 句に数値式を 1 つだけ指定します。  
たとえばのように指定するとyear カラムに現在のローの前後数年に当た  
る値を含んでいるロー・セットをフレームとして定義できます。  
ORDER BY year ASC range BETWEEN CURRENT ROW and 1 PRECEDING  
このクエリ例の 1 PRECEDING という部分は在のローの year 値から 1 を減  
算することを意味しています。  
70  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
         
4 OLAP の使用  
このような範囲指定は内包的です在のローの year 値が 2000 である場合は、  
ウィンドウ・パーティション内でyear 値が 2000 および 1999 であるすべての  
ローがこのフレームに含まれることになりますーティション内での各ロー  
の物理的な位置は問われません。値ベースのフレームでは、ローを含めたり  
除外したりする規則が、ローベースのフレームの規則とは大きく異なります  
( ローベースのフレームの規則は、ローの物理的なシーケンスに完全に依存し  
ています )。  
OLAP AVG() 関数の例で考えてみますの部分的な結果セットはベー  
スのウィンドウ・フレームの概念を具体的に表しています述のようにこ  
のフレームには次のローが含まれます。  
現在のローと同じ year 値を持つロー  
現在のローから 1 を減算したのと同じ year 値を持つロー  
次のクエリは、範囲ベースのウィンドウ・フレーム定義の例を示しています。  
SELECT dimension, year, measure,  
AVG(measure) OVER(PARTITION BY dimension  
ORDER BY year ASC  
range BETWEEN CURRENT ROW and 1 PRECEDING)  
as olap_avg  
FROM ...  
平均値は次のようにして計算されています。  
ロー [1] = 1999 のため[2] [5] は除外たがって AVG = 10,000/1  
ロー [2] = 2001 のため[1][4][5] は除外たがって AVG = 6,000/2  
ロー [3] = 2001 のため[1][4][5] は除外たがって AVG = 6,000/2  
ロー [4] = 2002 のため、ロー [1] は除外。したがって AVG = 21,000/4  
ロー [5] = 2002 のため、ロー [1] は除外。したがって AVG = 21,000/4  
値ベースのフレームの昇順と降順 値ベースのウィンドウ・フレームを使用する  
OLAP 関数の ORDER BY 句では、範囲指定の対象となる数値カラムを特定す  
るだけではなく、ORDER BY 値のソート順序も宣言できます。次の指定によ  
り、直前の部分のソート順序 (ASC または DESC) を設定できます。  
RANGE BETWEEN CURRENT ROW AND n FOLLOWING  
パフォーマンス&チューニング・ガイド  
71  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
統計関数  
n FOLLOWING の指定には、次のような意味があります。  
パーティションがデフォルトの昇順 (ASC) でソートされている場合は、n  
は正の値として解釈されます。  
パーティションが降順 (DESC) でソートされている場合は、n は負の値と  
して解釈されます。  
たとえば、year カラムに 1999 2002 4 種類の値が含まれているとします。  
次のテーブルは、これらの値をデフォルトの昇順でソートした場合 ( 左側 ) と  
降順でソートした場合 ( 右側 ) を示しています。  
現在のローが 1999 レームが次のように指定されている場合のフレー  
ムには値 1999 のローと値 1998 のロー ( このテーブルには存在しません ) が含  
まれます。  
ORDER BY year ASC range BETWEEN CURRENT ROW and 1 FOLLOWING  
注意 ORDER BY 値のソート順序はベースのフレームに含まれるローの条  
件をテストするときに重要な要素です。フレームに含まれるか除外されるか  
は、数値だけでは決まりません。  
無制限ウィンドウの使用 次のクエリでは、すべての製品と全製品の総数から成  
る結果セットが生成されます。  
SELECT id, description, quantity,  
SUM(quantity) OVER () AS total  
FROM product;  
隣接ロー間のデルタの計算 現在のローと前のローをそれぞれ 1 つのウィンドウ  
として定義し2 つのウィンドウを使用すると接するロー間のデルタ  
( つまり差分 ) を直接的に計算することができます。次のクエリ例と結果を確  
認してください。  
SELECT emp_id, emp_lname, SUM(salary) OVER (ORDER BY  
birth_date rows between current row and current row)  
AS curr, SUM(salary) OVER (ORDER BY birth_date rows  
between 1 preceding and 1 preceding) AS prev, (curr  
-prev) as delta  
FROM employee WHERE state IN ('MA', 'AZ') AND dept_id  
=100  
ORDER BY emp_id, emp_lname;  
72  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
4 OLAP の使用  
このクエリの結果セットを次に示します。  
emp_id emp_lname  
curr  
prev  
delta  
------ ---------  
--------- ---------- ----------  
102  
105  
160  
243  
247  
249  
266  
278  
316  
445  
453  
479  
501  
529  
582  
604  
839  
1157  
1250  
Whitney  
Cobb  
45700.000 64500.000  
62000.000 68400.000  
57490.000 96300.000  
72995.000 59840.000  
48023.690 87900.000  
42998.000 48023.690  
59840.000 57490.000  
-18800.000  
-6400.000  
-38810.000  
13155.000  
-39876.310  
-5025.690  
2350.000  
-26000.000  
12500.000  
20010.000  
21502.000  
-2624.500  
41400.000  
-5105.000  
-2475.500  
22700.000  
-6000.000  
1675.000  
Breault  
Shishov  
Driscoll  
Guevara  
Gowda  
Melkisetian 48500.000 74500.000  
Pastor  
Lull  
Rabkin  
Siperstein  
Scott  
Sullivan  
Samuels  
Wang  
74500.000 62000.000  
87900.000 67890.000  
64500.000 42998.000  
39875.500 42500.000  
96300.000 54900.000  
67890.000 72995.000  
37400.000 39875.500  
68400.000 45700.000  
42500.000 48500.000  
39075.000 37400.000  
54900.000  
Marshall  
Soo  
Diaz  
ここではウィンドウ関数 SUM() を使用していますが、ウィンドウの指定方法  
によりの合計には現在のローまたは前のローの salary 値だけが含まれてい  
ます果セットの最初のローには前のローが存在しないため初の  
ローの prev 値は NULL になります。したがって、delta NULL になります。  
ここまでの例では、OVER() 句と一緒に SUM() 集合関数を使用しました。  
明示的なウィンドウ句とインラインのウィンドウ句  
SQL OLAP ではエリ内でウィンドウを指定する方法が 2 とおり用意されて  
います。  
明示的なウィンドウ句HAVING 句の後でウィンドウを定義しますOLAP  
関数を呼び出すときにはのようなウィンドウ句で定義したウィンドウ  
ィンドウの名前を指定して参照しますとえば次のようにします。  
SUM ( ...) OVER w2  
パフォーマンス&チューニング・ガイド  
73  
Download from Www.Somanuals.com. All Manuals Search And Download.  
統計関数  
インラインのウィンドウ指定。クエリ式の SELECT リスト内でウィンド  
ウを定義しますれによりHAVING 句の後のウィンドウ句でウィンド  
ウを定義しれをウィンドウ関数呼び出しから名前で参照するという方  
法に加えて数呼び出しと一緒にウィンドウを定義するという方法が可  
能になります。  
注意 インラインのウィンドウ指定を使用する場合は、ウィンドウの名前  
を指定できません。1 つの SELECT リスト内で複数のウィンドウ関数呼  
び出しが同じウィンドウを使用する場合にはィンドウ句で定義した名  
前付きウィンドウを参照するかンラインのウィンドウ定義を繰り返す  
必要があります。  
ウィンドウ関数の例 ウィンドウ関数の例を次に示しますのクエリではー  
タを部署別のパーティションに分け社年数が最も長い従業員を基点とした従  
業員の累積給与を計算して果セットを返しますの結果セットにはサ  
チューセッツ在住の従業員だけが含まれます。Sum_Salary カラムには、従業員  
の給与の累積和が含まれます。  
SELECT dept_id, emp_lname, start_date, salary,  
SUM(salary) OVER (PARTITION BY dept_id ORDER BY  
start_date rows between unbounded preceding and  
current row) AS sum_salary  
FROM employee  
WHERE state IN ('MA') AND dept_id IN (100, 200)  
ORDER BY dept_id;  
次の結果セットは部署別に分割されています。  
dept_id emp_lname  
------- --------- -----------  
start_date  
salary  
------  
sum_salary  
-----------  
45700.000  
100  
100  
100  
100  
100  
100  
100  
100  
100  
100  
100  
100  
100  
100  
100  
100  
100  
100  
100  
Whitney  
Cobb  
1984-08-28  
1985-01-01  
1985-06-17  
1986-06-07  
1986-07-01  
1986-10-14  
1986-11-30  
45700.000  
62000.000  
57490.000  
72995.000  
48023.690  
42998.000  
59840.000  
48500.000  
74500.000  
87900.000  
64500.000  
39875.500  
96300.000  
67890.000  
37400.000  
68400.000  
42500.000  
39075.000  
54900.000  
107700.000  
165190.000  
238185.000  
286208.690  
329206.690  
389046.690  
437546.690  
512046.690  
599946.690  
664446.690  
704322.190  
800622.190  
868512.190  
905912.190  
974312.190  
1016812.190  
1055887.190  
1110787.190  
Breault  
Shishov  
Driscoll  
Guevara  
Gowda  
Melkisetian 1986-12-06  
Pastor  
Lull  
Rabkin  
Siperstein 1987-07-23  
Scott  
Sullivan  
Samuels  
Wang  
Marshall  
Soo  
1987-04-26  
1987-06-15  
1987-06-15  
1987-08-04  
1988-02-03  
1988-03-23  
1988-09-29  
1989-04-20  
1990-07-31  
1990-08-19  
Diaz  
74  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
4 OLAP の使用  
200  
200  
200  
200  
200  
200  
200  
200  
200  
200  
200  
Dill  
1985-12-06  
1988-10-14  
1988-11-28  
1989-06-01  
1989-10-01  
1989-10-16  
1990-04-29  
1990-05-13  
1990-07-11  
1990-08-05  
1993-08-12  
54800.000  
54600.000  
46200.000  
34892.000  
87500.000  
55700.000  
64900.000  
33890.000  
37803.000  
37900.000  
47653.000  
54800.000  
109400.000  
155600.000  
190492.000  
277992.000  
333692.000  
398592.000  
432482.000  
470285.000  
508185.000  
555838.000  
Powell  
Poitras  
Singer  
Kelly  
Martel  
Sterling  
Chao  
Preston  
Goggin  
Pickett  
ランク付け関数  
ランク付け関数を使用すると、データ・セットの値をランク付けされた順序  
のリストにまとめ、今年度出荷された製品の中で売上合計が上位 10 位の製  
品名または “15 社以上から受注した営業部員の上位 5%” といった質問に答え  
るクエリを 1 つの SQL 文で作成することができます。ランク付け関数には  
RANK()DENSE_RANK()PERCENT_RANK()NTILE() などがあり、  
PARTITION BY 句と一緒に使用します。  
SQL/OLAP では、次の 4 つの関数がランク付け関数として分類されています。  
<RANK FUNCTION TYPE> ::=  
RANK | DENSE RANK | PERCENT RANK | NTILE  
ランク付け関数を使用するとエリで指定された順序に基づいて果セッ  
ト内の各ローのランク値を計算することができますとえば販売マネージャ  
業成績が最高または最低の営業部員売成績が最高または最低の販売  
地域るいは売上が最高または最低の製品を調べたい場合がありますの  
情報はランク付け関数によって入手できます。  
RANK() 関数  
RANK 関数は、ORDER BY 句で指定されたカラムについて、ローのパーティ  
ション内での現在のローのランクを表す数値を返しますーティション内の  
最初のローが 1 位となり25 のローを含むパーティションではーティショ  
ン内の最後のローが 25 位となります。RANK は構文変換として指定されてお  
り、実際に RANK を同等の構文に変換することも、変換を行った場合に返す  
はずの値と同等の結果を返すこともできます。  
次の例に出てくる ws1 は、w1 という名前のウィンドウを定義するウィンドウ  
指定を表しています。  
RANK() OVER ws  
パフォーマンス&チューニング・ガイド  
75  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
統計関数  
これは次の指定に相当します。  
( COUNT (*) OVER ( ws RANGE UNBOUNDED PRECEDING )  
- COUNT (*) OVER ( ws RANGE CURRENT ROW ) + 1 )  
この RANK 関数の変換では、論理的な集合 (RANGE) を使用しています。この  
結果、同位のロー ( 順序付けカラムに同じ値が含まれているロー ) が複数ある  
場合は、それらに同じランクが割り当てられます。パーティション内で異なる  
値を持つ次のグループには、同位のローのランクよりも 1 以上大きいランクが  
割り当てられます。たとえば、順序付けカラムに 1020202030 という値  
を含むローがある場合1 つ目のローのランクは 1 になり2 つ目のローのラン  
クは 2 になります3 つ目と 4 つ目のローのランクも 2 になりますが5 つ目の  
ローのランクは 5 になります。ランクが 3 または 4 のローは存在しません。こ  
のアルゴリズムは非連続型ランキング (sparse ranking) とも呼ばれます。  
Sybase IQ リファレンス・マニュアル』の「第 5 SQL 関数」RANK 関  
[ 統計 ]も参照してください。  
DENSE_RANK() 関数  
RANK 関数は同位のローがあるときに重複したランク値を割り当て非連続的  
なランキングを返しますがDENSE_RANK 関数は抜けのないランキングを返  
します位のローに対しては同じように等しいランク値が割り当てられます  
のローのランクは々のローの順位ではなく序付けカラムに等し  
い値を含んでいるローの集まりの順位を表しています。RANK の例と同様に、  
順序付けカラムに 1020202030 という値を含むローがある場合、1 つ  
目のローのランクは同じく 1 となり2 つ目のローおよび 3 つ目4 つ目のロー  
のランクも同じく 2 となります。しかし、最後のローのランクは 5 ではなく 3  
になります。  
DENSE_RANK も、構文変換を通じて計算されます。  
DENSE_RANK() OVER ws  
これは次の指定に相当します。  
COUNT ( DISTINCT ROW ( expr_1, . . ., expr_n ) )  
OVER ( ws RANGE UNBOUNDED PRECEDING )  
この例ではexpr_1 から expr_n の部分がィンドウ w1 のソート指定リスト  
に含まれている値の式のリストを表しています。  
Sybase IQ リファレンニュアル「第 5 SQL 関数DENSE_RANK  
関数 [ 統計 ]も参照してください。  
76  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
4 OLAP の使用  
PERCENT_RANK() 関数  
PERCENT_RANK 関数は、個別の順位ではなく、パーセンテージでのランク  
を計算して0 1 の小数値を返しますまりPERCENT_RANK が返すの  
はローの相対的なランクでありの数値は当するウィンドウ・パーティ  
ション内での現在のローの相対位置を表しますとえば序付けカラムの  
値がそれぞれ異なる 10 個のローがパーティションに含まれている場合、この  
パーティションの 3 つ目のローに対する PERCENT_RANK の値は 0.222 ... と  
なります。パーティションの 1 つ目のローに続く 2/9 (22.222...%) のローをカ  
バーしているためです。次の例に示すとおり、ローの PERCENT_RANK は、  
「ローの RANK - 1」を「パーティション内のローの数 - 1」で割ったものとし  
て定義されています (“ANT” REAL DOUBLE PRECISION などの概数値  
の型を表します )。  
PERCENT_RANK() OVER ws  
これは次の指定に相当します。  
CASE  
WHEN COUNT (*) OVER ( ws RANGE BETWEEN UNBOUNDED  
PRECEDING AND UNBOUNDED FOLLOWING ) = 1  
THEN CAST (0 AS ANT)  
ELSE  
( CAST ( RANK () OVER ( ws ) AS ANT ) -1 /  
( COUNT (*) OVER ( ws RANGE BETWEEN UNBOUNDED  
PRECEDING AND UNBOUNDED FOLLOWING ) - 1 )  
END  
Sybase IQ リファレンス・マニュアル』の「第 5 SQL 関数」の  
PERCENT_RANK 関数 [ 統計 ]も参照してください。  
ランク付けの例  
ランク付けの例 1 次の SQL クエリでは、マサチューセッツ州在住の男性従業  
員と女性従業員を取得し、給与を基準として降順にランク付けしています。  
SELECT emp_lname, salary, sex, RANK() OVER (ORDER BY  
salary DESC) AS Rank  
FROM employee WHERE state IN ('MA') AND dept_id =100  
ORDER BY salary DESC;  
このクエリの結果セットを次に示します。  
emp_lname  
---------  
Scott  
salary  
sex  
---  
M
M
F
F
M
F
M
rank  
----  
--------  
96300.000  
87900.000  
74500.000  
72995.000  
68400.000  
67890.000  
64500.000  
62000.000  
1
2
3
4
5
6
7
8
Lull  
Pastor  
Shishov  
Wang  
Sullivan  
Rabkin  
Cobb  
M
パフォーマンス&チューニング・ガイド  
77  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
統計関数  
Gowda  
Breault  
Diaz  
Melkisetian  
Driscoll  
Whitney  
Guevara  
Marshall  
Siperstein  
Soo  
59840.000  
57490.000  
48500.000  
48023.690  
45700.000  
42998.000  
42500.000  
39875.500  
39075.000  
37400.000  
M
M
F
M
F
M
M
F
M
M
9
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
Samuels  
ランク付けの例 2 ランク付けの例 1 のクエリを基にしてータを性別のパー  
ティションに分けることができますの例では別のパーティションに分  
けて、従業員の給与を降順にランク付けしています。  
SELECT emp_lname, salary, sex, RANK() OVER (PARTITION  
BY sex ORDER BY salary DESC) AS RANK  
FROM employee WHERE state IN ('MA', 'AZ') AND dept_id  
IN (100, 200)  
ORDER BY sex, salary DESC;  
このクエリの結果セットを次に示します。  
emp_lname  
---------  
Kelly  
salary  
---------  
87500.000  
74500.000  
72995.000  
67890.000  
48500.000  
47653.000  
46200.000  
45700.000  
39875.500  
96300.000  
87900.000  
68400.000  
64900.000  
64500.000  
62000.000  
59840.000  
57490.000  
55700.000  
54900.000  
54800.000  
54600.000  
48023.690  
42998.000  
42500.000  
39075.000  
37900.000  
37803.000  
sex  
---  
F
F
F
F
F
F
F
F
F
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
rank  
----  
1
Pastor  
Shishov  
Sullivan  
Melkisetian  
Pickett  
Poitras  
Whitney  
Siperstein  
Scott  
Lull  
Wang  
Sterling  
Rabkin  
Cobb  
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
Gowda  
Breault  
Martel  
Diaz  
9
10  
11  
12  
13  
14  
15  
16  
17  
18  
Dill  
Powell  
Driscoll  
Guevara  
Marshall  
Soo  
Goggin  
Preston  
78  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
4 OLAP の使用  
Samuels  
Singer  
Chao  
37400.000  
34892.000  
33890.000  
M
M
M
19  
20  
21  
ランク付けの例 3 この例ではリフォルニアおよびテキサスの女性従業員を  
取得し与を基準として降順にランク付けしています積和を降順で示す  
ために、PERCENT_RANK 関数を使用しています。  
SELECT emp_lname, salary, sex, CAST(PERCENT_RANK() OVER  
(ORDER BY salary DESC) AS numeric (4, 2)) AS RANK  
FROM employee WHERE state IN ('CA', 'TX') AND sex ='F'  
ORDER BY salary DESC;  
このクエリの結果セットを次に示します。  
emp_lname  
---------  
Savarino  
Smith  
Clark  
Garcia  
salary  
---------  
72300.000  
51411.000  
45000.000  
39800.000  
sex  
---  
F
F
F
percent  
----------  
0.00  
0.33  
0.66  
1.00  
F
ランク付けの例 4 PERCENT_RANK 関数を使用して、データ・セットにおけ  
る上位または下位のパーセンタイルを調べることができますの例のクエリ  
は、給与の額がデータ・セットの上位 5% に入る男性従業員を返します。  
SELECT * FROM (SELECT emp_lname, salary, sex,  
CAST(PERCENT_RANK() OVER (ORDER BY salary DESC) as numeric  
(4, 2)) AS percent  
FROM employee WHERE state IN ('MA') AND sex ='F' ) AS  
DT where percent > 0.5  
ORDER BY salary DESC;  
このクエリの結果セットを次に示します。  
emp_lname  
---------  
Whitney  
Barletta  
Higgins  
Siperstein  
Coe  
Espinoza  
Wetherby  
Braun  
Butterfield  
Bigelow  
Bertrand  
Lambert  
Kuo  
salary  
----------  
45700.000  
45450.000  
43700.000  
39875.500  
36500.000  
36490.000  
35745.000  
34300.000  
34011.000  
31200.000  
29800.000  
29384.000  
28200.000  
27500.000  
sex  
---  
F
F
F
F
F
F
F
F
F
F
F
F
F
F
percent  
---------  
0.51  
0.55  
0.59  
0.62  
0.66  
0.70  
0.74  
0.77  
0.81  
0.85  
0.88  
0.92  
0.96  
Romero  
1.00  
パフォーマンス&チューニング・ガイド  
79  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
統計関数  
ウィンドウ集合関数  
ウィンドウ集合関数を使用すると、複数のレベルの集合を 1 つのクエリで計算  
できます。たとえば、支出が平均より少ない四半期をすべて列挙することがで  
きます。集合関数 (単純な集合関数 AVGCOUNTMAXMINSUM を含む )  
を使用すると1 つの文の中でさまざまなレベルで計算した結果を 1 つのローに  
書き出すことができます。これにより、ジョインや相関サブクエリを使用しな  
くても、集合値をグループ内のディテール・ローと比較することができます。  
これらの関数を使用して集合値と集合値を比較することも可能ですと  
えば業部員が特定の年にある製品に対して平均以上の注文を出した顧客の  
一覧を作成したり売マネージャが従業員の給与をその部署の平均給与と比  
較したりすることが考えられます。  
SELECT 文の中で DISTINCT が指定されている場合は、ウィンドウ演算子の  
後に DISTINCT 操作が適用されます ( ウィンドウ演算子は、GROUP BY 句が  
処理された後SELECT リストの項目やクエリの ORDER BY 句が評価される  
前に計算されます )。  
ウィンドウ集合関数の例 1 この例のクエリは、平均販売数よりも多く売れた製  
品の一覧を年別に示す結果セットを返します。  
SELECT * FROM (SELECT year(order_date) AS Y, prod_id,  
SUM(quantity) AS Q, CAST(AVG(SUM(quantity)) OVER  
(PARTITION BY Y) AS numeric (8, 2)) AS Average  
FROM alt_sales_order S, alt_sales_order_items O  
WHERE S.id = O.id  
GROUP BY Y, O.prod_id ) AS derived_table  
WHERE Q > Average  
ORDER BY Y, prod_id;  
このクエリの結果セットを次に示します。  
Year  
----  
2000  
2000  
2000  
2000  
2001  
2001  
2001  
prod_id  
-------  
400  
Q
----  
2030  
2124  
1932  
2700  
1248  
1057  
1836  
Average  
-------  
1787.00  
1787.00  
1787.00  
1787.00  
1048.90  
1048.90  
1048.90  
600  
601  
700  
400  
401  
700  
2000 年の平均注文数は 1,787 であり、4 つの製品 (700601600400) が平均  
を上回っています。2001 年の平均注文数は 1,048 であり、3 つの製品が平均を  
上回っています。  
80  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
4 OLAP の使用  
ウィンドウ集合関数の例 2 この例のクエリは、給与の額がそれぞれの部署の平  
均給与よりも 1 標準偏差以上高い従業員を表す結果セットを返します準偏  
差とは、そのデータが平均からどのぐらい離れているかを示す尺度です。  
SELECT * FROM (SELECT emp_lname AS E_name, dept_id AS  
Dept, CAST(salary AS numeric(10,2) ) AS Sal,  
CAST(AVG(Sal) OVER(PARTITION BY dept_id) AS  
numeric(10, 2)) AS Average, CAST(STDDEV_POP(Sal)  
OVER(PARTITION BY dept_id) AS numeric(10,2)) AS  
STD_DEV  
FROM employee  
GROUP BY Dept, E_name, Sal) AS derived_table WHERE  
Sal> (Average+STD_DEV )  
ORDER BY Dept, Sal, E_name;  
このクエリの結果セットを次に示しますの部署にも与の額が平均を大  
きく上回っている従業員が 1 人以上いることがわかります。  
Employee  
--------  
Lull  
Sheffield  
Scott  
Sterling  
Savarino  
Kelly  
Dept  
----  
100  
100  
100  
200  
200  
200  
Salary  
--------  
87900.00  
87900.00  
96300.00  
64900.00  
72300.00  
87500.00  
Average  
--------  
58736.28  
58736.28  
58736.28  
48390.94  
48390.94  
48390.94  
59500.00  
43640.67  
43640.67  
43640.67  
33752.20  
Std_Dev  
--------  
16829.59  
16829.59  
16829.59  
13869.59  
13869.59  
13869.59  
30752.39  
11194.02  
11194.02  
11194.02  
9084.49  
Shea  
300 138948.00  
Blaikie  
Morris  
Evans  
400  
400  
400  
500  
54900.00  
61300.00  
68940.00  
55500.80  
Martinez  
従業員 Scott の給与は 96,300.00 ドルで、所属部署の平均給与は 58,736.28 ドル  
です。この部署の標準偏差は 16,829.00 なので、給与の額が 75,565.88 ドル  
(58736.28 + 16829.60 = 75565.88) 未満ならば、平均の 1 標準偏差以内の範囲に  
収まります。Scott の給与 96,300.00 ドルは、この数字を大きく超えています。  
統計集合関数  
標準偏差と分散  
ANSI SQL/OLAP 拡張機能には、数値データの統計的分析を行うための集合関  
数がこの他にも数多く用意されています。これには、分散、標準偏差、相関、  
直線回帰を計算するための関数も含まれます。  
SQL/OLAP の一般的な関数の中には、STDDEVSTDDEV_POP、  
STDDEV_SAMPVARIANCEVAR_POPVAR_SAMP のように、  
1 つの引数を取る関数があります。  
<SIMPLE WINDOW AGGREGATE FUNCTION TYPE> ::=  
<BASIC AGGREGATE FUNCTION TYPE>  
| STDDEV | STDDEV_POP | STDDEV_SAMP  
| VARIANCE | VARIANCE_POP | VARIANCE_SAMP  
パフォーマンス&チューニング・ガイド  
81  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
統計関数  
STDDEV_POP - グループまたはパーティションの各ロー (DISTINCT が  
指定されている場合は複が削除された後に残る各ロー ) に対して評価  
され値の式ついての母標準偏差を計算しますれは分散の  
平方根として定義されます。  
STDDEV_SAMP - グループまたはパーティションの各ロー (DISTINCT  
が指定されている場合は複が削除された後に残る各ロー ) に対して評  
価され値の式ついての母標準偏差を計算しますれは本分  
散の平方根として定義されます。  
VAR_POP - グループまたはパーティションの各ロー (DISTINCT が指定  
されている場合は複が削除された後に残る各ロー ) に対して評価され  
る「値の式」についての母分散を計算します。これは値の式」と「値  
の式の平均の差の 2 乗和をグループまたはパーティション内の残りの  
ローの数で割った値として定義されます。  
VAR_SAMP - グループまたはパーティションの各ロー (DISTINCT が指  
定されている場合は複が削除された後に残る各ロー ) に対して評価さ  
れる「値の式」の標本分散を計算します。これは値の式」の差の 2 乗  
和をループまたはパーティション内の残りのローの数より 1 少ない数  
で割った値として定義されます。  
これらの関数と STDDEV および VARIANCE 関数はエリの ORDER BY 句の  
指定に従ってローのパーティションについての値を計算できる集合関数です。  
MAX MIN などのその他の基本的な集合関数と同様に、これらの関数は入力  
データ内の NULL 値を無視します析される式のドメインに関係なく、  
分散と標準偏差の計算では必ず IEEE の倍精度浮動小数点数が使用されます分  
散関数または標準偏差関数への入力が空のデータ・セットである場合、これら  
の関数は結果として NULL を返しますVAR_SAMP 関数は 1 つのローに対して  
計算を行うと NULL を返しますが、VAR_POP は値 0 を返します。  
分散統計関数  
SQL/OLAP には、順序付きセットを取り扱う関数がいくつか定義されています。  
PERCENTILE_CONT PERCENTILE_DISC という 2 つの逆分散統計関数があ  
りますれらの統計関数はーセンタイル値を引数として受け取りWITHIN  
GROUP 句で指定されたデータのグループまたはデータ・セット全体に対して処  
理を行います。  
これらの関数はループごとに 1 つの値を返します PERCENTILE_DISC  
( 不連続 ) の場合果のデータ型はWITHIN GROUP 句に指定した ORDER  
BY の項目のデータ型と同じになります。PERCENTILE_CONT ( 連続 ) では、  
結果のデータ型はnumeric (WITHIN GROUP 句の ORDER BY 項目が numeric  
の場合 ) または double (ORDER BY 項目が整数または浮動小数点の場合 ) とな  
ります。  
82  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
               
4 OLAP の使用  
逆分散統計関数ではWITHIN GROUP (ORDER BY) 句を指定する必要があり  
ます。次に例を示します。  
PERCENTILE_CONT ( expression1 )  
WITHIN GROUP ( ORDER BY expression2 [ ASC | DESC ] )  
expression1 の値には、numeric データ型の定数を、0 以上 1 以下の範囲で指定し  
ます。引数が NULL であれば、“wrong argument for percentile” エラーが返りま  
す。引数の値が 0 よりも小さいか、1 よりも大きい場合は、“data value out of  
range” エラーが返ります。  
必須の ORDER BY には、パーセンタイル関数の実行の対象となる式と、各グ  
ループ内でのローのソート順を指定します。この ORDER BY 句は、WITHIN  
GROUP 句の内部でのみ使用するものでありSELECT 文の ORDER BY とは  
異なります。  
WITHIN GROUP 句は、クエリの結果を並べ替えて、関数が結果を計算するた  
めのデータ・セットを形成します。  
expression2 にはラム参照を含む 1 つの式でソートを指定しますのソー  
ト式に、複数の式やランク付け統計関数、set 関数、またはサブクエリを指定  
することはできません。  
ASC DESC のパラメータでは、昇順または降順の順序付けシーケンスを指  
定します。昇順がデフォルトです。  
逆分散統計関数は、サブクエリ、HAVING 句、ビュー、union で使用すること  
が可能です分散統計関数は析を行わない単純な集合関数が使用される  
ところであればこでも使用できます分散統計関数はータ・セット  
内の NULL 値を無視します。  
PERCENTILE_CONT 例  この例では、PERCENTILE_CONT 関数を使用して、  
各地域の自動車販売の 10 番目のパーセンタイル値を求めます。次のような  
データ・セットを使用します。  
sales  
-----  
900  
800  
800  
700  
540  
500  
450  
800  
600  
500  
400  
500  
400  
300  
200  
region  
dealer_name  
-----------  
Boston  
Worcester  
Providence  
Lowell  
---------  
Northeast  
Northeast  
Northeast  
Northeast  
Northeast  
Northeast  
Northeast  
Northwest  
Northwest  
Northwest  
Northwest  
South  
Natick  
New Haven  
Hartford  
SF  
Seattle  
Portland  
Dublin  
Houston  
Austin  
Dallas  
South  
South  
South  
Dover  
パフォーマンス&チューニング・ガイド  
83  
Download from Www.Somanuals.com. All Manuals Search And Download.  
統計関数  
次のクエリ例ではSELECT 文に PERCENTILE_CONT 関数を含めています。  
SELECT region, PERCENTILE_CONT(0.1)  
WITHIN GROUP ( ORDER BY sales DESC )  
FROM carSales GROUP BY region;  
この SELECT 文の結果には地域の自動車販売の 10 番目のパーセンタイル  
値が一覧表示されます。  
region  
percentile_cont  
---------  
Northeast  
Northwest  
South  
---------------  
840  
740  
470  
PERCENTILE_DISC 例 この例では、PERCENTILE_DISC 関数を使用して、各  
地域の自動車販売の 10 番目のパーセンタイル値を求めます。次のようなデー  
タ・セットを使用します。  
sales  
-----  
900  
800  
800  
700  
540  
500  
450  
800  
600  
500  
400  
500  
400  
300  
200  
region  
dealer_name  
-----------  
Boston  
Worcester  
Providence  
Lowell  
---------  
Northeast  
Northeast  
Northeast  
Northeast  
Northeast  
Northeast  
Northeast  
Northwest  
Northwest  
Northwest  
Northwest  
South  
Natick  
New Haven  
Hartford  
SF  
Seattle  
Portland  
Dublin  
Houston  
Austin  
Dallas  
South  
South  
South  
Dover  
次のクエリ例では、SELECT 文に PERCENTILE_DISC 関数を含めています。  
SELECT region, PERCENTILE_DISC(0.1) WITHIN GROUP  
(ORDER BY sales DESC )  
FROM carSales GROUP BY region;  
この SELECT 文の結果には地域の自動車販売の 10 番目のパーセンタイル  
値が一覧表示されます。  
region  
percentile_cont  
---------  
Northeast  
Northwest  
South  
---------------  
900  
800  
500  
84  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
4 OLAP の使用  
分散統計関数の詳細についてはSybase IQ リファレンニュアル「第  
5 SQL 関数PERCENTILE_CONT 関数 [ 統計 ]PERCENTILE_DISC  
関数 [ 統計 ]を参照してください。  
数値関数  
Sybase IQ でサポートされる OLAP 数値関数にはCEILING ( エイリアスは CEIL)、  
EXP ( エイリアスは EXPONENTIAL)FLOORLN ( エイリアスは LOG)SQRT、  
WIDTH_BUCKET があります。  
<numeric value function> :: =  
<natural logarithm>  
| <exponential function>  
| <power function>  
| <square root>  
| <floor function>  
| <ceiling function>  
| <width bucket function>  
サポートされる数値関数の構文を4-3 に示します。  
4-3: 数値関数の構文  
数値関数  
構文  
LENGTH ( string-expression )  
EXP ( numeric-expression )  
POWER ( numeric-expression1, numeric-expression2 )  
SQRT ( numeric-expression )  
FLOOR ( numeric-expression )  
CEILING ( numeric-expression )  
自然対数  
指数関数  
累乗関数  
平方根  
床関数  
天井関数  
WIDTH_BUCKET ( expression, min_value,  
等幅ヒストグラム作成関数  
max_value, num_buckets)  
それぞれの数値関数の機能は次のとおりです。  
LN: 引数値の自然対数を返します。引数値がゼロまたは負の場合は、エ  
ラー状態が発生します。LN LOG の同意語です。  
EXP: e ( 自然対数の底 ) の値を、引数値で指定された指数まで累乗した結  
果を返します。  
POWER: 1 つ目の引数値を、2 つ目の引数値で指定された指数まで累乗し  
た結果を返します方の引数の値が 0 の場合は1 が返されます1 つ目  
の引数が 0 で、2 つ目の引数が正の値である場合は、0 が返されます。1 つ  
目の引数が 0 2 つ目の引数が負の値である場合は外が発生します。  
1 つ目の引数が負の値で、2 つ目の引数が整数でない場合は、例外が発生  
します。  
SQRT: 引数値の平方根を返します。これは、POWER (expression, 0.5)” の  
構文変換です。  
パフォーマンス&チューニング・ガイド  
85  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
統計関数  
FLOOR: 引数の値以下で、正の無限大に最も近い整数値を返します。  
CEILING:引数の値以上での無限大に最も近い整数値を返しますCEIL  
CEILING の同意語です。  
WIDTH_BUCKET 関数  
WIDTH_BUCKET 関数はの数値関数よりも少し複雑ですの関数は 4 つ  
の引数を取ります。具体的には目的の値2 つの範囲境界、そしてこの範  
囲を何個の等しいサイズ ( または可能な限り等しいサイズ ) の「バケット」に  
分割するかを指定します。WIDTH_BUCKET 関数は、範囲の上限から下限ま  
での差のパーセンテージに基づき的の値が何番目のバケットに含まれるか  
を示す数値を返します。最初のバケットが、バケット番号 1 となります。  
目的の値が範囲境界の外にある場合のエラーを避けるために囲の下限より  
も小さい目的の値は、先頭の補助バケット ( バケット 0) に配置されます。同  
様に、範囲の上限よりも大きい目的の値は、末尾の補助バケット ( バケット  
N+1) に配置されます。  
たとえば、WIDTH_BUCKET (14, 5, 30, 5) 2 を返します。処理の内容は次の  
とおりです。  
(30-5)/5 = 5 なので定の範囲を 5 つのバケットに分割するとバケッ  
トの幅は 5 になります。  
1 つ目のバケットは 0.00 19.999 ...% の値、2 つ目のバケットは 20.00 ~  
39.999 ...% の値を表し、以降同様に続き、5 つ目のバケットは 80.00 ~  
100.00% の値を表します。  
目的の値を含むバケットは(5*(14-5)/(30-5)) + 1 という計算によって算出  
されますれはケットの総数に定範囲に対す下限から目的  
の値までのオフセット」の比率を掛け、それに 1 を足すという計算です。  
実際の数式は (5*9/25) + 1 となり、これを計算すると 2.8 になります。こ  
れはバケット番号 2 (2.0 2.999 ...) の範囲に含まれる値であるため、バ  
ケット番号 2 が返されます。  
WIDTH_BUCKET 例  
次の例ではンプーブル内のマサチューセッツ州の顧客の credit_limit  
カラムに関する 10 バケットのヒストグラムを作成し、各顧客のバケット番号  
(“Credit Group”) を返します。最大値を超える限度額が設定されている顧客は、  
オーバフロー・バケット 11 に割り当てられます。  
86  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
4 OLAP の使用  
注意 これは説明用の例であり、asiqdemo データベースから生成したものでは  
ありません。  
SELECT customer_id, cust_last_name, credit_limit,  
WIDTH_BUCKET(credit_limit, 100, 5000, 10) "Credit  
Group"  
FROM customers WHERE territory = 'MA'  
ORDER BY "Credit Group";  
CUSTOMER_ID CUST_LAST_NAME CREDIT_LIMIT Credit Group  
----------- -------------- ------------ ------------  
825  
826  
853  
827  
843  
844  
835  
840  
842  
841  
837  
836  
848  
849  
828  
829  
852  
851  
850  
830  
831  
832  
838  
839  
833  
834  
845  
846  
847  
Dreyfuss  
Barkin  
Palin  
Siegel  
Oates  
Julius  
Eastwood  
Elliott  
Stern  
500  
500  
400  
500  
700  
1
1
1
1
2
2
3
3
3
3
3
3
4
4
5
5
5
5
5
7
7
7
7
7
7
700  
1200  
1400  
1400  
1400  
1200  
1200  
1800  
1800  
2300  
2300  
2300  
2300  
2300  
3500  
3500  
3500  
3500  
3500  
3500  
3500  
5000  
5000  
5000  
Boyer  
Stanton  
Berenger  
Olmos  
Kaurusmdki  
Minnelli  
Hunter  
Tanner  
Brown  
Finney  
Dutt  
Bel Geddes  
Spacek  
Nicholson  
Johnson  
Moranis  
Idle  
Fawcett  
Brando  
Streep  
7
11  
11  
11  
範囲境界の指定が逆になっている場合は、各バケットの間隔が逆になります。  
たとえば、WIDTH_BUCKET (credit_limit, 5000, 0, 5) という関数呼び出しを考  
えてみます。この例では、バケット番号 1 (4000 5000)、バケット番号 2  
(3000 4000) となり降同様に続きケット番号 5 (0 1000) とな  
ります。オーバフロー・バケットは番号 0 (5000 + )、アンダフロー・バ  
ケットは番号 6 (- ∞ ~ 0) となります。  
パフォーマンス&チューニング・ガイド  
87  
Download from Www.Somanuals.com. All Manuals Search And Download.  
OLAP の規則と制限  
参照  
Sybase IQ リファレンニュアル「第 5 SQL 関数BIT_LENGTH  
関数 [ 文字列 ]EXP 関数 [ 数値 ]FLOOR 関数 [ 数値 ]POWER 関数  
[ 数値 ]SQRT 関数 [ 数値 ]WIDTH_BUCKET 関数 [ 数値 ]を参照して  
ください。  
OLAP の規則と制限  
OLAP 関数を使用できる  
場合  
SQL クエリ内では、次の条件下で OLAP 関数を使用できます。  
SELECT リストの中  
式の中  
スカラ関数の引数として  
最後の ORDER BY 句の中 ( クエリ内のどこかで定義されている OLAP 関  
数のエイリアスまたは位置参照を使用 )  
OLAP 関数を使用でき  
ない場合  
OLAP 関数は、次の条件下では使用できません。  
サブクエリの中  
WHERE 句の検索条件の中  
SUM ( 集合 ) 関数の引数としてたとえば次の式は無効です。  
SUM(RANK() OVER(ORDER BY dollars))  
ウィンドウ集合をの集合に対する引数として使用することはできませ  
( ただし側の集合がビューまたは抽出テーブル内で生成されたもの  
である場合は例外です )ンク付け関数についても同じことが言えます。  
ウィンドウ集合関数と RANK 関数はHAVING 句の中では使用できません。  
ウィンドウ集合関数に DISTINCT を指定することはできません。  
ウィンドウ関数を他のウィンドウ関数の内部にネストすることはできま  
せん。  
逆分散統計関数は、OVER 句ではサポートされていません。  
ウィンドウ定義句では外部参照を使用できません。  
OLAP 関数内での相関参照は認められていますが関があるカラムのエ  
イリアスは認められていません。  
OLAP 関数から参照するカラムはOLAP 関数と GROUP BY 句が含まれ  
ている同じクエロック内のグループ化カラムまたは集合関数でなければ  
なりませんOLAP の処理はループ化操作と集合操作の後後の ORDER  
BY 句が適用される前に行われます。そのため、中間の結果セットから OLAP  
式を導出することも可能です。クエリ・ブロック内に GROUP BY 句がない場  
合、OLAP 関数は select リスト内の他のカラムを参照することができます。  
88  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
4 OLAP の使用  
Sybase IQ の制限事項  
Sybase IQ SQL OLAP 関数を使用するときの制限事項を次に示します。  
ウィンドレーム定義の中でユーザ定義関数を使用することはできま  
せん。  
ウィンドウ・フレーム定義で使用する定数は符号なし数値でなければな  
63-1  
らず、最大値 BIG INT 2  
を超えてはなりません。  
ウィンドウ集合関数と RANK 関数はDELETE および UPDATE 文では使  
用できません。  
ウィンドウ集合関数と RANK 関数はブクエリ内では使用できません。  
CUME_DIST は、現時点ではサポートされていません。  
グループ化セットは、現時点ではサポートされていません。  
相関関数と直線回帰関数は、現時点ではサポートされていません。  
その他の OLAP の例  
この項では、OLAP 関数を使用したその他の例を紹介します。  
ウィンドウの開始ポイントと終了ポイントは間の結果ローが処理されると  
きに変化する可能性がありますとえば積和を計算する場合にはィ  
ンドウの開始ポイントは各パーティションの最初のローに固定されますが終  
了ポイントは現在のローを含めるためにパーティション内のローを移動して  
いきます。詳細については、4-3 (66 ページ ) を参照してください。  
またィンドウの開始ポイントと終了ポイントの両方が可変だがーティ  
ション全体のローの数は一定であるという例も考えられますのようなウィ  
ンドウを使用すると移動平均を計算するクエリを作成できとえば 3 日間の  
株価の移動平均を返す SQL クエリを作成できます。  
例:クエリ内でのウィンドウ関数  
次のクエリは、2005 年の 7 月と 8 月に出荷された全製品と、出荷日別の累積  
出荷数を一覧にして示します。  
SELECT p.id, p.description, s.quantity, s.ship_date,  
SUM(s.quantity) OVER (PARTITION BY prod_id ORDER BY  
s.ship_date rows between unbounded preceding and  
current row)  
FROM alt_sales_order_items s JOIN product p on (s.prod_id =  
p.id) WHERE s.ship_date BETWEEN '2001-05-01' and  
'2001-08-31' AND s.quantity > 40  
ORDER BY p.id;  
パフォーマンス&チューニング・ガイド  
89  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
その他の OLAP の例  
このクエリの結果セットを次に示します。  
ID  
description  
quantity  
ship_date  
sum quantity  
--- -----------  
302 Crew Neck  
400 Cotton Cap  
400 Cotton Cap  
401 Wool cap  
--------  
---------  
------------  
60 2001-07-02  
60 2001-05-26  
48 2001-07-05  
48 2001-06-02  
60 2001-06-30  
48 2001-07-09  
48 2001-06-21  
60 2001-05-03  
48 2001-05-18  
48 2001-05-25  
60 2001-07-07  
60 2001-07-19  
72 2001-05-18  
48 2001-05-31  
60  
60  
108  
48  
108  
156  
48  
401 Wool cap  
401 Wool cap  
500 Cloth Visor  
501 Plastic Visor  
501 Plastic Visor  
501 Plastic Visor  
501 Plastic Visor  
601 Zipped Sweatshirt  
700 Cotton Shorts  
700 Cotton Shorts  
60  
108  
156  
216  
60  
72  
120  
この例では、2 つのテーブルのジョインとクエリの WHERE 句を適用した後  
に、SUM ウィンドウ関数の計算が行われます。このクエリではインラインの  
ウィンドウ指定を使用しておりのウィンドウ指定によってョインから  
1
prod_id 属性の値に基づいて入力ローがパーティション ( グループ ) に分  
けられます。  
2
3
各パーティション内で、ローが ship_date 属性に基づいてソートされます。  
パーティション内の各ローの quantity 属性についてSUM() 関数が評価さ  
れますの際にート後の各パーティションの最初のローから現在の  
ローまでを含む移動ウィンドウ ( 現在のローも含む ) が使用されます。詳  
細については、4-3 (66 ページ ) を参照してください。  
このクエリを別の方法で記述するには数の外でウィンドウを定義しの  
ウィンドウを関数呼び出しから参照しますの方法はじウィンドウに基  
づくウィンドウ関数を複数指定する場合に便利ですのウィンドウ関数を使  
用するクエリを立したウィンドウ句を使用する方法で記述すると次のよう  
になります (cumulative というウィンドウを宣言しています )。  
SELECT p.id, p.description, s.quantity, s.ship_date,  
SUM(s.quantity) OVER(cumulative  
ROWS BETWEEN UNBOUNDED PRECEDING  
and CURRENT ROW  
) AS cumulative qty  
FROM sales_order_items s JOIN product p On (s.prod_id =  
p.id)  
WHERE s.ship_date BETWEEN ‘2005-07-01’ and ‘2005-08-31’  
Window cumulative as (PARTITION BY s.prod_id ORDER BY  
s.ship date)  
ORDER BY p.id  
90  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
4 OLAP の使用  
このクエリ指定ではィンドウ句が ORDER BY 句の前にあることに注意し  
てください。ウィンドウ句を使用するときには、次の制限が適用されます。  
インラインのウィンドウ指定に PARTITION BY 句を含めることはできま  
せん。  
ことはできません。たとえば「文法規則 32(100 ページ ) に次のように  
記述されています。  
<WINDOW FRAME CLAUSE> ::=  
<WINDOW FRAME UNIT>  
<WINDOW FRAME EXTENT>  
インラインのウィンドウ指定にもウィンドウ句のウィンドウ指定にも  
ウィンドウ順序句を含めることができますが方に含めることはできま  
せん。たとえば「文法規則 31(100 ページ ) に次のように記述されてい  
ます。  
<WINDOW ORDER CLAUSE> ::= <ORDER SPECIFICATION>  
例:複数の関数で使用されるウィンドウ  
1 つの名前付きウィンドウを定義しておきのウィンドウに基づいて複数の  
関数を計算することもできます。具体的な例を次に示します。  
SELECT p.id, p.description, s.quantity, s.ship_date,  
SUM(s.quantity) OVER ws1, MIN(s.quantity) OVER ws1  
FROM sales_order_items s JOIN product p ON (s.prod_id =  
p.id) WHERE s.ship_date BETWEEN '1994-05-01' AND  
'1994-08-31' AND s.quantity > 40 window ws1 AS  
(PARTITION BY prod_id ORDER BY ship_date rows  
between unbounded preceding and current row)  
ORDER BY p.id;  
このクエリの結果セットを次に示します。  
ID  
description  
quantity  
ship_date  
sum  
min  
--- -----------  
302 Crew Neck  
400 Cotton Cap  
400 Cotton Cap  
401 Wool cap  
401 Wool cap  
401 Wool cap  
500 Cloth Visor  
501 Plastic Visor  
501 Plastic Visor  
501 Plastic Visor  
501 Plastic Visor  
601 Zipped Sweatshirt  
700 Cotton Shorts  
700 Cotton Shorts  
--------  
----------- ---  
---  
60  
60  
48  
48  
48  
48  
48  
60  
48  
48  
48  
60  
72  
48  
60  
60  
48  
48  
60  
48  
48  
60  
48  
48  
60  
1994-07-02  
1994-05-26  
60  
60  
1994-07-05 108  
1994-06-02 48  
1994-06-30 108  
1994-07-09 156  
1994-06-21  
1994-05-03  
48  
60  
1994-05-18 108  
1994-05-25 156  
1994-07-07 216  
60  
72  
48  
1994-07-19  
1994-05-18  
60  
72  
1994-05-31 120  
パフォーマンス&チューニング・ガイド  
91  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
その他の OLAP の例  
例:累積和の計算  
このクエリでは、ORDER BY start_date の順序に従って、部署別の給与の累  
積和を計算します。  
SELECT dept_id, start_date, name, salary,  
SUM(salary) OVER (PARTITION BY dept_id ORDER BY  
start_date ROWS BETWEEN UNBOUNDED PRECEDING AND  
CURRENT ROW)  
FROM emp1  
ORDER BY dept_id, start_date;  
このクエリの結果セットを次に示します。  
dept_id start_date  
------- ----------  
name  
----  
Anna  
Mike  
Scott  
Antonia  
Adam  
Amy  
salary  
------  
18000  
28000  
29000  
22000  
25000  
18000  
18000  
29000  
22000  
28000  
55000  
38000  
48000  
sum(salary)  
-----------  
18000  
100  
100  
100  
100  
100  
100  
200  
200  
200  
200  
300  
300  
300  
1996-01-01  
1997-01-01  
1998-01-01  
1998-02-01  
1998-03-12  
1998-12-01  
1998-01-01  
1998-01-20  
1998-02-01  
1999-01-10  
1998-03-12  
1998-12-01  
1999-01-10  
46000  
75000  
97000  
122000  
140000  
18000  
47000  
69000  
97000  
55000  
93000  
141000  
Jeff  
Tim  
Jim  
Tom  
Sandy  
Lisa  
Peter  
例:移動平均の計算  
このクエリでは続する 3 か月間の売上の移動平均を計算します使用する  
ウィンドウ・フレームは 3 つのローから成り、先行する 2 つのローと現在の  
ローが含まれますのウィンドウはーティションの最初から最後までス  
ライドしていきます。  
SELECT prod_id, month_num, sales, AVG(sales) OVER  
(PARTITION BY prod_id ORDER BY month_num ROWS  
BETWEEN 2 PRECEDING AND CURRENT ROW)  
FROM sale WHERE rep_id = 1  
ORDER BY prod_id, month_num;  
このクエリの結果セットを次に示します。  
prod_id  
-------  
month_num  
---------  
sales  
------  
100  
120  
100  
avg(sales)  
----------  
100.00  
10  
10  
10  
10  
10  
1
2
3
4
5
110.00  
106.66  
116.66  
116.66  
130  
120  
92  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
4 OLAP の使用  
10  
20  
20  
20  
20  
20  
20  
30  
30  
30  
30  
6
1
2
3
4
5
6
1
2
3
4
110  
20  
30  
25  
30  
31  
20  
10  
11  
12  
1
120.00  
20.00  
25.00  
25.00  
28.33  
28.66  
27.00  
10.00  
10.50  
11.00  
8.00  
例:ORDER BY の結果  
この例ではエリの最上位の ORDER BY 句がウィンドウ関数の最終的な結  
果に適用されます。ウィンドウ句に指定されている ORDER BY は、ウィンド  
ウ関数の入力データに適用されます。  
SELECT prod_id, month_num, sales, AVG(sales) OVER  
(PARTITION BY prod_id ORDER BY month_num ROWS  
BETWEEN 2 PRECEDING AND CURRENT ROW)  
FROM sale WHERE rep_id = 1  
ORDER BY prod_id desc, month_num;  
このクエリの結果セットを次に示します。  
prod_id month_num  
------- ---------  
sales  
-----  
10  
avg(sales)  
----------  
10.00  
30  
30  
30  
30  
20  
20  
20  
20  
20  
20  
10  
10  
10  
10  
10  
10  
1
2
3
4
1
2
3
4
5
6
1
2
3
4
5
6
11  
12  
1
20  
30  
25  
30  
31  
10.50  
11.00  
8.00  
20.00  
25.00  
25.00  
28.33  
28.66  
20  
27.00  
100  
120  
100  
130  
120  
110  
100.00  
110.00  
106.66  
116.66  
116.66  
120.00  
パフォーマンス&チューニング・ガイド  
93  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
その他の OLAP の例  
例:1 つのクエリ内で複数の集合関数を使用  
この例では、1 つのクエリ内で、異なるウィンドウに対して 2 種類の集合関数  
を実行しています。  
SELECT prod_id, month_num, sales, AVG(sales) OVER  
(WS1 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS  
CAvg, SUM(sales) OVER(WS1 ROWS BETWEEN UNBOUNDED  
PRECEDING AND CURRENT ROW) AS CSum  
FROM sale WHERE rep_id = 1 WINDOW WS1 AS (PARTITION BY  
prod_id  
ORDER BY month_num)  
ORDER BY prod_id, month_num;  
このクエリの結果セットを次に示します。  
prod_id month_num  
------- ---------  
sales  
-----  
100  
120  
100  
130  
120  
110  
20  
CAvg  
----  
CSum  
----  
100  
220  
320  
450  
570  
680  
20  
50  
75  
105  
136  
156  
10  
10  
10  
10  
10  
10  
10  
20  
20  
20  
20  
20  
20  
30  
30  
30  
30  
1
2
3
4
5
6
1
2
3
4
5
6
1
2
3
4
110.00  
106.66  
116.66  
116.66  
120.00  
115.00  
25.00  
25.00  
28.33  
28.66  
27.00  
25.50  
10.50  
11.00  
8.00  
30  
25  
30  
31  
20  
10  
11  
12  
21  
33  
34  
1
6.50  
例:ウィンドウ・フレーム指定の ROWS RANGE の比較  
このクエリでは、ROWS RANGE を比較しています。ORDER BY 句の指定  
により、このデータには重複するローが含まれています。  
SELECT prod_id, month_num, sales, SUM(sales) OVER  
(ws1 RANGE BETWEEN 2 PRECEDING AND CURRENT ROW) AS  
Range_sum, SUM(sales) OVER  
(ws1 ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS  
Row_sum  
FROM sale window ws1 AS (PARTITION BY prod_id ORDER BY  
month_num)  
ORDER BY prod_id, month_num;  
このクエリの結果セットを次に示します。  
prod_id month_num  
------- ---------  
sales  
-----  
100  
Range_sum  
---------- -------  
250 100  
Row_sum  
10  
1
94  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
4 OLAP の使用  
10  
10  
10  
10  
10  
10  
10  
20  
20  
20  
20  
20  
20  
30  
30  
30  
30  
30  
1
2
3
4
5
5
6
1
2
3
4
5
6
1
2
3
4
4
150  
120  
100  
130  
120  
31  
110  
20  
30  
25  
30  
31  
20  
250  
370  
470  
350  
381  
381  
391  
20  
50  
75  
85  
86  
81  
10  
21  
33  
25  
25  
250  
370  
370  
350  
350  
281  
261  
20  
50  
75  
85  
86  
81  
10  
21  
33  
24  
14  
10  
11  
12  
1
1
例:現在のローを除外するウィンドウ・フレーム  
この例では、現在のローを除外するウィンドウ・フレームを定義しています。  
このクエリは、現在のローを除く 4 つのローの合計を計算します。  
SELECT prod_id, month_num, sales, sum(sales) OVER  
(PARTITION BY prod_id ORDER BY month_num RANGE  
BETWEEN 6 PRECEDING AND 2 PRECEDING)  
FROM sale  
ORDER BY prod_id, month_num;  
このクエリの結果セットを次に示します。  
prod_id  
-------  
10  
10  
10  
10  
10  
10  
10  
10  
20  
20  
20  
20  
20  
20  
30  
month_num  
---------  
sales  
-----  
100  
150  
120  
100  
130  
120  
31  
110  
20  
30  
25  
30  
sum(sales)  
----------  
(NULL)  
(NULL)  
(NULL)  
250  
1
1
2
3
4
5
5
6
1
2
3
4
5
6
1
2
3
4
4
370  
470  
470  
600  
(NULL)  
(NULL)  
20  
50  
75  
105  
(NULL)  
(NULL)  
10  
31  
20  
10  
11  
12  
1
1
30  
30  
30  
30  
21  
21  
パフォーマンス&チューニング・ガイド  
95  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
その他の OLAP の例  
例:ROW のデフォルトのウィンドウ・フレーム  
このクエリはROW のデフォルトのウィンドレームの例を示しています。  
SELECT prod_id, month_num, sales, SUM(sales) OVER  
(PARTITION BY prod_id ORDER BY month_num RANGE  
BETWEEN 1 FOLLOWING AND 3 FOLLOWING)  
FROM sale  
ORDER BY prod_id, month_num;  
このクエリの結果セットを次に示します。  
prod_id  
-------  
10  
10  
10  
10  
10  
10  
10  
10  
20  
20  
20  
20  
20  
20  
30  
month_num  
---------  
sales  
-----  
100  
150  
120  
100  
130  
120  
31  
110  
20  
30  
25  
30  
sum(sales)  
----------  
350  
1
1
2
3
4
5
5
6
1
2
3
4
5
6
1
2
3
4
4
350  
381  
391  
261  
110  
110  
(NULL)  
85  
86  
81  
51  
20  
31  
20  
10  
11  
12  
1
1
(NULL)  
25  
14  
2
NULL)  
(NULL)  
30  
30  
30  
30  
例:UNBOUNDED PRECEDING UNBOUNDED FOLLOWING  
この例ではーティション内のすべてのローがウィンドレームに含ま  
れますのクエリはーティション全体 ( 各月に重複ローは含まれていま  
せん ) における売上の最大値を計算します。  
SELECT prod_id, month_num, sales, SUM(sales) OVER  
(PARTITION BY prod_id ORDER BY month_num ROWS  
BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)  
FROM sale WHERE rep_id = 1  
ORDER BY prod_id, month_num;  
このクエリの結果セットを次に示します。  
prod_id  
-------  
10  
10  
10  
month_num  
---------  
sales  
-----  
100  
120  
100  
max(sales)  
----------  
680  
1
2
3
4
680  
680  
680  
10  
130  
96  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
4 OLAP の使用  
10  
10  
20  
20  
20  
20  
20  
20  
30  
30  
30  
30  
5
6
1
2
3
4
5
6
1
2
3
4
120  
110  
20  
30  
25  
30  
31  
20  
10  
11  
12  
1
680  
680  
156  
156  
156  
156  
156  
156  
34  
34  
34  
34  
このクエリは、次のクエリと同じ意味になります。  
SELECT prod_id, month_num, sales, SUM(sales) OVER  
(PARTITION BY prod_id )  
FROM sale WHERE rep_id = 1  
ORDER BY prod_id, month_num;  
例:RANGE のデフォルトのウィンドウ・フレーム  
このクエリは、RANGE のデフォルトのウィンドウ・フレームの例を示してい  
ます。  
SELECT prod_id, month_num, sales, SUM(sales) OVER  
(PARTITION BY prod_id ORDER BY month_num)  
FROM sale  
ORDER BY prod_id, month_num;  
このクエリの結果セットを次に示します。  
prod_id  
-------  
10  
10  
10  
10  
10  
10  
10  
10  
20  
20  
20  
20  
20  
20  
30  
month_num  
---------  
sales  
-----  
100  
150  
120  
100  
130  
120  
31  
110  
20  
30  
25  
30  
max(sales)  
----------  
250  
250  
370  
470  
600  
751  
751  
861  
20  
1
1
2
3
4
5
5
6
1
2
3
4
5
6
1
2
3
50  
75  
105  
136  
156  
10  
31  
20  
10  
11  
30  
30  
21  
33  
12  
パフォーマンス&チューニング・ガイド  
97  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
OLAP 関数の BNF 文法  
30  
30  
4
4
1
1
35  
35  
このクエリは、次のクエリと同じ意味になります。  
SELECT prod_id, month_num, sales, SUM(sales) OVER  
(PARTITION BY prod_id ORDER BY month_num RANGE  
BETWEEEN UNBOUNDED PRECEDING AND CURRENT ROW)  
FROM sale  
ORDER BY prod_id, month_num;  
OLAP 関数の BNF 文法  
次の BNF (Backus-Naur Form ) 文法は、さまざまな ANSI SQL 統計関数に関す  
る具体的な構文サポートの概要を示していますこに記載されている関数の  
多くは Sybase IQ で実装されています。  
<SELECT LIST EXPRESSION> ::=  
<EXPRESSION>  
文法規則 1  
| <GROUP BY EXPRESSION>  
| <AGGREGATE FUNCTION>  
| <GROUPING FUNCTION>  
| <TABLE COLUMN>  
| <WINDOWED TABLE FUNCTION>  
<QUERY SPECIFICATION> ::=  
<FROM CLAUSE>  
文法規則 2  
[ <WHERE CLAUSE> ]  
[ <GROUP BY CLAUSE> ]  
[ <HAVING CLAUSE> ]  
[ <WINDOW CLAUSE> ]  
[ <ORDER BY CLAUSE> ]  
<ORDER BY CLAUSE> ::= <ORDER SPECIFICATION>  
文法規則 3  
<GROUPING FUNCTION> ::=  
文法規則 4  
GROUPING <LEFT PAREN> <GROUP BY EXPRESSION>  
<RIGHT PAREN>  
<WINDOWED TABLE FUNCTION> ::=  
<WINDOWED TABLE FUNCTION TYPE> OVER <WINDOW NAME OR  
SPECIFICATION>  
文法規則 5  
<WINDOWED TABLE FUNCTION TYPE> ::=  
<RANK FUNCTION TYPE> <LEFT PAREN> <RIGHT PAREN>  
| ROW_NUMBER <LEFT PAREN> <RIGHT PAREN>  
| <WINDOW AGGREGATE FUNCTION>  
文法規則 6  
<RANK FUNCTION TYPE> ::=  
文法規則 7  
RANK | DENSE RANK | PERCENT RANK | CUME_DIST  
98  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
4 OLAP の使用  
<WINDOW AGGREGATE FUNCTION> ::=  
<SIMPLE WINDOW AGGREGATE FUNCTION>  
| <STATISTICAL AGGREGATE FUNCTION>  
文法規則 8  
<AGGREGATE FUNCTION> ::=  
文法規則 9  
<DISTINCT AGGREGATE FUNCTION>  
| <SIMPLE AGGREGATE FUNCTION>  
| <STATISTICAL AGGREGATE FUNCTION>  
<DISTINCT AGGREGATE FUNCTION> ::=  
文法規則 10  
<BASIC AGGREGATE FUNCTION TYPE> <LEFT PAREN>  
<DISTINCT> <EXPRESSION> <RIGHT PAREN>  
| LIST <LEFT PAREN> DISTINCT <EXPRESSION>  
[ <COMMA> <DELIMITER> ]  
[ <ORDER SPECIFICATION> ] <RIGHT PAREN>  
<BASIC AGGREGATE FUNCTION TYPE> ::=  
文法規則 11  
SUM | MAX | MIN | AVG | COUNT  
<SIMPLE AGGREGATE FUNCTION> ::=  
<SIMPLE AGGREGATE FUNCTION TYPE> <LEFT PAREN>  
<EXPRESSION> <RIGHT PAREN>  
文法規則 12  
| LIST <LEFT PAREN> <EXPRESSION> [ <COMMA>  
<DELIMITER> ]  
[ <ORDER SPECIFICATION> ] <RIGHT PAREN>  
<SIMPLE AGGREGATE FUNCTION TYPE> ::= <SIMPLE WINDOW AGGREGATE  
FUNCTION TYPE>  
文法規則 13  
<SIMPLE WINDOW AGGREGATE FUNCTION> ::=  
<SIMPLE WINDOW AGGREGATE FUNCTION TYPE> <LEFT PAREN>  
<EXPRESSION> <RIGHT PAREN>  
文法規則 14  
| GROUPING FUNCTION  
<SIMPLE WINDOW AGGREGATE FUNCTION TYPE> ::=  
<BASIC AGGREGATE FUNCTION TYPE>  
文法規則 15  
文法規則 16  
文法規則 17  
| STDDEV | STDDEV_POP | STDDEV_SAMP  
| VARIANCE | VARIANCE_POP | VARIANCE_SAMP  
<STATISTICAL AGGREGATE FUNCTION> ::=  
<STATISTICAL AGGREGATE FUNCTION TYPE> <LEFT PAREN>  
<DEPENDENT EXPRESSION> <COMMA> <INDEPENDENT  
EXPRESSION> <RIGHT PAREN>  
<STATISTICAL AGGREGATE FUNCTION TYPE> ::=  
CORR | COVAR_POP | COVAR_SAMP | REGR_R2 |  
REGR_INTERCEPT | REGR_COUNT | REGR_SLOPE |  
REGR_SXX | REGR_SXY | REGR_SYY | REGR_AVGY |  
REGR_AVGX  
<WINDOW NAME OR SPECIFICATION> ::=  
文法規則 18  
<WINDOW NAME> | <IN-LINE WINDOW SPECIFICATION>  
<WINDOW NAME> ::= <IDENTIFIER>  
文法規則 19  
文法規則 20  
文法規則 21  
<IN-LINE WINDOW SPECIFICATION> ::= <WINDOW SPECIFICATION>  
<WINDOW CLAUSE> ::= <WINDOW WINDOW DEFINITION LIST>  
パフォーマンス&チューニング・ガイド  
99  
Download from Www.Somanuals.com. All Manuals Search And Download.  
OLAP 関数の BNF 文法  
文法規則 22  
<WINDOW DEFINITION LIST> ::=  
<WINDOW DEFINITION> [ { <COMMA> <WINDOW DEFINITION>  
} . . . ]  
<WINDOW DEFINITION> ::=  
文法規則 23  
<NEW WINDOW NAME> AS <WINDOW SPECIFICATION>  
<NEW WINDOW NAME> ::= <WINDOW NAME>  
文法規則 24  
<WINDOW SPECIFICATION> ::=  
文法規則 25  
<LEFT PAREN> <WINDOW SPECIFICATION> <DETAILS> <RIGHT  
PAREN>  
<WINDOW SPECIFICATION DETAILS> ::=  
[ <EXISTING WINDOW NAME> ]  
[ <WINDOW PARTITION CLAUSE> ]  
[ <WINDOW ORDER CLAUSE> ]  
文法規則 26  
[ <WINDOW FRAME CLAUSE> ]  
<EXISTING WINDOW NAME> ::= <WINDOW NAME>  
文法規則 27  
<WINDOW PARTITION CLAUSE> ::=  
文法規則 28  
PARTITION BY <WINDOW PARTITION EXPRESSION LIST>  
<WINDOW PARTITION EXPRESSION LIST> ::=  
<WINDOW PARTITION EXPRESSION>  
文法規則 29  
[ { <COMMA> <WINDOW PARTITION EXPRESSION> } . . . ]  
<WINDOW PARTITION EXPRESSION> ::= <EXPRESSION>  
<WINDOW ORDER CLAUSE> ::= <ORDER SPECIFICATION>  
文法規則 30  
文法規則 31  
文法規則 32  
<WINDOW FRAME CLAUSE> ::=  
<WINDOW FRAME UNIT>  
<WINDOW FRAME EXTENT>  
<WINDOW FRAME UNIT> ::= ROWS | RANGE  
文法規則 33  
<WINDOW FRAME EXTENT> ::= <WINDOW FRAME START> | <WINDOW FRAME  
BETWEEN>  
文法規則 34  
<WINDOW FRAME START> ::=  
UNBOUNDED PRECEDING  
| <WINDOW FRAME PRECEDING>  
| CURRENT ROW  
文法規則 35  
<WINDOW FRAME PRECEDING> ::= <UNSIGNED VALUE SPECIFICATION>  
文法規則 36  
PRECEDING  
<WINDOW FRAME BETWEEN> ::=  
BETWEEN <WINDOW FRAME BOUND 1> AND <WINDOW FRAME  
BOUND 2>  
文法規則 37  
<WINDOW FRAME BOUND 1> ::= <WINDOW FRAME BOUND>  
<WINDOW FRAME BOUND 2> ::= <WINDOW FRAME BOUND>  
文法規則 38  
文法規則 39  
100  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
4 OLAP の使用  
<WINDOW FRAME BOUND> ::=  
<WINDOW FRAME START>  
文法規則 40  
| UNBOUNDED FOLLOWING  
| <WINDOW FRAME FOLLOWING>  
<WINDOW FRAME FOLLOWING> ::= <UNSIGNED VALUE SPECIFICATION>  
文法規則 41  
FOLLOWING  
<GROUP BY EXPRESSION> ::= <EXPRESSION>  
文法規則 42  
<SIMPLE GROUP BY TERM> ::=  
文法規則 43  
<GROUP BY EXPRESSION>  
| <LEFT PAREN> <GROUP BY EXPRESSION> <RIGHT PAREN>  
| <LEFT PAREN> <RIGHT PAREN>  
<SIMPLE GROUP BY TERM LIST> ::=  
<SIMPLE GROUP BY TERM> [ { <COMMA> <SIMPLE GROUP BY  
TERM> } . . . ]  
文法規則 44  
<COMPOSITE GROUP BY TERM> ::=  
<LEFT PAREN> <SIMPLE GROUP BY TERM>  
[ { <COMMA> <SIMPLE GROUP BY TERM> } . . . ]  
<RIGHT PAREN>  
文法規則 45  
<ROLLUP TERM> ::= ROLLUP <COMPOSITE GROUP BY TERM>  
文法規則 46  
文法規則 47  
文法規則 48  
<CUBE TERM> ::= CUBE <COMPOSITE GROUP BY TERM>  
<GROUP BY TERM> ::=  
<SIMPLE GROUP BY TERM>  
| <COMPOSITE GROUP BY TERM>  
| <ROLLUP TERM>  
| <CUBE TERM>  
<GROUP BY TERM LIST> ::=  
文法規則 49  
<GROUP BY TERM> [ { <COMMA> <GROUP BY TERM> } . . . ]  
<GROUP BY CLAUSE> ::= GROUP BY <GROUPING SPECIFICATION>  
文法規則 50  
<GROUPING SPECIFICATION> ::=  
文法規則 51  
<GROUP BY TERM LIST>  
| <SIMPLE GROUP BY TERM LIST> WITH ROLLUP  
| <SIMPLE GROUP BY TERM LIST> WITH CUBE  
| <GROUPING SETS SPECIFICATION>  
<GROUPING SETS SPECIFICATION> ::=  
GROUPING SETS <LEFT PAREN> <GROUP BY TERM LIST>  
<RIGHT PAREN>  
文法規則 52  
<ORDER SPECIFICATION> ::= ORDER BY <SORT SPECIFICATION LIST>  
文法規則 53  
パフォーマンス&チューニング・ガイド  
101  
Download from Www.Somanuals.com. All Manuals Search And Download.  
OLAP 関数の BNF 文法  
102  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
5
システム・リソースの管理  
この章について  
この章では、Sybase IQ によるメモリ、ディスク I/OCPU の使用方法と、  
これらの要素間の関係について説明します。また、DBA がリソース使用  
ます。  
この章の説明は般的な内容となっています使用のハードウェアと  
の推奨事項については、それぞれの『Sybase IQ インストールおよび設定  
内容  
トピック名  
ページ  
104  
104  
105  
123  
125  
133  
137  
138  
140  
143  
145  
パフォーマンス向上のための設計  
メモリ使用の概要  
プロセス・スレッド・モデル  
I/O の分散  
リソース使用を調整するオプション  
リソースを効率的に利用するための他の方法  
インデックスのヒント  
データベース・サイズと構造の管理  
ロードを高速化するための UNION ALL ビューの使用  
ネットワーク・パフォーマンス  
パフォーマンス&チューニング・ガイド  
103  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
パフォーマンス用語の概要  
パフォーマンス用語の概要  
パフォーマンスとはンピュータ・ビジネス・アプリケーションまたは同じ  
環境内で動作する複数のアプリケーションの効率を表す尺度ですの  
効率は応答時間とスループットで測定します。  
応答時間とは、1 つのタスクが完了するまでにかかる時間のことです。応答時  
間は、次の項目の影響により変化します。  
競合の軽減と待機時間 ( 特にディスク I/O 待機時間 ) の短縮  
より高速なコンポーネントの使用  
リソースに必要な時間の短縮 ( 同時実行性の向上 )  
スループットは定の時間にどれだけの作業量が完了したかを表しますス  
ループットは1 秒あたりのトランザクション数で表されますが1 分、  
1 時間、1 日などの単位で測定する場合もあります。  
パフォーマンス向上のための設計  
適正なデータベース設計密なクエリ分析切なインデックス付けを行う  
ことによりプリケーションはより高いパフォーマンスを発揮することがで  
きます。適正な設計を行い、適切なインデックス付け方式を選択することに  
よって、パフォーマンスを最も向上させることができます。  
その他ードウェアやネットワークを分析することによってンストール  
環境のボトルネックを特定できます。  
詳細については「第 3 章 クエリと削除の最適化」を参照してください。  
104  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
             
5 章 システム・リソースの管理  
メモリ使用の概要  
Sybase IQ では、次のような目的でメモリを使用します。  
クエリの解析用にディスクから読み込むデータのバッファ  
フラッァイルからロードするときにディスクから読み込むデータの  
ためのバッファ  
接続ランザクションッファータベース・オブジェクトを管理  
するためのオーバヘッド  
以降の各項では、オペレーティング・システムが Sybase IQ のメモリ使用をサ  
ポートする方法、さまざまな目的のために Sybase IQ でメモリを割り付ける方  
法、パフォーマンスを改善するためにユーザがメモリ割り付けを調整する方  
法、また Sybase IQ に十分なメモリが使用できるようにオペレーティング・シ  
ステムを設定する手順について説明します。  
ページングによる使用可能メモリの増加  
システムのメモリが不足している場合フォーマンスが大幅に低下すること  
があります。このような場合、使用可能なメモリを増やす必要があります。  
RDBMS ソフトウェアのように、Sybase IQ にも多くのメモリが必要です。  
Sybase IQ に割り付け可能なメモリが多ければ多いほど、パフォーマンスも向  
上します。  
ただしステム内のメモリ量には常に一定の制限があるためータの一部  
のみがメモリに格納されりのデータはディスク上に格納されるという状況  
が発生しますペレーティング・システムがィスク上のデータを検索し  
て取り出しモリ要求に対応する必要がある場合れをページングまたは  
スワッピングと呼びますモリを適切に管理することの主な目的はージ  
ングやスワッピングを回避したり、最小限に抑えたりすることです。  
最も頻繁に使用されるオペレーティング・システム・ファイルは、スワップ・  
ファイルですモリが消耗している場合ペレーティング・システムがメモ  
リのページをディスクにスワップして、新しいデータの領域を確保します。ス  
ワップされたページを再び呼び出すとのページがスワップされて求され  
たメモリ・ページが元に戻ります。ユーザのディスク使用率が高い場合、スワッ  
ピングには時間がかかります常はワッピングが起こらないようなメモリ  
編成にしてペレーティング・システム・ファイルの使用を最小限に抑えてく  
ださいワッピングを最小限に抑えるためのメモリの設定方法については「プ  
ラットフォーム固有のメモプション(119 ページ ) を参照してください。  
Sybase IQ では、物理メモリを最大限利用するために、データベースに対する  
すべての読み込みと書き込みにバッファ・キャッシュを使用します。  
注意 ディスク上のスワップ領域には、少なくとも物理メモリ全体を収容でき  
るだけのサイズを確保します。  
パフォーマンス&チューニング・ガイド  
105  
Download from Www.Somanuals.com. All Manuals Search And Download.  
           
メモリ使用の概要  
スワッピングをモニタするためのユーティリティ  
UNIX vmstat コマンド、UNIX sar コマンド、または Windows タスク・マネー  
ジャを使用すると行中のプロセス数ージアウト回数ワップ回数に  
ついての統計を表示できますの統計によって得た情報を使用してステ  
ムでページングが過度に発生していないかどうかを調べてください要に応  
じて定を調整しますとえば殊な高速ディスクにスワップ・ファイ  
ルを配置します。  
vmstat の出力例についてはUNIX システムでのページングのモニタリング」  
を参照してください。  
サーバ・メモリ  
さまざまな目的に応じて、Sybase IQ は、サーバ・メモリと呼ばれる単一メモ  
リ・プールからメモリを割り付けます。サーバ・メモリには、バッファ、トラ  
ンザクションータベースーバの管理のために割り付けられたすべての  
メモリが含まれます。  
オペレーティング・システム・レベルでは、Sybase IQ サーバ・メモリはヒー  
プ・メモリで構成されます。ほとんどの場合、Sybase IQ で使用されるメモリ  
がヒーモリか共有メモリかを気にする必要はありませんモリ割り付  
けは、すべて自動的に処理されます。ただし、Sybase IQ を実行する前に、オ  
ペレーティンステーネルが共有メモリを使用するように正しく構  
成されていることを確認してください細についてはラットフォームに  
対応した『Sybase IQ インストールおよび設定ガイド』を参照してください。  
マルチプレックスの  
メモリ管理  
マルチプレックスの各サーバは自のホスト上にある場合とストを他の  
サーバと共有している場合があります数のサーバが同じシステム上にある  
場合、作業負荷の処理にかかる CPU 時間は、単一の組み合わされたサーバの  
場合とほとんど変わりませんかし立した複数のサーバでは単一の組  
バが使用するメモリを他のサーバが共有できないからです。  
ロード、挿入、更新、  
同期、削除のための  
メモリ  
マシンの物理メモリが過度に割り付けられるのを防ぐには、ロードが発生する  
操作に対して LOAD_MEMORY_MB データベース・オプションを設定します。  
LOAD 操作だけでなくのオプションは INSERTUPDATESYNCHRONIZE、  
DELETE の各操作にも影響を与えます。LOAD_MEMORY_MB オプションで  
は、それ以降のロードで使用できるヒープ・メモリ量の上限を MB 単位で指定  
します。ロードとバッファ・キャッシュの使用については「ロードのメモリ  
要件」(109 ページ ) を参照してください。LOAD_MEMORY_MB オプションの  
詳細についてはSybase IQ リファレンス・マニュアル』の「第 2 章 データ  
ベース・オプション」を参照してください。  
106  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
5 章 システム・リソースの管理  
プロセスの中止による  
共有メモリへの影響  
警告! UNIX システムで中止されたプロセスは、自動的にクリーンアップさ  
れずにマフォまたは共有メモリにそのまま残されますUNIX 上の Sybase  
IQ サーバを正常に停止するにはSybase IQ システム管理ガイド』の「第 2  
Sybase IQ の実行」「データベース サーバの停止」に説明されている  
stop_asiq ユーティリティを使用しますipcs ipcrm を使用して常終了  
後のクリーンアップを行う方法についてはSybase IQ トラブルシューティ  
ングおよびリカバリ・ガイド「第 1 章 トラブルシューティングのヒント」  
を参照してください。  
バッファ・キャッシュの管理  
Sybase IQ ではッフャッシュに最も多くのメモリが必要ですSybase  
IQ には、IQ ストア用とテンポラリ・ストア 用の 2 つのバッファ・キャッシュ  
がありますージングータベースへの挿入ックアップやリストアな  
どのすべてのデータベース I/O 操作にこの 2 つのバッフャッシュが使用  
されますモリ内にあるデータは2 つのいずれかに格納されますす  
べてのユーザ接続はれらのバッファ・キャッシュを共有しますSybase IQ  
バッフャッシュの管理の詳細については降の項を参照してください。  
メモリ要件の計算方法についてはバッファ・キャッシュ・サイズの決  
定」を参照してください。  
設定サイズがわかっているバッフャッシイズの設定方法につ  
いてはバッファ・キャッシュ・サイズの設定」を参照してください。  
適切なバッファ・キャッシュ・サイズを決定する方法の例については、  
5-1 (112 ページ ) を参照してください。  
バッファ・キャッシュ・サイズの決定  
IQ ストアとテンポラリ・ストアに指定するバッファ・キャッシュ・サイズは、  
さまざまな要因によって決まります。デフォルト値 ( メインに 16MB、テンポ  
ラリ・キャッシュに 12MB) では、ほとんどのデータベースでサイズが不足し  
ます。アプリケーションに必要な実際の値は、次の要因によって決まります。  
システムに搭載されている物理メモリの合計量  
Sybase IQ、オペレーティング・システム、その他のアプリケーションが  
それぞれのタスクを実行するのに必要な物理メモリの量  
ロード、クエリ、またはその両方を実行するかどうか  
5-1 (112 ページ ) の例を通して、サイトに最適な設定を決定するときは、こ  
れ以降の各項で示されているガイドラインを参考にしてください。  
パフォーマンス&チューニング・ガイド  
107  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
メモリ使用の概要  
次の図は、バッファ・キャッシュとその他のメモリ消費との関係を示します。  
5-1: 物理メモリに対するバッファ・キャッシュ  
各部分に関する詳細な説明部分に必要なメモリ量の判断に役立つガイドラ  
インについては、以降の項で説明します。  
オペレーティング・システムとその他のアプリケーション  
このメモリの量はラットフォームの種類やシステムの使用方法によって異  
なります。たとえば、UNIX ファイル・システムでは、UNIX ロー・パーティ  
ションよりも多くのファイル・バッファリングが実行されるため、オペレー  
ティング・システムに必要なメモリは多くなります。少なくとも、UNIX シス  
テムでは 60MB 以上、Windows システムでは 30MB 以上のメモリを使用する  
と仮定できます。  
また、Sybase IQ とともに動作する他のアプリケーション ( クエリ・ツールな  
) にもそれぞれメモリ要件がありますモリ要件についてはプリケー  
ションおよびオペレーティング・システムのマニュアルを参照してください。  
108  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
5 章 システム・リソースの管理  
Sybase IQ メモリ・オーバヘッド  
オペレーティンステムや他のアプリケーションで使用する物理メモリ量  
を決定すると、Sybase IQ がタスクの実行に必要とする残りのメモリ量を計算  
できますのオーバヘッドに影響を与える要因については降の各項で説  
明します。  
ロー・パーティションとファイル・システム  
UNIX システムの場合、ロー・パーティションではなくファイル・システムを  
使用するデータベースには、オペレーティング・システムによるファイル・  
バッファリング処理のために残りのメモリの 30% がさらに必要になります。  
Windows ではOS_FILE_CACHE_BUFFERING = ‘OFF’ に設定し ( 新しいデー  
タベースのデフォルト )、ファイル・システム・キャッシュを無効にしてくだ  
さい。詳細については、プラットフォームに対応した『Sybase IQ インストー  
ルおよび設定ガイド』を参照してください。  
マルチユーザのデータベース・アクセス  
マルチユーザがデータベースをクエリする場合Sybase IQ アクティブ」  
ユーザ 1 人あたり約 10MB のメモリが必要ですクティブ・ユーザとは同  
時にデータベースにアクセスしたりータベースに対して問い合わせを行っ  
たりするユーザのことです。たとえば、Sybase IQ に接続しているユーザが 30  
人でも クティブにデータベースを同時に使用しているユーザは 10 人ほど  
しかいないことがあります。  
ロードのメモリ要件  
Sybase IQ では、バッファ・キャッシュの他に、ロード操作、同期、削除を実  
行するためのメモリも必要です。このメモリは、フラット・ファイルの I/O  
バッファリングに使用されます。Sybase IQ ではメモリを使用して、ディスク  
から読み込んだデータをバッファリングします。この読み込みのサイズは、  
BLOCK FACTOR に入力レコードのサイズを乗算した値になります。BLOCK  
FACTOR LOAD TABLE コマンドのオプションですフォルト値の 10,000  
を使用した場合、データの入力ローを 200 バイトとすると、Sybase IQ I/O  
バッファリングに使用するサイズは合計 2MB になります。ロードのメモリ要  
件は、ローの数ではなく、カラムの数と幅によって決まります。  
このメモリが必要になるのは、フラット・ファイルからロードする場合、  
INSERT..LOCATION または INSERT..SELECT を使用する場合だけです。  
削除と更新に必要なメモリは比較的少量です。  
パフォーマンス&チューニング・ガイド  
109  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
メモリ使用の概要  
スレッド・スタックのメモリ  
スレッドの処理には、少量のメモリが必要です。使用する Sybase IQ 処理ス  
レッドが多くなるにつれ要なメモリも多くなります-iqmt サーイッ  
チ は、Sybase IQ のスレッド数を制御します。  
ユーザの数に比例してタロトア処理スレッドに必要なメモリも増加  
しますが、必要とされるメモリは比較的少量です。-gn スイッチによって、カ  
タログ・ストア処理スレッドを制御します。  
スレッドの合計数 (-iqmt -gn の合計 ) 在のプラットフォームで使用で  
きるスレッド数を超えないようにします。詳細についてはSybase IQ ユー  
ティリティ・ガイド』の「第 1 章 データベース・サーバの実行」を参照して  
ください。  
その他のメモリ使用  
すべてのコマンドとトランザクションがる程度のメモリを使用しますこ  
れまで説明してきた要因の他にモリを大量に使用する操作には次のものが  
あります。  
バックアップ バックアップに使用される仮想メモリの量は、データベース作  
成時に指定された IQ PAGE SIZE によって決まります。この値はおよそ 2 *  
CPU * 20 * (IQ PAGE SIZE/16) ラットフォームによって、  
BACKUP コマンドの BLOCK FACTOR を調整するとバックアップのパフォー  
マンスが向上する場合がありますがBLOCK FACTOR を増やすとメモリの使  
用量も増加します。詳細についてはSybase IQ システム管理ガイド』の「第  
14 章 データのバックアップ、リカバリ、アーカイブ」「バックアップ中の  
使用メモリの増加」を参照してください。  
データベースの検証と修復 データベース全体を検証するとsp_iqcheckdb プロ  
シージャは処理を開始する前に、すべての Sybase IQ テーブル、テーブルのそ  
れぞれのフィールドとインデックスを開きます。Sybase IQ テーブルの数、お  
よびテーブル内のカラムとインデックスの累積数によって、sp_iqcheckdb に  
必要な仮想メモリの量は大幅に異なります。必要なメモリ量を制限するには、  
sp_iqcheckdb オプションを使って 1 つのインデックスまたはテーブルを検証  
または修復します。  
リーク・ブロックの削除 リークの削除操作でも、すべての Sybase IQ テーブル、  
ファイル、インデックスを開く必要があるため、データベース全体を検証する  
ときに sp_iqcheckdb が使用するのと同じ容量の仮想メモリを使用します。  
Sybase IQ テンポラリ・バッファ・キャッシュを使用して使用ブロックを追跡  
します。  
110  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
5 章 システム・リソースの管理  
Sybase IQ のメイン・バッファ・キャッシュとテンポラリ・バッファ・キャッシュ  
Sybase IQ に必要なオーバヘッモリを決定したらイン Sybase IQ バッ  
ファ・キャッシュとテンポラリ・バッファ・キャッシュの間でどのように残り  
のメモリを分散するかを決定してください。5-1 では、2 つの領域が点線で  
分割されていますがれはさまざまな要因によって分割線の位置が移動する  
可能性があることを示します。  
他のほとんどのデータベースと異なり、Sybase IQ では、通常、メイン・バッ  
ファ・キャッシュに 40 %、テンポラリ・バッファ・キャッシュに 60% のメモ  
リを割り当てます。ただし、この比率は固定されているわけではありません。  
HG インデックスが関連する大きなソートマージ・ジョインまたは挿入を使用  
するクエリなどの操作では常とは異なりイン・バッファ・キャッシュ  
よりもテンポラリ・バッファ・キャッシュに多くのメモリが必要です。また、  
他のアプリケーションでは要件が異なることがあります。Sybase IQ でサポー  
トされるメモリ割り付けの割合はイン・バッファ・キャッシュ対テンポラ  
リ・バッファ・キャッシュが 30 % 70 % から 70 % 30 % の範囲となって  
います。  
注意 上記のガイドラインは、システムでアクティブなデータベースが一度に  
1 つであることを前提としています。つまり、すべての Sybase IQ ユーザが 1  
つのデータベースだけにアクセスしている場合です数のアクティブなデー  
タベースがある場合は使用するデータベース間で残りのメモリをさらに分け  
る必要があります。  
最初は、ここに記載した一般ガイドラインに従い「バッファ・キャッシュの  
モニタリング」(157 ページ ) で説明されているモニタ・ツールと、現在のプ  
ラットフォームに対応する『Sybase IQ インストールおよび設定ガイド』に記  
載された個別のツールを使用して、Sybase IQ のパフォーマンスをモニタリン  
グすることを強くおすすめします。  
バッファ・キャッシュと物理メモリ  
Sybase IQ のメイン・バッファ・キャッシュとテンポラリ・バッファ・キャッ  
シュに使用するメモリと、Sybase IQ メモリ・オーバヘッド、オペレーティン  
グ・ステムとその他のアプリケーションに使用するメモリの合計がステ  
ムの物理メモリを超えないようにしてください。  
システムが許容するサイズよりもバッフャッシイズを大きく設定  
すると、Sybase IQ はデータベースを開くことができません。サーバ起動オプ  
ションの -iqmc ( メイン・キャッシュ・サイズ ) -iqtc ( テンポラリ・キャッ  
シュ・サイズ ) を指定してデータベースを開き、キャッシュ・サイズを再設定  
してください。デフォルトでは、メイン・キャッシュに 16MB、テンポラリ・  
キャッシュに 12MB しか割り付けられません。  
パフォーマンス&チューニング・ガイド  
111  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
メモリ使用の概要  
注意 一部の UNIX プラットフォームでは、他のサーバ・スイッチを設定して  
バッフャッシュに使用可能なメモリを増やす必要があります細につ  
いては「プラットフォーム固有のメモリ・オプション」(119 ページ ) を参照  
してください。  
その他の注意事項  
Sybase IQ のバッファ・キャッシュ・サイズは、データベースをどのように使  
うかによって変わります。パフォーマンスを最大にするには、データベース  
の挿入、問い合わせ、およびその両方を使用するそれぞれの場合に応じて設  
定を変更してください。ただし、データベースへの挿入と問い合わせを両方  
使用する環境ではべてのユーザによるデータベースの使用を中止しッ  
ファ・キャッシュ・オプションをリセットすることは容易でありません。こ  
のような場合は、ロードまたはクエリのどちらかのパフォーマンスを優先さ  
せてください能なかぎりータベースで作業を行う前にキャッシ・サ  
イズを定義してください。  
バッファ・キャッシュとメモリ・オーバヘッドのガイドラインも、プラット  
フォームによって異なります。その他の事項についてはSybase IQ インス  
トールおよび設定ガイド』を参照してください。  
バッファ・キャッシュ・サイズの設定例  
次の表にはステムのメモリが消費される要因の一覧とッフ・  
キャッシュとテンポラッフャッシュに残されたメモリ量の例を示  
します。この例では、システムに 1GB の物理メモリがあること、実行中の  
Sybase IQ 以外にはハードウェア上に大きなアプリケーションがないこと、ア  
クティータベースは一度に 1 つしかないことを前提にしていますの  
表では、主なデータベース・アクセスの種類 ( クエリまたは挿入 ) で数字を分  
けています。  
5-1: バッファ・キャッシュに使用可能なメモリの例 (MB 単位 )  
使用可能な 使用可能な  
使用量 メモクエリ メモ入  
メモリの使用  
1000  
900  
1000  
900  
使用可能な物理メモリの合計 (MB 単位の  
概数 )  
100a  
100  
UNIX システムの最小量を前提としたオ  
ペレーティング・システム使用量  
825  
アクティブ・ユーザ数のオーバヘッド:  
接続ユーザ数は約 30 人だが、アクティ  
ブ・ユーザ数は約 10 人のみで、1 人あた  
10MB  
97  
828  
200 バイトのレコーイズとデフォル  
ト設定を前提としたときの、フラット・  
ファイルからの挿入に伴うオーバヘッド  
112  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
5 章 システム・リソースの管理  
使用可能な 使用可能な  
使用量 メモクエリ メモ入  
メモリの使用  
675  
405  
270  
828  
497  
331  
メイン・バッファ・キャッシュとテンポ  
ラリ・バッファ・キャッシュ用に残され  
たメモリ  
iqmc (Main_Cache_Memory_MB) の設定:  
バッファ・キャッシュ用に残されたメモ  
リの 40%  
iqtc (Temp_Cache_Memory_MB) :  
バッファ・キャッシュ用に残されたメモ  
リの 60%  
a
Windows オペレーティング・システムでは、最低 30MB 必要です。  
表に示されているようにータベースへの挿入が中心の場合とい合わせ  
が中心の場合とではッフャッシュに対して使用する値の組が異なり  
ますれらの値は入と問い合わせの負荷の割合が一般的な場合とは異な  
ります。キャッシュ・サイズを変更する場合はバッファ・キャッシュ・サ  
イズの設定」を参照してください。キャッシュ・サイズ・オプションは、デー  
タベースを停止して再起動するまで使用できません  
バッファ・キャッシュ・サイズの設定  
Sybase IQ ではイン・バッファ・キャッシュは 16MB ンポラリ・バッ  
ャッシュは 12MB のサイズにデフォルト設定されていますとんど  
のアプリケーションではれよりはるかに大きな値を必要としますャッ  
シュのサイズは理メモリの合計によって制限されます使用中のシステム  
の適切な設定を決定するには、前の各項を参照してください。  
必要な設定がわかったら5-2 に示すオプションを使用してバッフャッ  
シュ・サイズを設定します。5-3 に示すオプションを使用して、バッファ・  
キャッシュに使用するメモリを増やすこともできます。  
5-2: バッファ・キャッシュ・サイズを変更する設定  
方法  
使用時期  
設定の有効期間  
参照先  
-iqmc および -iqtc サー・ス 奨される方。データ サーバが起動してから停止 「バッファ・キャッシュ・  
イッチ  
ベースとサーバが動作し するまで  
て い な い と き に キ ャ ッ  
シュ・サイズを設定する。  
4GB を超えるキャッシ・  
サイズを使用できる。  
サイズのサーバ・スイッ  
チの設定」(114 ページ )  
64 ビッラットフォー  
ムを使用している場合ま  
たはキャッシイズの  
データベープション  
がシステムの許容量を超  
えて設定されている場合  
に特に有用。  
パフォーマンス&チューニング・ガイド  
113  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
メモリ使用の概要  
方法  
使用時期  
設定の有効期間  
参照先  
MAIN_CACHE_MEMORY_  
MB および  
TEMP_CACHE_MEMORY_  
MB database データベース・  
オプション  
バッファ・キャッシュ・サ 次回データベースが再始動 Sybase IQ ファレン  
イズを最大 4GB 。 されてから、これらのオプ ニュアルデー  
これらの値を設定するに ションをリセットするか、 タベース・オプショ」  
はデータベースを開く必 またはサーバ・スイッチで の章  
要がある。  
これらのオプションを上書  
きするまで  
この方法は推奨しません。  
5-3: バッファ・キャッシュに使用できるメモリ容量に影響する設定  
使用時期 設定の有効期間 参照先  
バッフャッシュとし サーバが起動してから停止 「プラットフォーム固有  
方法  
-iqwmem サーバ・スイッチ  
て使用する追加メモリを するまで  
割り当てるときに一部の  
UNIX プラットフォーム上  
で使用際にキャッシ・  
サイズの設定はしない。  
のメモ・オプション」  
(119 ページ )  
LOAD_MEMORY_MB  
データベース・オプション  
ロードに使用可能なメモ すぐに有効 ( オプションを 「ロード同  
リを制御して、バッファ・ リセットするまで )  
キャッシイズに間接  
的に影響を与える場合プ  
除のためのメモリ」  
(106 ページ )  
ラットフォームによって  
ードに無制限のメモ  
リ を 許 可 す る と、バ ッ  
ャッシュに使用可  
能なメモリが少なくなる。  
バッファ・キャッシュ・サイズのサーバ・スイッチの設定  
サーバ起動オプションの -iqmc -iqtc を使用するバッファ・キャッシュ・サ  
イズの設定には、次の 2 つの重要な利点があります。  
4GB を超えるサイズのキャッシュ・サイズを設定できます。32 ビット・プ  
ラットフォームでは、このような大きいキャッシュ・サイズは使用できま  
せんが、64 ビット・プラットフォームでは推奨されています。  
システムの許容量を超えるデータベース・オプションを設定してしまい、  
データベースを開けない場合に、キャッシュ・サイズを変更できます。  
データベース・オプションとサーバ・オプションのどちらを使用する場合も、  
バッフャッシイズを変更するにはサーバを再起動する必要があり  
ます-iqmc および -iqtc サーバ起動オプションは、サーバが実行されている間  
だけ有効なため、サーバを再起動するたびに指定する必要があります。  
114  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
5 章 システム・リソースの管理  
ページ・サイズの指定  
データベースを作成するときはのページ・サイズを設定しますのパラ  
メータはッファ・キャッシュのサイズとともにのデータベースのメモ  
リ使用とディスク I/O スループットを決定します。  
注意 ページ・サイズを変更することはできません。ページ・サイズによって、  
一部のデータベース・オブジェクトのサイズの上限が決まります。  
ページ・サイズの設定  
Sybase IQ では、ページ単位でデータがメモリ内外にスワップされます。デー  
タベースを作成するときに、カタログ・ストアと IQ ストアに別々のページ・  
サイズを指定します。テンポラリ・ストアのページ・サイズは、IQ ストアと  
同じです。  
パフォーマンスを最大にするための Sybase IQ ページ・サイズの推奨値につい  
てはSybase IQ システム管理ガイド』の「第 5 章 データベース・オブジェ  
クトの使用」IQ ページ・サイズの選択」を参照してください。  
カタログ・ストアで発生する I/O はわずかなため、カタログ・ストアのペー  
ジ・イズがパフォーマンスに与える影響はほとんどありませんフォルト  
4096 バイトで十分です。  
IQ ページ・サイズによってータベースのデフォルト I/O 転送ブロック・サ  
イズと最大データ圧縮の 2 つのパフォーマンスの要因が決まります降の項  
で、これらの要因について説明します。  
ブロック・サイズ  
すべての I/O は、ブロック単位で発生します。これらのブロックのサイズは、  
Sybase IQ データベースを作成したときに設定したものです。このサイズを変  
更するには、データベースを再作成します。デフォルトでは、IQ ページ・サ  
イズによって I/O 転送ブロック・サイズが決まります。たとえば、デフォルト  
IQ ページ・サイズが 128KB の場合、デフォルトのブロック・サイズは 8,192  
バイトになります。通常、Sybase IQ はこのページ・サイズに対するデフォル  
トのブロック・サイズの割合の使用だけでなく、他の要因も考慮します。  
パフォーマンス&チューニング・ガイド  
115  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
メモリ使用の概要  
ほとんどのシステムでは、デフォルトのブロック・サイズを使用することに  
よって、I/O 転送率とディスク領域の使用率のバランスを最適化できます。た  
だしフォーマンスよりもディスク領域の節約が優先されますフォルト  
のブロック・サイズでシステムのパフォーマンスが不十分な場合は、4,096 ~  
32,768 の間の 2 の累乗の値にブロック・サイズを設定できます。ただし、ブ  
ロック数は 1 ページに 2 16 個となるよう設定してください。次のような場  
合には、ブロック・サイズを明示的に設定できます。  
ィスク・アレイを使用したロー・ディスク・インストールの場合、ブ  
ロックが大きいほどパフォーマンスは向上しますが使用されるディスク  
領域が多くなります。  
ファイル・システム・インストールでは、オペレーティング・システムに  
ネイティブ・ブロック・サイズがある場合は、そのブロック・サイズ以上  
IQ ブロック・サイズを設定すると、ディスク領域のパフォーマンスが  
最適化されますIQ ブロック・サイズがファイル・システムのブロック・  
サイズと一致する場合は、I/O 率が向上する可能性もあります。  
5-4 は、各 IQ ページ・サイズのデフォルトのブロック・サイズを示します。  
5-4: デフォルトのブロック・サイズ  
IQ ページ・サイズ (KB)  
デフォルトのブロッイズ ( バイト )  
64  
4096  
8192  
128 (新しいデータベースのデフォルト)  
256  
512  
16384  
32768  
データ圧縮  
Sybase IQ では、常にデータを圧縮してディスクに保存します。データ圧縮に  
よってィスク領域の必要量が減少しフォーマンスも向上しますー  
タ圧縮の量は、IQ ページ・サイズに基づいて自動的に決定されます。  
メモリの節約  
マシンのメモリが十分でない場合は、次のように調整してメモリを節約します。  
バッファ・キャッシュ設定の縮小  
バッファ・キャッシュ・サイズを小さくすることによってとモリを節約で  
きますだしッファ・キャッシュを小さくしすぎると、バッファの不足  
によって、データのロードまたはデータの問い合わせが非効率的になったり、  
完了できなくなったりすることがあります。  
116  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
5 章 システム・リソースの管理  
ロードに使用するメモリの削減  
LOAD_MEMORY_MB オプションを設定するとードや他の同様の操作に使  
用するヒープ・メモリ量を制限できます。詳細については「ロード、挿入、  
更新、同期、削除のためのメモリ」(106 ページ ) を参照してください。  
ロードのためのブロッキング係数の調整  
BLOCK FACTOR を使用して、フラット・ファイルからロードする場合の I/O  
を減らします。LOAD コマンドの BLOCK FACTOR オプションにより、入力  
ファイルの作成時に使用したブロッキング係数 ( ブロックあたりのレコード数 )  
を指定します。デフォルトの BLOCK FACTOR 10,000 です。  
このロード・オプションの構文は、次のとおりです。  
BLOCK FACTOR = integer  
BLOCK FACTOR を決定するときは、次のガイドラインに従ってください。  
record size * BLOCK FACTOR = memory required  
このオプションを使用するにはッファのメモリ以外に追加メモリが必要と  
なります。使用可能なメモリが大量にある場合、または同時にアクティブに  
なっているユーザが 1 人のみの場合はBLOCK FACTOR の値を大きくするこ  
とによって、ロード・パフォーマンスを向上できます。  
ユーザが多数存在する場合の最適化  
Sybase IQ で処理できるユーザ接続の最大数は、32 ビット・プラットフォーム  
(Linux Windows 2000/2003/XP) では 20064 ビット・プラットフォーム (Sun  
SolarisHP-UX ItaniumAIX) では 1,000 です。64 ビット・システムでこの  
ような多数のユーザをサポートするにはペレーティンステムのパラ  
メータと start_asiq サーバ・パラメータの両方を調整する必要があります推  
奨事項については、これ以降の各項と『Sybase IQ インストールおよび設定ガ  
イド』を参照してください。  
ユーザが多数存在する場合の Sybase IQ コマンド・ライン・オプションの変更  
次の start_asiq のスイッチは、ユーザ数が多い場合の処理に影響を与えます。  
-gm #_connections_to_support  
-iqgovern #_ ACTIVE_ queries_to_support  
-gn #_Catalog_Store_front_end_threads  
-c Catalog_Store_cache_size  
-ch size  
-cl size  
パフォーマンス&チューニング・ガイド  
117  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
メモリ使用の概要  
-gm  
これはーバで処理できる接続の合計数ですこで設定する接続の合計数  
のすべてがアクティブにデータベースを使用するのではなく部の接続はア  
イドル状態となっていることが想定されます。  
-iqGovern  
Sybase IQ には、1,000 人のユーザが接続できます。ただし、一度にクエリを許  
可されるユーザが少ないほど、より良いスループットを得ることができ、各  
ユーザが効率的に操作できるリソースを十分に確保できます-iqgovern 値を  
指定すると、一度に実行されるクエリの最大数が制限されます。-iqgovern の  
制限を超えるユーザがクエリを発行した場合はクティブなクエリのいずれ  
かが完了するまで、新しいクエリはキューイングされます。  
-iqgovern の最適な値はエリの性質CPU の数Sybase IQ バッフャッ  
シュのサイズによって異なります。デフォルト値は 2*CPU の数 + 10 です。接  
続ユーザ数が多い場合は、このオプションを 2*CPU の数 + 4 に設定するとス  
ループットが向上する場合があります。  
-gn  
-c  
-gn の適正値は、-gm の値によって決まります。start_asiq ユーティリティが  
-gn を計算しを適切に設定します-gn の設定値が小さすぎるとーバが  
正しく機能しなくなることがあります-gn 480 以下にすることをおすすめ  
します。  
カタログ・ストア・バッファ・キャッシュは、カタログ・ストアの汎用メモ  
リ・プールでもありますMB 単位で指定するには-c nM 形式を使用します。  
たとえば、-c 64M のように指定します。Sybase の推奨値は次のとおりです。  
5-5: カタログ・バッファ・キャッシュの設定  
ユーザ数  
1000 まで  
200 まで  
プラットフォーム -c で設定する最小値  
64MB  
64 ビットのみ  
64 ビット  
48MB (64 ビットの場合の start_asiq のデフォルト  
)ーザ数がこれより多い場合は 64MB に設定  
すると有効  
200 まで  
32 ビット  
32MB (32 ビットの場合の start_asiqのデフォルト)  
大量の解析を必要とする特定のクエリに対応する場合など、標準のカタログ・  
キャッシュ・サイズでは小さすぎる場合があります。このような場合は-cl と  
-ch を設定すると有効なことがありますとえば32 ビッラットフォー  
ムでは次のように設定してみます。  
-cl 128M  
-ch 256M  
-ch または -cl と同じ設定ファイルやコマンド・ラインで -c を使用しないでく  
ださい連情報については-ch cache-size オプションを参照してください。  
118  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
5 章 システム・リソースの管理  
警告! カタロトアのキャッシイズを明示的に制御するにはー  
バ起動用の設定ファイル (.cfg) または UNIX コマンド・ラインでのいずれ  
か一方を実行します。両方を実行しないでください。  
-c パラメータを設定する  
-ch および -cl パラメータを使用して、カタログ・ストアのキャッシュサ  
イズに特定の上限と下限を設定する  
上記のパラメータをこれ以外の組み合わせで指定すると、予期しない結果が  
生じることがあります。  
-iqmt  
-iqmt オプションの設定は必須ではありません。指定された接続数に対して  
-iqmt の設定値が小さすぎる場合は、要求された接続数を処理するためにス  
レッド数が増加しますまり-gm -iqmt を上書きしますだし-iqmt オ  
プションによって Sybase IQ スレッド数が増加した場合は、後述の「ユーザが  
多数存在する場合のオペレーティング・システム・パラメータの設定説明  
する制限の設定時に、このスレッド数を使用します。  
ユーザが多数存在する場合の Sybase IQ テンポラリ領域の増加  
場合によってはり多くのユーザに対応できるようにテンポラリ dbspace を  
増やす必要がある場合もあります。  
新規接続と既存接続との優先順位  
Sybase IQ が、接続されているユーザの対応でビジー状態の場合は、新規の接  
続要求への応答が遅くなることがありますとえばーバが挿入のために  
ビジー状態のときにスト・スクリプトなどープ内の数百個の接続が起  
動される極端な例の場合規の接続がアクティブになるにはばらく待機  
することがあります合によってはの接続要求がタイムアウトに  
なることもありますのような場合ーバは単にビジー状態になっている  
だけにも関わらず止しているように見えますのような状況が発生した  
場合は、再び接続を行ってください。  
プラットフォーム固有のメモリ・オプション  
プラットフォームの種類を問わず、Sybase IQ では次の 4 つの目的ためにメモ  
リを使用します。  
メイン・バッファ・キャッシュ  
テンポラリ・バッファ・キャッシュ  
Sybase IQ メモリ・オーバヘッド ( スレッド・スタックを含む )  
ロード・バッファ  
パフォーマンス&チューニング・ガイド  
119  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
メモリ使用の概要  
5-1 (108 ページ ) で示した Sybase IQ のメモリ使用の図を参照してください。  
すべての 64 ビット・プラットフォームでは、使用可能な合計メモリ量は実質  
的に無制限です。システムの仮想メモリが唯一の制限となります。  
HP-UX システムにおけるパフォーマン・チューニングのヒントについては、  
そのプラットフォームの『Sybase IQ インストールおよび設定ガイド』を参照  
してください。  
32 ビット・プラットフォームでは制限があります。詳細については、次の表  
を参照してください。  
5-6: 32 ビット・プラットフォームで使用可能な合計メモリ量  
プラットフォーム  
RedHat Linux 2.1  
使用可能メモリ量  
1.7GB Sybase IQ に使用可能  
2.7GB Sybase IQ に使用可能  
2.75GB Sybase IQ に使用可能  
RedHat Linux 3.0  
Windows 2000/2003/XPa  
a このメモリ量を確保するには、Windows 2000 Advanced Server または Datacenter Server、  
Windows Server 2003 StandardEnterprise または Datacenter Edition、もしくは Windows XP  
Professional を使用し、/3GB スイッチを設定する必要があります。このスイッチを設定  
しないと2GB に制限されますれはプロセスに使用できる合計メモリ量です/3GB  
スイッチを設定した場合でもWindows サーバではバッファ・キャッシュの合計サイズ  
2GB を超えることはできません。詳細については、Windows 用の『Sybase IQ インス  
トールおよび設定ガイド』を参照してください。  
Sybase IQ サーバ内での仮想メモリの使用パターンのせいで、Windows プラッ  
トフォーム上で仮想メモリの断片化によって処理が過度に増大する可能性が  
あります。このような状況に陥る可能性を小さくするため、Sybase IQ では  
Windows XP Windows Server 2003 について Microsoft LFH ( 低断片化ヒー  
) の使用をサポートしています。  
Windows プラットフォームにおけるパフォーマンューニングのこの他の  
ヒントについては「第 7 Windows システムでのサーバのチューニング」を  
参照してください。  
UNIX システムの場合にかぎり、Sybase IQ にはメモリの管理に役立つ 2 つの  
コマンドライン・オプションが用意されています。  
連結メモリ・プール  
HP Sun のプラットフォームでは、指定した量のメモリを「連結」メモリとし  
て指定できます。連結メモリは、物理メモリにロックされた共有メモリです。  
カーネルはこのメモリを物理メモリからページ・アウトできません。  
他のアプリケーションが同じマシン上で同時に実行されている場合は結メ  
モリによって Sybase IQ のパフォーマンスが向上することがありますだし、  
連結メモリを Sybase IQ 専用に割り付けると、そのメモリはマシン上の他のア  
プリケーションから利用できなくなります。  
120  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
5 章 システム・リソースの管理  
これらの UNIX プラットフォームにの連結モリのプールを作成するに  
-iqwmem コマンドライン・スイッチを指定して結メモリの MB 数を指  
定しますSun 以外のプラットフォームで -iqwmem を設定するにはroot ユー  
ザになる必要があります。64 ビット・プラットフォームでは、マシンの物理  
メモリのみが -iqwmem の上限となります。  
たとえば、14GB のメモリを搭載するマシンで、10GB の連結メモリを確保す  
るとします。そのためには、次のように指定します。  
-iqwmem 10000  
警告! このスイッチは、連結メモリに指定する余裕がメモリにある場合にの  
み使用します。メモリが十分にないときにこのスイッチを使用すると、パ  
フォーマンスが著しく低下することがあります。  
注意 このバージョンでは、次の点に注意してください。  
Sun Solaris では-iqwmem を指定するとに連結メモリが有効になります。  
HP では、サーバをルートとして起動した場合に-iqwmem を指定すると  
連結メモリが有効になりますート以外のユーザでサーバを起動した場  
合は連結メモリが有効になりますの動作は来のバージョンで  
変更される可能性があります。  
他のアプリケーションと  
データベースの影響  
サーバに使用されるメモリはべてのアプリケーションとデータベースに使  
用されるメモリ・プール内のメモリです。複数のサーバまたは複数のデータ  
ベースを同時に同じマシン上で実行したりのアプリケーションを実行した  
りしている場合は、サーバが要求するメモリ量を減らす必要があります。  
サーバ・ログによって、実際にどれだけのメモリ量があるかがわかります。  
Created 1073741824 byte segement id 51205 Attached at  
80000000  
Created 184549376 byte segement id 6151 Attached at  
C3576000  
またUNIX コマンド ipcs -mbを発行して際のセグメント数を表示する  
こともできます。  
HP のメモリ問題のトラ  
ブルシューティング  
HP-UX でメモリ問題が発生している場合はmaxdsiz_64bit カーネラメー  
タの値を調べます。このパラメータは、64 ビット HP プロセッサ上で Sybase  
IQ が使用できる仮想メモリの量を制限しますSybase IQ インストールおよ  
び設定ガイド』で推奨値を参照してください。  
パフォーマンス&チューニング・ガイド  
121  
Download from Www.Somanuals.com. All Manuals Search And Download.  
メモリ使用の概要  
ファイル・システム・バッファリングの制御  
Solaris UFS および Windows ファイル・システムの場合にかぎり、ファイル・  
システッファリングのオンとオフを切り替えることができますァイ  
ル・システム・バッファリングをオフにすると、ファイル・システム・バッ  
ファ・キャッシュからのデータ・コピーがメイン IQ バッファ・キャッシュに  
保存されます。通常、データ・コピーの保存によってページングが減り、パ  
フォーマンスが向上します。ただし、例外が 1 つあります。データベースの  
IQ ページ・サイズがファイル・システムのブロック・サイズよりも小さい場  
( 通常は、テスト状況の場合のみ )、ファイル・システム・バッファリング  
をオフにするとにマルチユーザ操作中にパフォーマンスが低下することが  
あります。  
新しく作成される Sybase IQ データベースでは、ファイル・システム・バッ  
ファリングがデフォルトでオフになります。  
既存のデータベースのファイル・システム・バッファリングを無効にするに  
は、次の文を発行します。  
SET OPTION "PUBLIC".OS_FILE_CACHE_BUFFERING = OFF  
このオプションはPUBLIC グループにのみ設定できます。変更を有効にする  
には、データベースを停止し、再起動します。  
注意 Solaris には、ファイル・システム・バッファ・キャッシュのサイズを制  
限するカーネル・パラメータはありません間の経過とともにファイル・シ  
ステム・バッファ・キャッシュが大きくなりIQ バッファ・キャッシュ・ペー  
ジを置き換えるためペレーティング・システムに過度のページング・アク  
ティビティが発生し、Sybase IQ パフォーマンスが低下します。  
Windows ではァイステムを犠牲にしてアプリケーションを優先させ  
るページング・アルゴリズムを使用します。これは、Sybase IQ パフォーマン  
スの向上に役立ちます。詳細については「第 7 Windows システムでのサー  
バのチューニング」を参照してください。  
メモリを増やすその他の方法  
特定の環境においては、他のオプションを調整して Sybase IQ に使用可能なメ  
モリを増やすことができます。  
122  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
5 章 システム・リソースの管理  
Java 実行可能のデータベースのオプション  
SET OPTION コマンドの JAVA_HEAP_SIZE オプションは、Java アプリケー  
ションに対して接続ごとに割り付けるメモリの最大サイズ ( バイト単位 ) を設  
定します続ごとに割り当てられるメモリはユーザの作業領域として  
使用されの内訳は Java 変数と Java アプリケーショタック領域です。  
Java アプリケーションの実行中続ごとの割り付けはデータベーーバ  
の固定キャッシュを使用するため、制御できなくなった Java アプリケーショ  
ンがメモリを使いすぎないようにすることが重要です。  
SET OPTION コマンドの JAVA_NAMESPACE_SIZE オプションは、Java アプリ  
ケーションに対してデータベースごとに割り付けるメモリの最大サイズ ( バイ  
ト単位 ) を設定しますータベースごとのメモリ割り付けはJava クラス定義  
を含みますラス定義は読み取り専用であるため続間で共有されますし  
たがって、その割り付けには固定キャッシュを使用することになり、このオプ  
ションを使って割り付けサイズの制限を設定します。  
プロセス・スレッド・モデル  
Sybase IQ では、最大限のパフォーマンスを得るために、オペレーティング・  
システムのカーネル・スレッドを使用します。スレッドは、ユーザ・レベルと  
カーネル・レベルにあります。ライトウェイト・プロセスは、カーネルでサ  
ポートされるコントロールの基本となるスレッドですペレーティン・シ  
ステムによって、どのライトウェイト・プロセス (LWP) をどのプロセッサで  
いつ実行するかが決定されます。オペレーティング・システムはユーザ・ス  
レッドのことは関知しませんがレッドが待機中か実行可能かは認  
識しています。  
オペレーティング・システムのカーネルによって、LWP CPU リソース上に  
スケジューリングされます。この場合、LWP のスケジューリング・クラスと  
優先度を使用しますルチプロセッサ・システム上でーネルによって個  
別にディスパッチされた LWP は、個別のシステム・コールを実行したり、個  
別のページ・フォールトを発生させたり、並列実行されます 。  
高度にスレッド化された単一のプロセスが、すべての Sybase IQ ユーザの処理  
を実行します。Sybase IQ は、接続によって実行される処理の種類、使用可能  
な合計スレッド数まざまなオプションの設定に基づいてユーザ接続に  
さまざまな数のカーネル・スレッドを割り当てます。  
パフォーマンス&チューニング・ガイド  
123  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
プロセス・スレッド・モデル  
スレッド不足エラー  
発行したクエリの開始に必要なサーレッドが不足している場合はの  
ようなエラーが発生します。  
Not enough server threads available for this query  
この状況はぐに解消される場合もありますのクエリが完了してからク  
エリを発行すると使用可能なスレッドが増えるためエリが成功する場合  
がありますの状況が続く場合はの項で説明するようにーバを再起  
動し、Sybase IQ スレッド数にさらに大きな値を指定する必要があります。  
スレッド使用を管理するための Sybase IQ オプション  
Sybase IQ には、スレッド使用の管理に役立つ次のオプションがあります。  
Sybase IQ に使用可能な最大スレッド数を設定するには、サーバ起動オプ  
ション -iqmt を設定します。デフォルト値は接続数と CPU 数によって計  
算され、通常、デフォルト値をそのまま使用できます。  
サーバ内の内部実行スレッドのスタッイズを設定するにはーバ  
起動オプション -iqtss を設定します。通常はデフォルト値で十分ですが、  
複雑なクエリを実行したときにタックの深さがこの制限を超えている  
ことを示すエラーが返された場合はを増やします-iqmt および -iqtss  
の詳細についてはSybase IQ ユーティリティ・ガイド「第 1 章 デー  
タベース・サーバの実行」を参照してください。  
ユーザ 1 人あたりに使用するスレッド数の最大値を設定するには、SET  
OPTION MAX_IQ_THREADS_PER_CONNECTION コマンドを発行します。  
特定の動作に使用するリソースの量を制御する場合にも、このコマンドを  
使用しますとえばDBA INSERT または LOAD コマンドを使用する  
前にこのオプションを設定できます。  
124  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
5 章 システム・リソースの管理  
I/O の分散  
この項では、システムの I/O の分散がなぜ重要かについて説明します。パ  
フォーマンスを向上させる 2 つの方法としてィストライピングを使  
用する方法とファイルを別のディスクに格納する方法について説明しますま  
ッセーァイルのサイズを制御する方法についても説明します。  
ロー I/O (UNIX オペレーティング・システム )  
ほとんどの UNIX ファイル・システムでは、ディスクは固定サイズのパーティ  
ションに分割されます。パーティションは、オペレーティング・システムが個  
別にアクセスする物理的なディスク領域ですィスーティションは通  
常、ファイル・システム・モード UFS ファイル・システムまたはロー・モード  
のつのモードでアクセスされますー・モード ( 文字モードとも呼ばれる ) で  
はバッファを使用しない I/O を行い、通常、読み取りまたは書き込みシステム・  
コールごとにデバイスに対するデータ転送を行いますUNIX ファイステ  
ム である UFS モードは、バッファを使用する I/O であり、バッファにデータを  
蓄積してからバッファ全体を一度に転送します。  
作成したデータベースまたは dbspace は、ロー・デバイスまたはファイル・シ  
ステム・ファイルに格納できます。Sybase IQ は指定されたパス名から、それ  
がロー・パーティションかファイル・システム・ファイルかを自動的に判断し  
ます。ロー・パーティションは任意のサイズに設定できます。  
詳細についてはSybase IQ システム管理ガイド』の「第 5 章 データベース・  
オブジェクトの使用「データベース・オブジェクトの使用」の項を参照し  
てください。  
ディスク・ストライピングの使用  
従来のファイル管理システムでは定のディスクにファイルを格納できます。  
したがってべてのファイルの操作は1 台のディスク・ドライブに対して行  
われます数のディスライブにわたって理デバイスまたはボリュー  
ムを作成できるオペレーティング・システムもあります。最初のディスク・ド  
ライブでファイルが満杯になると、論理ボリュームの次のドライブに自動的に  
継続されます。この機能によって最大ファイル・サイズが大きくなり、ディス  
クが一杯になるまで 1 台のディスクに対してアクティビティが実行されます。  
パフォーマンス&チューニング・ガイド  
125  
Download from Www.Somanuals.com. All Manuals Search And Download.  
           
I/O の分散  
ディスクにファイルを格納するまったく別の方法もありますィスト  
ライピングは数のディスライブに 1 つのファイルのデータを分散す  
る場合に使用する一般的な方法です。ディスク・ストライピングを使用する  
続するディスク・ブロックをストライプ・ディスク・ドライブに格納で  
きます。ストライピングによって、1 つの論理ディスクに 1 つ以上の物理ディ  
スク ( またはディスク・パーティション ) が結合されます。ストライプ・ディ  
スクでは、I/O の転送が、コンポーネントの複数の物理デバイスに分散され、  
並列実行されます。このため、1 台のディスクを使用するよりも、パフォーマ  
ンスが大幅に向上します。  
ディスク・ストライピングではなるディスクにブロックを格納します最  
初のブロックは、最初のドライブに格納されます。2 番目のブロックは、2 番  
目のドライブに格納されます。すべてのドライブを使用すると、最初に戻り、  
追加のブロックを各ドライブに格納していきますィストライピング  
の最大の特長は数のディスライブに対してランダムにデータを分散  
できる点ですトライィスクに格納されたファイルにランダムな操作  
を行うため、ストライプ・セットのすべてのドライブが均等にビジーになり、  
1 秒あたりのディスク操作の数が最大となります。これは、データベース環境  
において非常に有効な方法です。  
オペレーティング・システムやハードウェアが提供するディスク・ストライピン  
グ、または Sybase IQ に内蔵されたディスク・ストライピングを使用できます。  
UNIX におけるディスク・ストライピングの設定  
ディスク・ストライピングに対応している UNIX システムには理ディスク  
をストライバイスに設定するユーティリティがあります細について  
は、UNIX システムのマニュアルを参照してください。  
Windows におけるディスク・ストライピングの設定  
Windows システムでは、適切な SCSI-2 ディスク・コントローラの機能によっ  
て、ハードウェア・ディスク・ストライピングを使用します。ハードウェア・  
ストライピングをサポートしていないマシンでもータベースに複数のディ  
スクを使用できる場合は、Windows ストライピングを使用して、ディスク I/O  
を複数のディスクに分散できます。[ ディスクの管理 ] を使用して Windows ス  
トライピングを設定してください。  
126  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
5 章 システム・リソースの管理  
推奨されるディスク・ストライピング  
次に、ディスク・ストライピングの基本的な規則ついて説明します。  
パフォーマンスを最大にするには、ストライプ・ファイル・システムの  
ディスクを複数のディスク・コントローラに分散させる必要があります。  
ただし、1 台のディスク・コントローラに多くのディスクを割り当てない  
ように注意してください。通常の SCSI マシンでは、1 台のコントローラ  
2 3 台のディスクを割り当てることができます細についてはご  
使用のハードウェアのマニュアルを参照してください。  
ディスクは、テープ・ドライブまたは CD-ROM などの低速デバイスとは  
異なるコントローラに配置してくださいじコントローラにディスクを  
配置すると、ディスク・コントローラの速度が低下します。  
ストライプのサーバ CPU 1 台あたりに 4 台のディスクを割り付けます。  
個々のディスクは等のデバイスである必要がありますまりイ  
ズとフォーマットが同じできるだけ同一ブランドのデバイスを使用す  
る必要があります様が異なると常は最小のディスクのサイズが使  
用されるためのディスク領域が無駄になる場合があります最  
も低速のディスクの速度が使用されることがあります。  
通常ァイル・ストライピングに使用するディスクを、スワップ・パー  
ティションとして使用するなど、他の目的には使用しないでください。  
ルート・ファイル・システムを含むディスクはしてストライプ・デバ  
イスの一部として使用しないでください。  
通常は、可能なかぎりディスク・ストライピングを使用してください。  
注意 データをロードする際に最良の結果を得るには、ストライプ・ディスク  
にあるフラット・ファイルにデータをダンプしてから、LOAD TABLE コマン  
ドを使用して、Sybase IQ にデータを読み込みます。  
内部ストライピング  
Sybase IQ では、一連の dbspace ( ファイルまたはデバイスのロー・パーティ  
ション ) にブロック単位で情報を格納しますィスク・ストライピングを使  
用している場合Sybase IQ 使用可能な領域があるすべての dbspace にデー  
タを分散させますの方法では複数のディスク・スピンドルを使用して高  
速な並列ディスク書き込みを可能にします。  
パフォーマンス&チューニング・ガイド  
127  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
I/O の分散  
ディスク・ストライピング・オプション  
この項では、Sybase IQ で提供されているオプションを使用して、サードパー  
ティ製のソフトウェアを使用しないでディストライピングを行う方法に  
ついて説明します。サードパーティ製のソフトウェアとハードウェアによる  
ディストライピングを使用している場合はの説明に従う必要はあり  
ません。  
ディスク・ストライピン  
グの ON/OFF  
次に、ディスク・ストライピングの ON/OFF に使用する構文を示します。  
SET OPTION "PUBLIC".DISK_STRIPING = { ON | OFF }  
DISK_STRIPING オプションのデフォルト値はべてのプラットフォームで  
ON となります。ディスク・ストライピングが ON で、dbspace に使用可能な  
領域がある場合はべての dbspace に入力データが分散されますィス・  
ストライピングが OFF の場合は、論理ファイルの先頭から dbspace ( ディス  
ク・セグメント ) に格納され、一度に 1 つのディスク・セグメントが格納され  
ます。  
DISK_STRIPING オプションの値の変更を有効にするには、Sybase IQ サーバ  
を再起動する必要があります。  
データベース・オプション MAIN_DISK_KB_PER_STRIPE および  
TEMP_DISK_KB_PER_STRIPE は、ディスク・ストライピング・アルゴ  
リズムが IQ メイン・ストアと IQ テンポラリ・ストアの次のストライプ  
に移動する前に、各 dbspace に書き込まれるキロバイト (KB) 数を定義し  
ます。これらのオプションのデフォルト値は 1 で、これは 1 ページに切  
り上げられます。  
dbspace を削除するにはィスク・ストラピングがオンのときに DROP  
DBSPACE コマンドを使用します。ただし、dbspace を削除する前に  
sp_iqrelocate ストアド・プロシージャを使用して、dbspace 内のすべて  
のデータを再配置します。ディスク・ストラピングでは、データが複数  
dbspace に分散されるため、多数のテーブルとインデックスの再配置が  
必要になることがあります。sp_iqdbspaceinfo および sp_iqdbspace ス  
トアド・プロシージャを使用して、dbspace 上に存在するテーブルとイン  
デックスを確認します。  
複数の dbspace の使用  
複数の dbspace を使用することによって、オペレーティング・システムの複数  
のファイルまたはパーティションに Sybase IQ とテンポラリ・データを分割で  
きます。これらのファイルは、複数のディスクに分散できます。  
ディスク・ストライピングと同様に続するデータベース・ファイルを複数  
のドライブに分散することによってランダムに格納できまCREATE  
DBSPACE コマンドを使用して、Sybase IQ とテンポラリ・データにセグメン  
トを追加できます。  
128  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
5 章 システム・リソースの管理  
dbspace の作成時期  
可能なかぎり、データベース作成時にすべての dbspace を割り付けます。  
dbspace を後で追加する場合、Sybase IQ は古い dbspace と新しい dbspace の両  
方に新しいデータをストライプします新のタイプによってトライピン  
グのバランスがとれる場合や、バランスが崩れたままになる場合があります。  
ストライピングのバランスが再びとれるかどうかはージョン管理入れ  
替わる」ページ数によって決まります。  
戦略的なファイルの格納  
ランダム・アクセス・ファイル専用のディスク・ドライブ数、およびこれらの  
ファイルに対して実行される 1 秒あたりの操作数を増やすことによってン  
クセァイルに関連するパフォーマンスを向上させることができ  
ます。ランダム・ファイルには、IQ ストア、テンポラリ・ストア、カタログ・  
ストア、プログラム (Sybase IQ 実行ファイル、ユーザおよびストアド・プロ  
シージャ、アプリケーション )、オペレーティング・システム・ファイルのラ  
ンダム・ファイルがあります。  
一方、順次アクセス・ファイルに関連するパフォーマンスは、専用ディスク・  
ドライブに格納しのプロセスとの競合をなくすことによって向上させるこ  
とができます次ファイルにはランザクション・ログやメッセージ・ロ  
グ・ファイルがあります。  
ディスク・ボトルネックを防止するために、次の注意に従ってください。  
ランダム・ディスク I/O を順次ディスク I/O から分離する。  
Adaptive Server Enterprise などの他のデータベースのプロキーブルの  
I/O から Sybase IQ データベース I/O を分離する。  
IQ ストアタロトアンポラトアAdaptive Server Enterprise  
などのプロキシ・データベースからランザクション・ログとメッセー  
ジ・ログを分離する。  
データベース・ファイルンポラリ dbspaceランザクション・ログ・  
ファイルをデータベース・サーバと同じ物理マシン上に配置する。  
トランザクション・ログ・ファイル  
トランザクション・ログ・ファイルには、Sybase IQ がシステム障害から復旧  
するための情報が記録されていますのファイルのデフォルトのファイル拡  
張子は .log です。  
トランザクション・ログ・ファイルを移動したり、名前を変更したりするに  
は、トランザクション・ログ・ユーティリティ (dblog) を使用します。構文と  
詳細についてはSybase IQ ユーティリティ・ガイド「第 3 章 データベー  
ス管理ユーティリティ」を参照してください。  
パフォーマンス&チューニング・ガイド  
129  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
I/O の分散  
警告! Sybase IQ のトランザクション・ログ・ファイルは、多くのリレーショ  
ナル・データベースのトランザクション・ログ・ファイルとは異なりますな  
んらかの理由で ( ログ・ファイルではなく ) データベース・ファイルが失われ  
た場合は、データベースが失われます。ただし、バックアップを正しく実行  
している場合は、データベースを再ロードできます。  
トランザクション・ログ  
のトランケーション  
Sybase IQ は、システム障害からリカバリするために必要な情報をトランザク  
ション・ログに記録します。コミットされるトランザクションごとにログに記  
録される情報は少量ですが、トランザクション・ログのサイズは増え続けます。  
データを変更するトランザクション数が多いシステムでは、時間の経過ととも  
にログが非常に大きくなる場合があります。  
ログをトランケートするには、関係する Sybase IQ サーバをオフラインにする  
必要があります。ログをトランケートする頻度は、実際のところ Sybase IQ シ  
ステムのサポートを担当している DBA 次第であり、ログ・ファイルの増大の  
度合いとサイトの運用手順によって異なります低でも月 1 グ・ファ  
イルが 100MB を超えている場合はそれより多い頻度でログのトランケーショ  
ン・プロシージャをスケジュールしてください。  
5-7 に、Sybase IQ でトランザクション・ログをトランケートする方法を示  
します。  
5-7: トランザクション・ログのトランケーション  
データベースの種類  
使用する方法  
詳細の参照先  
非マルチプレックス  
–m スイッチ。これにより「非マルチプレックス・デー  
すべてのデータベースで各 タベースのトランザクショ  
チェックポイント後にトラ ン・ログをトランケートす  
ンザクション・ログがトラ るには」  
ンケートされる。  
マルチプレックス  
稼働中  
DELETE_OLD_LOGS デー 「マルチプレックス・データ  
タベース・オプション  
ベースのトランザクショ  
るには」  
dbbackup マンSybase IQ ユーティリティ・  
ン・ユーティリティ  
ガイド』のバックアップ・  
ユーティリティ (dbbackup)  
適切な方法を使用してください。Sybase IQ データベースの複写は、本質的に  
トランザクション・ログの情報に依存します。このため、マルチプレックス・  
データベースでは DELETE_OLD_LOGS オプションだけを使用します (「マル  
チプレックス・データベースのトランザクション・ログのトランケーション」  
を参照してください )。また、トランザクション・ログには、Sybase の製品の  
保守契約を結んでいるサポーンタが問題を診断し現するための有用  
な情報が記録されています。どちらの方法を使用する場合も、後でサポート・  
センタが診断するときにログが必要になった場合に備えて存のログのアー  
カイブ処理 ( ログのコピーの保管 ) を指定してください。  
130  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
5 章 システム・リソースの管理  
非マルチプレックス・  
データベースのトランザ  
クション・ログのトラン  
ケーション  
–m サーバ起動スイッチを使用して、非マルチプレックス・データベースのト  
ランザクション・ログをトランケートします。–m サーバ起動スイッチを永続  
的に設定したままにすることはおすすめしませんのスイッチはランザ  
クション・ログのトランケーションのために Sybase IQ を起動するときだけ使  
用してください。これをどのように行うかは DBA 次第ですが、次に示す手順  
を参考にしてください。  
非マルチプレックス・データベースのトランザクション・ログをトランケート  
するには  
1
サーバ・スイッチ .cfg ファイルのコピーを作成しグのトランケーショ  
ン設定用のファイルであることを示す名前を付けますのファイルを編  
集し–m スイッチを追加します。  
2
3
4
.db ファイルおよび .log ファイルのコピー作成を含めて全なバックアッ  
プ手順を実行します。  
Sybase IQ を停止します。iq.msg ファイルに ‘CloseDatabase’ が書き込まれ  
たことを確認します。  
–m オプションが含まれる設定ファイルを使って Sybase IQ を再起動しま  
す。この時点では、ユーザ・アクセスやトランザクションを許可しない  
でください。  
5
Sybase IQ を停止し、–m オプションが設定されていない設定ファイルを  
使って再起動します。  
マルチプレックス・  
データベースのトラ  
ンザクション・ログ  
のトランケーション  
マルチプレックス・データベースのトランザクション・ログをトランケート  
するには  
1
書き込みサーバのデータベースをバックアップしていない場合はック  
アップします。  
2
書き込みサーバで、次のように DELETE_OLD_LOGS オプションを設定  
します。  
SET OPTION Public.Delete_Old_Logs=’On’  
3
書き込みサーバの dbremote を停止し、-x コマンド・ライン・スイッチを  
指定して再起動します ( そのために、書き込みサーバのデータベース・  
ディレクトリにある start_dbremote.bat スクリプトの特別バージョンを作  
成します )れによりき込みサーバでログがトランケートされます。  
次に例を示します。  
cd ¥Server01¥mpxdb¥cmd /c  
start dbremote -q -v -x -o  
"d:¥Server01¥mpxdb¥dbremote.log" -c  
"uid=DBA;pwd=SQL;eng=Server01;dbf=  
パフォーマンス&チューニング・ガイド  
131  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
I/O の分散  
d:¥Server01¥mpxdb¥mpxdb;  
links=tcpip{port=1704;host=FIONA-PC}"  
4
書き込みサーバで、次のように DELETE_OLD_LOGS オプションをオフ  
にします。  
SET OPTION Public.Delete_Old_Logs=’Off’  
注意 クエリ・サーバのトランザクション・ログは、書き込みサーバのログが  
最後にトランケートされた時期にかかわらず期中に常にトランケートされ  
ます。  
メッセージ・ログ  
データベースごとにメッセージ・ログ・ファイルが作成されますのファイ  
ルのデフォルトのファイル名はdbname.iqmsg ですだしータベースを  
作成するときに別の名前を付けることができますッセージ・ログ・ファイ  
ルは、最初のユーザがデータベースに接続すると作成されます。  
デフォルトでは、Sybase IQ はエラー、状態、挿入通知メッセージを含むすべ  
てのメッセージをメッセージ・ログ・ファイルに記録します。LOAD および  
INSERT 文の通知メッセージを OFF に設定できます。  
サイトによっては、挿入の数、LOAD オプションと NOTIFY_MODULUS デー  
タベース・オプションの設定、その他の条件が原因で、メッセージ・ログ・  
ファイルが急速に増大する傾向があります。Sybase IQ では、メッセージ・ロ  
グを循環させて、このファイルのサイズを制限できます。  
メッセーグの循環を有効にした場合ァイルが IQMSG_LENGTH_MB  
データベープションで指定した最大サイズに達するとしいメッセー  
ジはファイルの先頭から書き込まれます存のメッセージは単位で上書  
きされます。  
循環を有効にしたときは、新しいメッセージが挿入された場所を <next msg  
insertion place>タグで知ることができますグの循環が有効になって  
おりァイル内の最後のメッセージが最新のメッセージとはかぎらないこと  
に注意を促すために、ファイルの先頭と末尾に追加のタグが表示されます。  
メッセージ・ログの循環を有効にしてログ・ファイルの最大サイズを設定する方  
法についてはSybase IQ リファレンニュアルIQMSG_LENGTH_MB  
オプション」を参照してください。  
132  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
5 章 システム・リソースの管理  
挿入、削除、同期のための作業領域  
データの挿入や削除、ジョイン・インデックスの同期を行う場合、Sybase IQ  
では、IQ ストアに作業領域が必要となります。作業領域を必要とするトラン  
ザクションがコミットされると、この領域は他の目的に再利用されます。  
通常、IQ ストアに適切な割合の空き領域が維持されるかぎり、十分な空き領  
域を確保できますだしータを削除する場合ータのサイズやデータ  
ベーージ間のデータの分散によってきな作業領域が必要となること  
があります数のページにデータが分散しているデータベースの大部分を削  
除する場合は、データベースのサイズを一時的に 2 倍にできます。  
予約領域のオプションの設定  
MAIN_RESERVED_DBSPACE_MB TEMP_RESERVED_DBSPACE_MB の  
2 つのデータベース・オプションによって、Sybase IQ が特定の処理のために  
予約する領域の量を制御します細についてはSybase IQ システム管理ガ  
イド』の「領域不足条件を処理するための領域の予約」を参照してください。  
リソース使用を調整するオプション  
Sybase IQ データベースの同時ユーザ数、実行するクエリ、使用可能な処理ス  
レッドおよびメモリによって、パフォーマンス、メモリ使用、ディスク I/O に  
大きな影響を与える場合があります。Sybase IQ にあるリソースの使用を調整  
するオプションによってまざまなユーザ数やクエリに対応できますの  
オプションがあります。  
現在のデータベースにのみ影響を与える SET OPTION コマンド・オプ  
ション  
データベース・サーバ全体に影響を与えるコマンドライン・オプション  
現在の接続にのみ影響を与える接続パラメータ  
パラメータや、オプションが有効になる時期、オプションを単一の接続と  
PUBLIC グループの両方に設定できるかどうかを含めて、これらのオプショ  
ンの詳細についてはSybase IQ リファレンス・マニュアル』を参照してくだ  
さい。  
テーブルの最適化についてはSybase IQ システム管理ガイド』の「記憶領域  
とクエリ・パフォーマンスの最適化」を参照してください。  
パフォーマンス&チューニング・ガイド  
133  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
リソース使用を調整するオプション  
同時クエリの制限  
-iqgovern コマンドライン・オプションを使用すると、サーバの同時クエリの  
数を制御できますれはイセンスによって規制される接続数とは異なり  
ます。  
-iqgovern スイッチはモリを最も効果的に使用するためにッファのデー  
タのディスクへのページングを最適化します。-iqgovern のデフォルト値は、  
(2 x CPU ) +4 です。  
使用可能な CPU 数の設定  
Sybase IQ 起動コマンドの -iqnumbercpus スイッチを使用すると、使用できる  
CPU の数を指定できます。このスイッチは、次のマシンでのみ使用すること  
をおすすめします。  
Intel® CPU を搭載し、ハイパースレッディングが有効になっているマ  
シン  
オペレーティング・システムのユーティリティを使用して、Sybase IQ を  
マシン内の CPU の一部に制限しているマシン  
詳細についてはSybase IQ システム管理ガイドCPU 数の設定を参照  
してください。  
クエリによるテンポラリ dbspace の使用の制限  
SET コマンドの QUERY_TEMP_SPACE_LIMIT オプションを使用すると、  
1 つのクエリに使用可能なテンポラリ dbspace の量を制限できます。デフォル  
トでは、クエリは 2000MB のテンポラリ dbspace を使用できます。  
クエリが発行されると、Sybase IQ は、クエリの解析に必要な一時領域を推定  
します。ソート、ハッシュ、ロー・ストアに使用する結果領域の合計が、現在  
QUERY_TEMP_SPACE_LIMIT 設定を超える場合、クエリは拒否され、次  
のようなメッセージが表示されます。  
Query rejected because it exceeds total space resource limit  
このオプションを 0 に設定すると限がないため時領域の条件によって  
クエリが拒否されることはありません。  
134  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
           
5 章 システム・リソースの管理  
返されるローによるクエリの制限  
SET コマンドの QUERY_ROWS_RETURNED_LIMIT オプションを設定する  
エリ・オプティマイザは量のリソースを消費する可能性のあるクエ  
リを拒否しますエリからの結果セットがこのオプションの値を超えると推  
定される場合エリ・オプティマイザはクエリを拒否しのメッセージが  
表示されます。  
Query rejected because it exceed resource:  
Query_Rows_Returned_Limit  
このオプションを使用する場合は量のリソースを消費するクエリのみを拒  
否するように設定します。  
カーソルのスクロールの禁止  
ホスト変数を宣言せずにカーソルのスクロールを使用すると、Sybase IQ は、  
クエリ結果をバッファする一時的なストア・ノードを作成しますれはテ  
ンポラリ・ストア・バッファ・キャッシュとは異なります。百万単位のローな  
常に多くローを検索する場合のストア・ノードには多くのメモリが  
必要となります。  
すべてのカーソルがスクロールしないように設定することによって、こ  
のテンポラリ・ストア・ノードを除去できます。そのためには、  
FORCE_NO_SCROLL_CURSORS オプションを ON に設定します。非  
常に多くのローを検索する場合、このオプションを使用して、一時的な  
記憶領域の必要量を節約できます。このオプションは、新しいクエリに  
対してすぐに有効になります。  
アプリケーションでカーソルのスクロールを使用しない場合はれを永続的  
PUBLIC オプションに設定します。メモリの節約になるため、クエリのパ  
フォーマンスが大幅に向上します。  
カーソル数の制限  
文の数の制限  
MAX_CURSOR_COUNT オプションは続が一度に使用できるカーソルの最  
大数を制限するリソース・ガバナーを指定します。デフォルトの値は 50 です。  
このオプションを 0 に設定すると、カーソル数は無制限になります。  
MAX_STATEMENT_COUNT オプションは続が一度に使用できる準備文の  
最大数を制限するリソース・ガバナーを指定します。  
パフォーマンス&チューニング・ガイド  
135  
Download from Www.Somanuals.com. All Manuals Search And Download.  
           
リソース使用を調整するオプション  
キャッシュ・ページのプリフェッチ  
SET コマンドの PREFETCH_BUFFER_LIMIT オプションは、Sybase IQ がプ  
リフェッチ ( データベース・ページの先読み ) に使用できるキャッシュ・ペー  
ジの数を定義しますのオプションのデフォルト値は 0 ですのオプショ  
ンはSybase 製品の保守契約を結んでいるサポーンタから指示があった  
場合にだけ設定してください。詳細についてはSybase IQ リファレンス・マ  
ニュアルPREFETCH_BUFFER_LIMIT オプションを参照してください。  
SET コマンドの BT_PREFETCH_MAX_MISS オプションは、特定のクエリで  
ページのプリフェッチを継続するかどうかを決定します。HG インデックスを  
使用するクエリの実行速度が予想より遅い場合はのオプションの値を徐々  
に増やしてみます。詳細についてはSybase IQ リファレンス・マニュアル』  
BT_PREFETCH_MAX_MISS オプション」を参照してください。  
一般的な使用のための最適化  
Sybase IQ は、開いたカーソルの数を追跡して、メモリを割り付けます。特定  
の状況においては、USER_RESOURCE_RESERVATION オプションによっ  
品を使用している思われる現在のカーソル数の最小値を調整しンポ  
ラリ・キャッシュから割り付けるメモリをさらに節約できます。  
このオプションは重な分析の結果際に必要であると判断された場合に  
のみ設定する必要がありますのオプションを設定する場合はSybase 製品  
の保守契約を結んでいるサポート・センタに連絡してください。  
プリフェッチされるローの数の制御  
プリフェッチは対位置 1 または相対位置 0 のみをフェッチするカーソルの  
パフォーマンスを向上させるために使用します2 つの接続パラメータを使用  
して、カーソル・プリフェッチのデフォルトを変更できます。PrefetchRows  
(PROWS) リフェッチされるローの数を設定しますPrefetchBuffer (PBUF)  
リフェッチされたローを格納するためにの接続に使用できるメモリ  
を設定しますリフェッチするローの数を増やすとの特定の条件ではパ  
フォーマンスが向上する可能性があります。  
アプリケーションが数回の絶対フェッチで数多くのロー ( 数百ロー以上 )  
をフェッチする場合  
アプリケーションがローを高速でフェッチしライアントとサーバが同  
じマシン上にあるか、高速ネットワークで接続されている  
クライアント/サーバ通信がダイヤルアップ・リンクやワイド・エリア・  
ネットワークなどの低速ネットワークで行われている場合  
136  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
5 章 システム・リソースの管理  
リソースを効率的に利用するための他の方法  
この項ではフォーマンスを向上させィスク領域をさらに有効に活用す  
るためのシステムの調整方法について説明します。  
マルチプレックス・データベースのディスク領域の管理  
ユーザがいずれかのサーバでいバージョンのテーブルを必要とするトラン  
ザクションを実行している間はSybase IQ はそのテーブルを削除できません。  
このためルチプレックータベースでテーブルの更新とクエリが同時  
に発生すると、Sybase IQ が大量のディスク領域を消費することがあります。  
消費される領域の量はータとインデックスの性質および更新の頻度によっ  
て決まります。  
クエリする必要がなくなった古いバージョンを書き込みサーバが削除できる  
ようにすればィスク・ブロックを解放できますいテーブル・バージョ  
ンをリカバリできるようにべてのサーバのユーザ全員が現在のトランザク  
ションを定期的にコミットする必要がありますれでーバは稼働し続け  
ることができ、すべての機能を利用できます。各クエリ・サーバでのテーブ  
ル・バージョンの使用についての最新情報を書き込みサーバに転送するため  
に、dbremote プロセスをすべて実行し続ける必要があります。  
クエリ・サーバ間のロード・バランス  
IQ ネットワーク・クライアントを使用してルチプレックス・クエリ・サー  
バ間のクエリ負荷のバランスをとれる場合がありますの方法ではール  
内のマシンの作業負荷に応じてマシンにクライアント接続をディスパッチ  
する中間システムが必要となります。  
この方法を使用するには、クライアント・システムで、中間ロード・バラン  
ス・ステムの IP ドレスとポート番号および汎用サーバ名を指定、  
VerifyServerName 接続パラメータを NO に設定した特別な ODBC DSN を作成  
します。クライアントがこの DSN を使って接続すると、ロード・バランサは  
負荷が最も少ないと判断したマシンに対して接続を確立します。  
クエリ・サーバのロード・バランスで使用する ODBC DSN の定義方法につい  
てはSybase IQ システム管理ガイド』の「第 4 章 接続パラメータと通信パ  
ラメータVerifyServerName 通信パラメータ (Verify)を参照してください。  
データベース・アクセスの制限  
クエリのパフォーマンスを向上させるには能なかぎりータベースを読  
み取り専用に設定するか要な更新を使用頻度の少ない時間帯にスケジュー  
ルします。Sybase IQ では、テーブルへの挿入や削除を実行している間に、複  
数のクエリ・ユーザがそのテーブルを読み込むことができますだしー  
タベースを同時更新している間は、パフォーマンスが低下します。  
パフォーマンス&チューニング・ガイド  
137  
Download from Www.Somanuals.com. All Manuals Search And Download.  
           
インデックスのヒント  
ディスクのキャッシュ  
ディスク・キャッシュとはィスク・ブロックのコピーを一時的に格納する  
ためにペレーティング・システムによって使用されるメモリですァイ  
ル・システムに基づくディスクの読み書きは、通常、すべてディスク・キャッ  
シュを通じて行われます。アプリケーションから見ると、ディスク・キャッ  
シュによる読み書きは、すべて実際のディスク操作と同等です。  
オペレーティンステムは定された方法と動的方法を使用してディス  
ク・キャッシュにメモリを割り付けます定された割り当てではらかじ  
め規定されたメモリ量が使用されます。通常、10 15% のメモリが割り当て  
られます。オペレーティング・システムは通常、LRU ( 一番最後に使用された )  
アルゴリズムを使用してこの作業領域を管理します的割り付けではペ  
レーティンステムが実行中にディスャッシュの割り付けを決定し  
ますれによってきるだけ多くのメモリを有効に使用して際のメモ  
リの需要とディスクのデータの必要性のバランスを保ちます。  
インデックスのヒント  
以下の項ではンデックスの選択と管理に関するヒントについて説明します。  
詳細についてはSybase IQ システム管理ガイド』の「第 6 Sybase IQ イン  
デックスの使用」を参照してください。  
正しいインデックス・タイプの選択  
カラム・データに適したインデックス・タイプを選択することが重要です。  
Sybase IQ は、いくつかのインデックスを自動的に設定します。具体的には、射  
影を最適化するデフォルンデックスをすべてのカラムに設定、  
UNIQUEPRIMARY KEYSFOREIGN KEYS HG インデックスを設定しま  
す。これらのインデックスはいくつかの目的には役立ちますが、特定のクエリ  
をできるだけ迅速に処理するには別のインデックスが必要となります。カラム  
に設定できるインデックス・タイプが複数ある場合、Sybase IQ は最適なイン  
デックス・タイプを選択します。  
Sybase IQ のクエリ・オプティマイザには、クエリの 1 つまたは複数のカラム  
に追加のインデックスがあるとオプティマイザに有効な場合にメッセージを  
生成するインデックス・アドバイザという機能がありますンデックス・ア  
ドバイザをアクティブにするには、INDEX_ADVISOR オプションを ON に設  
定します。メッセージはクエリ・プランの一部として出力されます。クエリ・  
プランが有効になっていない場合はッセージ・ログ (.iqmsg) に単独のメッ  
セージとして出力されます。出力の形式は OWNER.TABLE.COLUMN となり  
ます。詳細についてはSybase IQ リファレンス・マニュアル』の「データ  
ベープションINDEX_ADVISOR オプションを参照してください。  
138  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
             
5 章 システム・リソースの管理  
ジョイン・クエリの WHERE 句で参照されるグループ化カラムの LF または  
HG に対しては、デフォルト・インデックス以外に LF または HG インデック  
スを作成する必要があります。WHERE 句で参照されるカラムに LF または  
HG インデックスが設定されていない場合は、Sybase IQ のクエリ・オプティ  
マイザが最適な実行プランを生成できない可能性がありますHAVING 句で参  
照される非集合カラムでも、デフォルト・インデックス以外に LF または HG  
インデックスを設定する必要があります。次に例を示します。  
SELECT c.name, SUM(l.price * (1 - l.discount))  
FROM customer c, orders o, lineitem l  
WHERE c.custkey = o.custkey  
AND o.orderkey = l.orderkey  
AND o.orderdate >= "1994-01-01"  
AND o.orderdate < "1995-01-01"  
GROUP by c.name  
HAVING c.name NOT LIKE "I%"  
AND SUM(l.price * (1 - l.discount)) > 0.50  
ORDER BY 2 desc  
この例に示す l.price l.discount の近くにあるすべてのカラムには、デフォ  
ルト・インデックス以外に、LF または HG インデックスがあります。  
ジョイン・インデックスの使用  
ユーザは同時に複数のテーブルのデータを参照することがよくありますの  
データはエリ作成時にジョインするかたはジョイン・インデックスを  
作成することによって事前にジョインできますに同じ方法でジョインされ  
るカラムにジョインデックスを作成するとエリのパフォーマンスが  
向上することがあります。  
ジョイン・インデックスのロードにはなりの時間と領域が必要なため定  
期的に必要となるジョインにのみジョイン・インデックスを作成します。  
Sybase IQ のジョイン・インデックスでは、1 対多および 1 1 のジョイン関  
係がサポートされます。  
削除のための十分なディスク領域の確保  
デーーを削除する場合Sybase IQ 除するデータを含むデータベー  
ス・ページごとにバージョン・ページを作成します除トランザクションが  
実行されるまでージョンは保持されますのためータを削除する場  
合、ディスク領域の追加が必要な場合があります。詳細については重複し  
たバージョンと削除参照してください。  
パフォーマンス&チューニング・ガイド  
139  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
データベース・サイズと構造の管理  
データベース・サイズと構造の管理  
この項ではータベース設計を改善しータを管理するための考え方につ  
いて説明します。  
データベース・サイズの管理  
データベースのサイズは成するインデックスと格納するデータ量に大きく  
依存しますーザが発行するクエリに必要とされるインデックスをすべて作  
成することによってエリ処理を高速化できますだしーブルやイン  
デックスが必要ない場合は除できます除することによってィスク  
領域を解放しードとバックアップの速度を向上させックアップに必要  
なアーカイブの記憶領域を小さくできます。  
任意のテーブルに格納されたデータ量を制御するには、必要のないデータ・  
ローを最適な方法で削除してください。Adaptive Server Anywhere データベー  
スのデータがデータベースに含まれる場合は、Anywhere データの削除を実行  
するだけで不要なデータを削除できます。コマンド構文は互換性があります。  
Sybase IQ Transact-SQL と互換性があるためAdaptive Server Enterprise デー  
タベースのデータも同様に削除できます。  
インデックスの断片化の制御  
内部インデックスの断片化はンデックージが最大ボリュームまで使  
用されていないときに発生します。  
ローの断片化はーが削除されたときに発生することがありますージの  
ロー全体を削除した場合のページは解放されますがージの一部のロー  
が未使用の場合は、未使用領域がディスクに残ります。  
テーブルに対する DML 操作 (INSERTUPDATEDELETE) によって、イン  
デックスの断片化が発生します片化をレポートする 2 つのストアロ  
シージャがあります。  
sp_iqrowdensity は、デフォルト・インデックス・レベルでのローの断片化  
をレポートしますsp_iqrowdensity プロシージャを参照してください。  
sp_iqindexfragmentation 助インデックス内の内部断片化をレポート  
しますsp_iqindexfragmentation プロシージャを参照してください。  
データベース管理者はラムのデフォルンデックスを補助する別のイ  
ンデックスを作成することがありますーブルからローが削除されるとこ  
れらのインデックスが必要以上の領域を使用する場合があります。  
どちらのプロシージャも対応策は示しませんータベース管理者はポー  
トされた情報を調べてンデックスの再作成編成構築などの対応策  
をとるかどうかを判断する必要があります。  
140  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
5 章 システム・リソースの管理  
カタログ・ファイル増大の最小化  
カタロァイルが増大するのは正常なことでの割合はアプリケーショ  
ンとカタログの内容によって異なります.DB ファイルのサイズがパフォー  
マンスに影響を与えることはなく.DB ファイル内の空きページが必要に応じ  
て再利用されますタログ・ファイルの増大を最小限に抑えるにはの方  
法を使用します。  
CREATE TABLE 文で IN SYSTEM を使用しない。  
システム・ストアド・プロシージャを実行した後で COMMIT 文を発行する。  
長時間実行されるトランザクションの最中に COMMIT 文を発行する。  
パフォーマンス向上のための非正規化  
正規化フォームでデータベースを作成した場合ンチマークを実行して意  
図的に正規化を解除してパフォーマンスを向上させることができます正規  
化については、以下のことが言えます。  
テーブルまたはカラムに対して可能  
事前に正規化されていることが前提  
データの使用方法の理解が必要  
非正規化する理由を次に示します。  
すべてのクエリにはフル」セットのジョイン・データへのアクセスが  
必要である。  
導出カラムの計算は複雑なため、selects のための格納が必要である。  
非正規化のリスク  
非正規化を正しく行うには、アプリケーションに関する十分な知識が必要とな  
るためフォーマンスに問題がある場合にのみ非正規化を実行してください。  
非正規化を行う場合、変更によってデータを最新の状態に保つためにどれだけ  
の作業が必要かを考慮する必要があります。  
これは、大量のデータの要約が頻繁に必要とされる意志決定支援アプリケー  
ションと個別にデータ変更を行うトランザクション処理要求との違いを示す  
良い例です正規化を行う場合定の処理の効率を向上させるために他  
の処理の効率が低下することがあります。  
どのような非正規化の方式にもータの整合性に問題がある可能性があるた  
め、アプリケーションの設計時に慎重に文書化し、注意する必要があります。  
パフォーマンス&チューニング・ガイド  
141  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
データベース・サイズと構造の管理  
非正規化の短所  
正規化の解除には、次の短所があります。  
非正規化を行うと、通常、検索は速くなりますが、更新は遅くなります。  
これは、DSS 環境ではさほど問題になりません。  
非正規化はずアプリケーションごとに行われるためプリケーショ  
ンを変更した場合は、再評価が必要となります。  
非正規化によってーブルのサイズが大きくなる場合がありますSybase  
IQ では、カラム・データの格納を最適化できるため、このことは問題では  
ありません。詳細についてはSybase IQ リファレンス・マニュアル』の  
CREATE TABLE 文」の「IQ UNIQUE 制約」とMINIMIZE_STORAGE オ  
プション」を参照してください。  
非正規化によってーディングが簡単になる場合とに複雑になる場  
合があります。  
非正規化のパフォーマンスの利点  
次に、何によってパフォーマンスが向上するかを示します。  
ジョインの必要性の最小化  
集約値の再計算 ( 選択時ではなくデータ変更時の計算 )  
テーブル数の低減  
非正規化の決定  
非正規化を行うかどうかを決定する場合、使用中の環境におけるアプリケー  
ションのデークセス要件と実際のパフォーマンス特性を分析する必要が  
あります。非正規化を行う場合は、次の項目について検討します。  
重要なクエリおよび予想される応答時間  
使用するテーブルまたはカラム、および 1 アクセスあたりのロー数  
通常のソート順  
同時予測  
アクセス頻度が最も高いテーブルのサイズ  
要約を計算するプロセスの有無  
パフォーマンス向上のためのジョイン・インデックス作成の有無  
142  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
5 章 システム・リソースの管理  
ロードを高速化するための UNION ALL ビューの使用  
非常に大きいテーブルのロード時間を最小限にするには、UNION ALL ビュー  
を使用しますSybase IQ ではータを ( たとえば日付ごとに ) 複数の独立し  
たベース・テーブルに分けて、テーブルを分割できます。データは、これらの  
小さいテーブルにロードします。そして、UNION ALL ビューを使ってテーブ  
ルを 1 つの論理的な統一体に結合し、この統一体に対してクエリを実行します。  
UNION ALL ビューは、管理が容易です。たとえば、データを月ごとに分割し  
ている場合は、1 つのテーブルを削除し、UNION ALL ビューの定義を更新す  
ることによって 1 か月分のデータ全体を削除できます付の範囲述部を追加  
することなく、年、四半期などに対応する多くのビュー定義を作成できます。  
UNION ALL ビューを作成するには、ベース・テーブルを別々の物理テーブル  
に分割する論理的手段を選択しますも一般的なのはごとに分割する方  
法です。  
たとえば一四半期のすべての月を含むビューを作成するにはのコマン  
ドを入力します。  
CREATE VIEW  
SELECT * JANUARY  
UNION ALL  
SELECT * FEBRUARY  
UNION ALL  
SELECT * MARCH  
UNION ALL  
月ごとに、1 つのベース・テーブル ( この例では JANUARYFEBRUARY、ま  
たは MARCH) にデータをロードできます。次の月は、同じカラムと同じイン  
デックス・タイプで構成された新しいテーブルにデータをロードします。  
構文の詳細についてはSybase IQ リファレンス・マニュアル』の「UNION  
演算」を参照してください。  
注意 UNION ALL ビューに対して INSERT...SELECT を実行することはできま  
せん。  
UNION ALL ビューを参照するクエリの最適化  
最適化が効果を発揮するためには、UNION ALL ビューのすべてのパーティ  
ションにすべてのインデックスが定義されている必要があります。  
DISTINCT を指定するクエリではUNION ALL ビューを使用すると・  
テーブルを使用するよりも実行速度が遅くなる傾向があります。  
パフォーマンス&チューニング・ガイド  
143  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
ロードを高速化するための UNION ALL ビューの使用  
Sybase IQ には、次のような UNION ALL ビューの特許取得済みの最適化が用  
意されています。  
UNION ALL ビューでの分割 GROUP BY  
UNION ALL ビューへのプッシュダウン・ジョイン  
UNION ALL ビューを参照するクエリのパフォーマンスを調整する必要がある  
場合は、Join_Preference データベース・オプションを設定してください。この  
オプションは、UNION ALL ビュー間のジョインに影響を与えます。これらの  
オプションの詳細についてはSybase IQ リファレンス・マニュアル』の「第  
2 章 データベース・オプション」を参照してください。  
UNION を分割されたテーブルとして扱えるのは、以下の制約条件がすべて満  
たされている場合にかぎられます。  
1 つまたは複数の UNION ALL が含まれる。  
UNION の各アームの FROM 句にテーブルが 1 つだけ含まれておりの  
テーブルが物理ベース・テーブルである。  
UNION のどのアームにも、DISTINCTRANK、集合関数、GROUP BY  
句がない。  
UNION の各アームに含まれる SELECT 句の中の各項目がカラムである。  
最初の UNION アームの SELECT リスト内のカラムのデータ型のシーケ  
ンスが、UNION の後続の各アームにおけるシーケンスと同じである。  
Sybase IQ リファレンス・マニュアルSELECT も参照してください。  
144  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
5 章 システム・リソースの管理  
ネットワーク・パフォーマンス  
以降の項ではットワーフォーマンスの問題を解決するための方法を  
示します。  
大量のデータ転送の向上  
大量のデータを同時に転送するとループット全体が低下して均応答時  
間が増加しますのような場合にパフォーマンスを向上させるための  
方法を示します。  
大量のデータ転送は、できるかぎり勤務時間外に行う。  
大量のデータ転送中は同時クエリの数を制限する。  
大量のデータ転送するときに、クエリと挿入を同時に実行しない。  
ストアド・プロシージャを使用して、トラフィックを低減する。  
ッファリングを使用してットワーク上の大きなバッチを移動  
する。  
大量のデータ転送を日常的に行う場合はのような転送に適したネット  
ワーク・ハードウェアの設置を検討する。たとえば次のような方法がある。  
トークン・リング - 大量のデータを転送する場合、イーサネットよ  
り応答が向上する。  
光ファイバ - 非常に高い帯域幅を提供するが、ネットワーク全体で  
使用するには高価すぎる。  
別のネットワーク - 最大ボリュームのワークステーションとサーバ  
間のネットワーク・トラフィックを処理するために使用する。  
ヘビー・ネットワーク・ユーザの分離  
5-2 のケース A では、2 つの異なるデータベース・サーバにアクセスするク  
ライアントが 1 枚のネットワーク・カードを使用していますのためー  
A とサーバ B にアクセスするクライアントは、ネットワーク上とネット  
ワーク・カードで競合します。ケース B では、サーバ A にアクセスするクラ  
イアントとサーバ B にアクセスするクライアントが別々のネットワーー  
ドを使用しています。  
異なるマシンをデータベーーバにするとらにパフォーマンスが向上  
しますなるデータベースのヘビーザを異なるマシンに分けることも  
できます。  
パフォーマンス&チューニング・ガイド  
145  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
ネットワーク・パフォーマンス  
5-2: ヘビー・ネットワーク・ユーザの分離  
少量のデータを小さなパケットに入れる  
ネットワーク上で少量のデータを送信する場合は、デフォルトのネットワー  
ク・ケッイズを小さいまま使用します ( デフォルトは 512 バイトです )。  
-p サーバ起動オプションは、最大パケット・サイズを指定するために使用し  
ますライアント・アプリケーションを使用してパケット・サイズを設定で  
きます。  
大量のデータを大きなパケットに入れる  
大量のデータを送受信するアプリケーションが多い場合はフォルトのネッ  
トワーク・パケット・サイズを大きくします。転送の数は少なくなりますが、  
データ転送量は多くなります。  
サーバ・レベルのプロセス  
サーバ・レベルで、できるかぎり多くのデータをフィルタします。  
146  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
6
パフォーマンスのモニタリングと  
チューニング  
この章について  
この章では、Sybase IQ のパフォーマンスのモニタリングに使用するツー  
をシステムが最大限に利用しているかどうかを確認します。Sybase IQ で  
のメモリ理スレッドィスクの使用方法についてよびリソース  
の使用を制御するための設定オプションについては「第 5 章 システム・  
内容  
トピック名  
ページ  
147  
Sybase IQ 環境の表示」  
157  
「バッファ・キャッシュのモニタリング」  
「バッファ・キャッシュの構造」  
169  
169  
「バッファ・マネージャのスラッシングの回避」  
「バッファ・キャッシュ・モニタリング・チェックリスト」  
CPU 使用率をモニタリングするシステム・ユーティリティ」  
173  
176  
Sybase IQ 環境の表示  
Sybase IQ のパフォーマンスをチューニングする最初の手順は、環境を調  
べることです。これは以下の方法で行うことができます。  
システム・モニタリング・ツールを使用します ( システムとサイトご  
とに、異なるツールが適切な場所に存在します )。  
Sybase IQ についての情報を表示するいずれかのストアド・プロシー  
ジャを使用します。詳細については、次の項を参照してください。  
インデックス・タイプが適切かどうかを確認します。インデックス・  
タイプの選択の詳細についてはSybase IQ システム管理ガイドの  
「第 6 Sybase IQ インデックスの使用」を参照してください。  
画面に表示される情報のうち、挿入通知メッセージと削除通知メッ  
セージを調べます。これらのメッセージの詳細についてはSybase  
IQ システム管理ガイド』の「第 7 章 データベースへのデータの入出  
力」を参照してください。  
パフォーマンス&チューニング・ガイド  
147  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
Sybase IQ 環境の表示  
Sybase IQ メッセージ・ファイルを調べます。デフォルトは dbname.iqmsg  
です。  
Sybase Central のパフォーマンス・モニタを使用します。  
ストアド・プロシージャベントの実行時間を追跡するためにプ  
ロシージャ・プロファイリングを使用します。  
ストアド・プロシージャを使用して情報を取得する  
Sybase IQ には、データベース情報を表示するストアド・プロシージャがいく  
つかあります。  
sp_iqconnection ーザ接続とバージョンについての統計を表示します。  
sp_iqcontext は、実行中の文についての情報を表示します。  
sp_iqcheckdb は、現在のデータベースの妥当性を検査します。  
sp_iqdbstatistics は、最後に実行された sp_iqcheckdb の結果をレポートし  
ます。  
sp_iqdbsize は、現在のデータベースのサイズを取得します。  
sp_iqspaceinfo ータベース内の各オブジェクトによる領域の使用状  
況を表示します。  
sp_iqstatus は、データベースのその他のステータス情報を表示します。  
sp_iqtablesize は、指定したテーブルのサイズを取得します。  
sp_iqgroupsize は、指定したグループのメンバをリストします。  
Sybase IQ の全ストアド・プロシージャの構文の詳細と例についてはSybase  
IQ リファレンス・マニュアル』を参照してください。  
Sybase Central パフォーマンス・モニタの使用  
Sybase Central を使用して、次のようにサーバの統計情報をモニタリングでき  
ます。  
Sybase Central でパフォーマンスをモニタリングするには  
1
2
サーバを選択します。  
[Statistics] タブで前を右クリックし[Add to Performance Monitor] を選  
択します。  
148  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
6 章 パフォーマンスのモニタリングとチューニング  
3
[Performance Monitor] タブをクリックします。Sybase Central ナップ  
ショット間の差だけを追跡するため択する統計によってはフォー  
マンス・モニタにアクティビティが表示されないことがあります。  
それぞれの統計の説明を参照するには、[Statistics] タブで統計の名前を右  
クリックし[Properties] を選択しますフォーマンス・モニタ上の統計  
をグラフ化することもできます。それには、[Properties] タブでチェック  
ボックスをオンにして、[Apply] を選択し、[OK] を選択します。  
データベース・プロシージャのプロファイリング  
プロシージャ・プロファイリングでは、ストアド・プロシージャ、関数、イベ  
ント、システム・トリガ、トリガの実行にかかる時間が表示されます。プロ  
シージャの各行の実行時間も表示できますータベーロファイリング  
情報を使用するとューニングによってデータベース内のどのプロシージャ  
のパフォーマンス向上が可能かを判断できます。  
トアド・プロシージャ、関数、イベント、システム・トリガ、トリガをモニタ  
し、それらの実行時間と、それぞれの呼び出し回数を追跡します。  
プロファイリング情報はサーバによってメモリに格納され、Sybase Central の  
[Profile] タブまたは Interactive SQL で表示できます。プロファイリングが有効  
になると、プロファイリングを無効にするかサーバが停止するまで、データ  
ベースはプロファイリング情報を収集します。  
Interactive SQL でのプロファイリング情報の取得の詳細についてはInteractive  
SQL でのプロファイリング情報の表示」(155 ページ ) を参照してください。  
プロシージャ・プロファイリングの有効化  
プロシージロファイリングはべての接続によるプロシージャとトリ  
ガの使用状況を追跡します。Sybase Central または Interactive SQL のいずれか  
ロファイリングを有効化できますロシージャ・プロファイリングの  
有効化および使用には、DBA 権限が必要です。  
プロファイリングを有効にするには (Sybase Central の場合 )  
1
2
3
DBA 権限のあるユーザとしてデータベースに接続します。  
左ウィンドウ枠でデータベースを選択します。  
[ ファイル ] – [ プロパティ ] を選択します。  
[ データベース ] プロパティ・シートが表示されます。  
4
5
[ プロファイリング ] タブで[ このデータベースでプロファイリングを可  
能にする ] を選択します。  
[OK] をクリックして、プロパティ・シートを閉じます。  
パフォーマンス&チューニング・ガイド  
149  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
Sybase IQ 環境の表示  
注意  
Sybase Central でデータベースを右クリックしても、プロファイリングを有効  
化できます。ポップアップ・メニューから [ プロファイリング ] [ プロファ  
イリングの開始 ] を選択します。  
プロファイリングを有効にするには (SQL の場合 )  
1
2
DBA 権限のあるユーザとしてデータベースに接続します。  
ON 設定を指定して sa_server_option ストアロシージャを呼び出し  
ます。  
たとえば、次のように入力します。  
CALL sa_server_option ( 'procedure_profiling', 'ON')  
もし必要ならの接続でのデータベースの使用を妨害せずに定のユーザ  
が使用しているプロシージャを確認できます。その接続がすでに存在するか、  
複数のユーザが同じユーザ ID で接続する場合は、この機能が便利です。  
プロシージャ・プロファイリングをユーザでフィルタするには  
1
2
DBA 権限のあるユーザとしてデータベースに接続します。  
次のプロシージャを呼び出します。  
CALL sa_server_option  
('ProfileFilterUser','userid')  
userid の値は、モニタするユーザの名前です。  
プロシージャ・プロファイリングのリセット  
プロファイリングをリセットするとータベースは古い情報をクリアしプ  
ロシージャベントリガに関する新しい情報の収集をただちに開  
始します。  
以下の項ではDBA 権限を持つユーザとしてデータベースに接続しておりプ  
ロシージャ・プロファイリングが有効になっているものとします。  
プロファイリングをリセットするには (Sybase Central の場合 )  
1
2
左ウィンドウ枠でデータベースを選択します。  
[ ファイル ] – [ プロパティ ] を選択します。  
[ データベース ] プロパティ・シートが表示されます。  
[ プロファイリング ] タブで、[ すぐにリセット ] をクリックします。  
[OK] をクリックして、プロパティ・シートを閉じます。  
3
4
注意  
Sybase Central で右クリックしても、プロファイリングをリセットできます。  
ポップアップ・メニューから [ プロファイリング ] [ プロファイリング情報  
のリセット ] を選択します。  
150  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
6 章 パフォーマンスのモニタリングとチューニング  
プロファイリングをリセットするには (SQL の場合 )  
RESET 設定を指定して sa_server_option ストアド・プロシージャを呼び出  
します。  
たとえば、次のように入力します。  
CALL sa_server_option ('procedure_profiling',  
'RESET')  
プロシージャ・プロファイリングの無効化  
プロファイリング情報の使用が終了したら、プロファイリングを無効にする  
ロファイリングをクリアすることができますロファイリングを無効  
にするとータベースはプロファイリング情報の収集を停止しますがの  
時点までに収集された情報は Sybase Central [ プロファイル ] タブに引き続  
き表示されますロファイリングを無効にするとータベースはプロファ  
イリングをオフにしSybase Central [ プロファイル ] タブからすべてのプロ  
ファイリング・データを削除します。  
プロファイリングを無効にするには (Sybase Central の場合 )  
1
2
左ウィンドウ枠でデータベースを選択します。  
[ ファイル ] – [ プロパティ ] を選択します。  
[ データベース ] プロパティ・シートが表示されます。  
3
4
[ プロファイリング ] タブで[ このデータベースでプロファイリングを可  
能にする ] オプションをクリアします。  
[OK] をクリックして、プロパティ・シートを閉じます。  
注意  
Sybase Central でデータベースを右クリックしても、プロファイリングを無効  
化できます。ポップアップ・メニューから [ プロファイリング ] [ プロファ  
イリングの停止 ] を選択します。  
プロファイリングを無効にするには (SQL の場合 )  
OFF 設定を指定して sa_server_option ストアド・プロシージャを呼び出  
します。  
たとえば、次のように入力します。  
CALL sa_server_option ('procedure_profiling',  
'OFF')  
プロファイリングをクリアするには (Sybase Central の場合 )  
1
2
左ウィンドウ枠でデータベースを選択します。  
[ ファイル ] – [ プロパティ ] を選択します。  
[ データベース ] プロパティ・シートが表示されます。  
パフォーマンス&チューニング・ガイド  
151  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
Sybase IQ 環境の表示  
3
4
[ プロファイリング ] タブで、[ すぐにクリア ] をクリックします。  
プロファイリングをクリアできるのはロファイリングが有効になって  
いる場合だけです。  
[OK] をクリックして、プロパティ・シートを閉じます。  
注意  
Sybase Central でデータベースを右クリックしても、プロファイリングをクリ  
アできます。ポップアップ・メニューから [ プロファイリング ] [ プロファ  
イリング情報のクリア ] を選択します。  
プロファイリングをクリアするには (SQL の場合 )  
CLEAR 設定を指定して sa_server_option ストアド・プロシージャを呼び  
出します。  
たとえば、次のように入力します。  
CALL sa_server_option ('procedure_profiling',  
'CLEAR')  
Sybase Central でのプロファイリング情報の表示  
プロシージャ・プロファイリングではータベース全体定のタイプのオ  
ブジェクト定のプロシージャのいずれの情報を調べたいかによってれ  
ぞれ異なる情報を表示することができます。次のような情報を表示できます。  
データベース内のプロファイル対象のすべてのオブジェクトについての  
詳細  
すべてのストアド・プロシージャと関数についての詳細  
すべてのイベントについての詳細  
すべてのトリガについての詳細  
すべてのシステム・トリガについての詳細  
プロファイル対象の個別のオブジェクトについての詳細  
プロファイリング情報を表示するためにはータベースに接続しロファ  
イリングを有効にする必要があります。  
データベース全体のプロファイリング情報を表示するとのカラムが表示さ  
れます。  
Name オブジェクトの名前をリストします。  
Owner オブジェクトの所有者をリストします。  
Table トリガが属するテーブルをリストします ( このカラムはデータベー  
スの [ プロファイル ] タブにのみ表示されます )。  
Event システリガのトリガのタイプを表示しますUpdateDelete  
のいずれかです。  
Type オブジェクトのタイプ ( たとえばプロシージャ ) をリストします。  
152  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
6 章 パフォーマンスのモニタリングとチューニング  
# Exes. 各オブジェクトが呼び出された回数をリストします。  
#msecs. 各オブジェクトの合計実行時間をリストします。  
これらのカラムにはータベース内で実行されたすべてのプロシージャに関  
するプロファイリング情報の要約が表示されます。プロシージャは他のプロ  
シージャを呼び出せるためーザが明示的に呼び出したものより多くの項目  
が存在する可能性があります。  
ストアド・プロシージャと関数の要約プロファイリング情報を表示するには  
1
2
左ウインドウ枠で [ プロシージャとファンクショ] フォルダを選択します。  
右ウインドウ枠で [ プロファイル ] タブをクリックします。  
データベース内のすべてのストアロシージャと関数のプロファイリ  
ング情報が [ プロファイル ] タブに表示されます。  
イベントの要約プロファイリング情報を表示するには  
1
左ウィンドウ枠で [ イベント ] フォルダを開きます。  
データベース内のすべてのイベントのリストが右ウィンドウ枠の [ イベン  
] タブに表示されます。  
2
右ウィンドウ枠で [ プロファイル ] タブをクリックします。  
データベース内のすべてのイベントのプロファイリング情報が [ プロファ  
イル ] タブに表示されます。  
トリガの要約プロファイリング情報を表示するには  
1
左ウィンドウ枠で [ トリガ ] フォルダを開きます。  
データベース内のすべてのトリガのリストが [ トリガ ] タブに表示され  
ます。  
2
右ウィンドウ枠で [ プロファイル ] タブをクリックします。  
データベース内のすべてのトリガのプロファイリング情報が [ プロファイ  
] タブに表示されます。  
システム・トリガの要約プロファイリング情報を表示するには  
1
左ウィンドウ枠で [ システム・トリガ ] フォルダを開きます。  
データベース内のすべてのトリガのリストが [ システム・トリガ ] タブに  
表示されます。  
2
右ウィンドウ枠で [ プロファイル ] タブをクリックします。  
データベース内のすべてのシステム・トリガのプロファイリング情報が  
[ プロファイル ] タブに表示されます。  
パフォーマンス&チューニング・ガイド  
153  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
Sybase IQ 環境の表示  
特定のプロシージャのプロファイリング情報の表示  
Sybase IQ は、個別のストアド・プロシージャ、関数、イベント、トリガのプ  
ロシージャ・プロファイリング情報を提供します。Sybase Central には、個別  
のプロシージャについての情報が表示されますの情報はべてのストア  
ド・プロシージャ、関数、イベント、またはトリガについて表示される情報と  
は異なります。  
特定のプロシージャのプロファイリング情報を表示するとのカラムが表示  
されます。  
Calls オブジェクトが呼び出された回数をリストします。  
Milliseconds 各オブジェクトの合計実行時間をリストします。  
Line プロシージャの各行に行番号を付加します。  
Source SQL プロシージャを 1 行ずつ表示します。  
プロシージャは行単位に分割されるのでの行の実行時間が長いか調べるこ  
とができ更によってプロシージャのパフォーマンスを高められる可能性が  
あります。プロシージャ・プロファイリング情報にアクセスするためには、  
データベースに接続すること、プロファイリングを有効にすること、DBA 権  
限を持っていることが必要です。  
ストアド・プロシージャまたは関数のプロファイリング情報を表示するには  
1
2
左ウィンドウ枠でデータベースを展開します。  
左ウィンドウ枠で [ プロシージャとファンクション] フォルダを選択します。  
データベース内のすべてのストアド・プロシージャと関数のリストが右  
ウィンドウ枠の [ プロシージャとファンクション ] タブに表示されます。  
3
4
左ウィンドウ枠でロファイル情報を取得するストアロシージャ  
または関数をクリックします。  
右ウィンドウ枠で [ プロファイル ] タブをクリックします。  
指定したストアロシージャまたは関数のプロファイリング情報が右  
ウィンドウ枠の [ プロファイル ] タブに表示されます。  
イベントのプロファイリング情報を表示するには  
1
2
左ウィンドウ枠でデータベースを展開します。  
左ウィンドウ枠で [ イベント ] フォルダを選択します。  
データベース内のすべてのイベントのリストが右ウィンドウ枠の [ イベン  
] タブに表示されます。  
3
左ウィンドウ枠で、プロファイル情報を取得するイベントをクリックし  
ます。  
154  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
6 章 パフォーマンスのモニタリングとチューニング  
4
右ウィンドウ枠で [ プロファイル ] タブをクリックします。  
指定したイベントのプロファイリング情報が右ウィンドウ枠の [ プロファ  
イル ] タブに表示されます。  
トリガのプロファイリング情報を表示するには  
1
2
左ウィンドウ枠でデータベースを展開します。  
左ウィンドウ枠で [ トリガ ] フォルダを開きます。  
すべてのトリガのリストが右ウィンドウ枠の [ トリ] タブに表示されます。  
右ウィンドウ枠で、プロファイル情報を取得するトリガを選択します。  
右ウィンドウ枠で [ プロファイル ] タブをクリックします。  
3
4
指定したトリガのプロファイリング情報が右ウィンドウ枠の [ プロファイ  
] タブに表示されます。  
システム・トリガのプロファイリング情報を表示するには  
1
2
左ウィンドウ枠でデータベースを展開します。  
左ウィンドウ枠で [ システム・トリガ ] フォルダを開きます。  
すべてのシステム・トリガのリストが右ウィンドウ枠の [ システム・トリ  
] タブに表示されます。  
3
4
右ウィンドウ枠でロファイル情報を取得するシステリガを選択  
します。  
右ウィンドウ枠で [ プロファイル ] タブをクリックします。  
指定したシステム・トリガのプロファイリング情報が右ウィンドウ枠の  
[ プロファイル ] タブに表示されます。  
Interactive SQL でのプロファイリング情報の表示  
ストアド・プロシージャを使用してロシージャ・プロファイリング情報を  
表示できます。Sybase Central でも Interactive SQL でも、表示されるプロファ  
イリング情報は同じです。  
sa_procedure_profile_summary ストアド・プロシージャは、データベース内  
のすべてのプロシージャに関する情報を表示しますのプロシージャを使用  
すると、同じ結果セット内のストアド・プロシージャ、関数、イベント、シス  
テム・トリガ、トリガについてのプロファイリング・データを表示できます。  
次のパラメータはプロシージャが返すローを制限します。  
p_object_name プロファイル情報を取得するオブジェクトの名前を指定  
します。  
p_owner_name プロファイル情報を取得するオブジェクトの所有者を指  
定します。  
パフォーマンス&チューニング・ガイド  
155  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
Sybase IQ 環境の表示  
p_table_name トリガのプロファイル情報を取得するテーブルを指定し  
ます。  
p_object_type プロファイル情報を取得するオブジェクトのタイプを指  
定します5 つの選択肢がありますれらの値のいずれかを選択す  
ると、結果セットは指定したタイプのオブジェクトだけに制限されます。  
P ストアド・プロシージャ  
F 関数  
T トリガ  
E イベント  
S システム・トリガ  
p_ordering 結果セットのソート順を指定します。  
プロシージャは別のプロシージャを呼び出せるためーザが明示的に呼び出  
したものより多くの項目がリストされる可能性があります。  
以下の項ではDBA 権限を持つユーザとしてデータベースに接続しておりプ  
ロシージャ・プロファイリングが有効になっているものとします。  
すべてのプロシージャの要約プロファイリング情報を表示するには  
1
2
sa_procedure_profile_summary ストアド・プロシージャを実行します。  
たとえば、次のように入力します。  
CALL sa_procedure_profile_summary  
[SQL] – [ 実行 ] を選択します。  
データベース内のすべてのプロシージャの情報が含まれる結果セットが  
[ 結果 ] ウィンドウ枠に表示されます。  
sa_procedure_profile_summary ストアド・プロシージャの詳細については、  
Adaptive Server Anywhere SQL リファレンス・マニュアル』を参照してください。  
Interactive SQL での特定のプロシージャのプロファイリング情報の表示  
sa_procedure_profile ストアド・プロシージャは、特定のプロシージャ内の  
個々の行に関する情報を表示します果セットにはロシージャ内の各行  
について、行番号、実行時間、合計実行時間に対する割合が含まれています。  
次のパラメータによって、プロシージャが返すローを制限できます。  
p_object_name プロファイル情報を取得するオブジェクトの名前を指定  
します。  
p_owner_name プロファイル情報を取得するオブジェクトの所有者を指  
定します。  
p_table_name トリガのプロファイル情報を取得するテーブルを指定し  
ます。  
クエリでパラメータを指定しない場合ロシージャはび出されたすべて  
のプロシージャのプロファイリング情報を返します。  
156  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
6 章 パフォーマンスのモニタリングとチューニング  
プロシージャ内の特定の行のプロファイリング情報を表示するには  
1
sa_procedure_profile ストアド・プロシージャを実行します。  
たとえば、次のように入力します。  
CALL sa_procedure_profile  
2
[SQL] – [ 実行 ] を選択します。  
プロシージャの個々の行のプロファイリング情報が含まれる結果セット  
[ 結果 ] ウィンドウ枠に表示されます。  
sa_procedure_profile ストアド・プロシージャの詳細についてはAdaptive  
Server Anywhere SQL リファレンス・マニュアル』を参照してください。  
バッファ・キャッシュのモニタリング  
Sybase IQ には、バッファ・キャッシュのパフォーマンスをモニタリングする  
ツールが用意されています。このモニタは、バッファ・キャッシュ、メモリ、  
Sybase IQ 内で行われた I/O 関数の統計情報を収集し、それらをログ・ファイ  
ルに保管します。  
バッファ・キャッシュのパフォーマンスは、Sybase IQ 全体のパフォーマンス  
にとって重要な要因です。モニタが提供する情報を使用して、メイン・バッ  
ファ・キャッシュとテンポラリ・バッファ・キャッシュに割り付けるメモリの  
量を微調整できます。あるキャッシュが他のキャッシュよりもかなり多くの  
I/O を実行している場合は、共有メモリを適切に再割り付けしてください。再  
割り付けする場合は、10 50MB 単位で少しずつ、繰り返して行います。再  
割り付けが終了したら荷を再実行しフォーマンス上の変化をモニタリ  
ングします。  
バッファ・キャッシュ・モニタの起動  
Sybase IQ バッファ・キャッシュ・モニタを DBISQL から起動します。モニタ  
を起動するたびに、各モニタは Sybase IQ 内で別々のカーネル・スレッドとし  
て実行されます。  
次の構文を使って、モニタを起動します。  
IQ UTILITIES { MAIN | PRIVATE }  
INTO dummy_table_name  
START MONITOR 'monitor_options [ ... ]'  
MAIN を指定すると、接続先データベースの IQ ストア内のすべてのテーブル  
について、メイン・バッファ・キャッシュのモニタリングを開始します。  
PRIVATE を指定すると、接続先データベースのテンポラリ・ストア内のすべ  
てのテーブルについてンポラリ・バッファ・キャッシュのモニタリングを  
開始します。  
パフォーマンス&チューニング・ガイド  
157  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
バッファ・キャッシュのモニタリング  
バッフャッシュごとにコマンドを別々に発行する必要がありますニ  
タが結果を収集している間はれらの各セッションを開いておく必要があり  
ます続を閉じるとニタは実行を停止します続は最大で 2 つのモニ  
タの実行まで開くことができます1 つはメイッフャッシュ用で、  
もう 1 つはテンポラリ・バッファ・キャッシュ用です。  
dummy_table_name には、任意の Sybase IQ ベース・テーブルまたはテンポラ  
リ・テーブルを指定します。他の IQ UTILITIES コマンドと構文上の互換性を  
持たせるために、テーブル名を指定する必要があります。最も望ましいのは、  
モニタリング専用のテーブルを作成することです。  
モニタリング出力ファイルのディレクトリ位置を制御するには、  
MONITOR_OUTPUT_DIRECTORY オプションを設定します。このオプ  
ションを設定しない場合は、データベースと同じディレクトリに結果が  
出力されます。モニタを実行している間、すべてのモニタリング出力  
ファイルが使用されます。モニタの実行が停止した後も、ファイルはそ  
のまま残ります。  
マルチプレックス・クエリ・サーバを作成する前にニタリングで使用する  
テンポラーブルを宣言するかしいデータベースの作成時に永続的な  
ダミー・テーブルを作成してください。これによって DDL の変更を回避し、  
実際の運用稼働時にデータがクエリ・サーバにとどまるようにします。  
ヒント  
モニタを簡単に使用するためにはトアロシージャを作成してダミ・  
テーブルを宣言し、出力ロケーションを指定して、モニタを起動します。  
'monitor_options' には次の値を 1 つ以上指定できます。  
-summary。メインとテンポラリの両方のバッファ・キャッシュのサマリ  
情報を表示しますニタ・オプションを何も指定しないと、サマリ・レ  
ポートが表示されますのオプションで説明されているフィールドに加  
えて、次のフィールドが表示されます。  
[Users]:バッファ・キャッシュに接続しているユーザ数。  
[IO]:バッファ・キャッシュによる物理読み込みと物理書き込みの  
合計。  
-cache。メイン・バッファ・キャッシュまたはテンポラリ・バッファ・  
キャッシュに対するアクティビティの詳細を表示します要なフィール  
ドは [Finds][HR%][BWaits] です。次のフィールドが表示されます。  
[Finds]:バッファ・キャッシュへの検索要求。Finds の値がゼロに急  
降下してゼロのままなら、サーバにデッドロックが発生しています。  
サーバでアクティビティがあれば、Finds はゼロ以外の値を示すはず  
です。  
[Creats]:データベース内の 1 ページの作成要求。  
[Dests]:データベース内の 1 ページの破棄要求。  
158  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
6 章 パフォーマンスのモニタリングとチューニング  
[Dirty]:バッファがダーティ ( 変更 ) された回数。  
[HR%]:ヒット率。I/O 要求なしで、バッファ・キャッシュによって  
応じることのできたパーセンテージット率が高いほど効率が良く  
なりますャッシュ・サイズを十分な大きさに設定した場合常  
90% 100% になります。大きいクエリの場合、最初はヒット率  
が下がることがありますが、プリフェッチが機能し始めると上昇し  
ます。  
[BWaits]:ビジー・ページ ( ページ・フレーム競合 ) のために待機させ  
られた検索要求常は小さい数値ですが別な場合には大きくな  
ることがありますとえばったく同じクエリが同時に開始され  
た場合は方のクエリが同じページを要求するため初の要求が  
ディスクからページを取得するまで 2 番目の要求は待機します。  
[ReReads]一トランザクション内でストアの同じ部分がキャッシュ  
内に再読み込みされた概算の回数。この数値は常に小さいはずです  
が、Sybase IQ 12.4.2 以降では数値が大きくても重要ではありません。  
[FMiss]:不正な失敗。バッファ・キャッシュがメモリ内のページの  
検索に複数回のルックアップを必要とした回数の数値は 0 ご  
く小さな値になるようにしてくださいの値が大きい場合はー  
ルバックが発生し定の操作が繰り返し要求されていると考えられ  
ます。  
[Cloned]Sybase IQ が同時読み込み用に既存のバッファを保持しなが  
き込み用に新しいバッファを作成する必要があった回数ー  
ジのクローンが作成されるのはのユーザがそのページを参照して  
いる場合だけです。  
[Reads/Writes]:バッファ・キャッシュによって実行された物理読み込  
みと物理書き込み。  
[PF/PFRead]:プリフェッチ要求、およびプリフェッチ用に実行した  
読み込み。  
[GDirty]LRU バッファがダーティな状態で取り込まれたためSybase  
IQ がそのバッファを使用する前に書き出した回数。この数値が 0 よ  
り大きい状態が長時間続かないようにしてください0 より大きい状  
態が続く場合は、スイーパ・スレッドの数を増やすか、ウォッシュ・  
マーカを移動する必要があります。  
[Pin%]:バッファ・キャッシュ内で使用中でありロックされている  
ページ数のパーセンテージ。  
[Dirty%]:変更されたバッファ・ブロックのパーセンテージ。この数  
値が 85 90% を超えないようにしますれ以上になると[GDirty]  
0 より大きくなります。  
パフォーマンス&チューニング・ガイド  
159  
Download from Www.Somanuals.com. All Manuals Search And Download.  
バッファ・キャッシュのモニタリング  
-cache_by_type。生成する結果は -cache と同じですが、結果を IQ ペー  
ジ・タイプごとに集計します ([Bwaits] カラムは例外で、合計だけを表示  
します )。この形式は、Sybase 製品の保守契約を結んでいるサポート・セ  
ンタに情報を送る場合にたいへん有効です。  
-file_suffix suffix<dbname>.<connid>-<main_or_temp>-<suffix>  
の名前で、モニタリング出力ファイルを作成します。suffix を指定しない  
と、デフォルトで iqmon に設定されます。  
-io定した期間のメインまたはテンポラリ ( プライベート ) のバッフ・  
キャッシュの I/O 率と圧縮比を表示しますれらのカウンタはーバ  
のすべてのアクティビティを表します報はデバイス別に集計されませ  
ん。次のフィールドが表示されます。  
[Reads]:バッファ・キャッシュによって実行された物理読み込み。  
[Lrd(KB)]:読み込まれた論理キロバイト数 ( ページ・サイズに要求数  
を乗算した数値 )。  
[Prd(KB)]:読み込まれた物理キロバイト数。  
[Rratio]:読み込まれた物理データに対する論理データの圧縮比。読  
み込み時のディスクに対する圧縮効率の度合い。  
[Writes]:バッファ・キャッシュによって実行された物理書き込み。  
[Lwrt(KB)]:書き込まれた論理キロバイト数。  
[Pwrt(KB)]:書き込まれた物理キロバイト数。  
[Wratio]:書き込まれた物理データに対する論理データの圧縮比。  
-bufalloc。ソート、ハッシュ、ビットマップなどのオブジェクト用にバッ  
ファ・キャッシュ内の領域を予約する、メインまたはテンポラリ・バッ  
ファ・アロケータ情報を表示します。  
[OU]User_Resource_Reservation オプション設定 ( 以前は  
Optimize_For_This_Many_Users)  
[AU]:現在アクティブなユーザ数。  
[MaxBuf]:バッファ・アロケータに制御されているバッファ数。  
[Avail]:現在ピン・クォータ割り付けに使用可能なバッファ数。  
[AvPF]:現在プリフェッチ・クォータ割り付けに使用可能なバッ  
ファ数。  
[Slots]:バッファ・キャッシュ・クォータを使用中の、現在登録され  
ているオブジェクト数。  
[PinUser]ォータを使用中のオブジェクト数 ( ハッシュー  
ト、B ツリー・オブジェクトなど )。  
[PFUsr]:プリフェッチ・クォータを使用中のオブジェクト数。  
160  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
6 章 パフォーマンスのモニタリングとチューニング  
[Posted]:あらかじめプランされたクォータ・ユーザであるオブジェ  
クト数。  
[UnPost]:特定のクォータ・ユーザであるオブジェクト数。  
[Locks]:バッファ・アロケータで処理されたミューテックス・ロッ  
ク数。  
[Waits]:ロックのためにスレッドが待機する必要があった回数。  
-contention。多くの重要なバッファ・キャッシュとメモリ・マネージャ・  
ロックを表示しますれらのロック・カウンタとミューテックス・カウ  
ンタはッファ・キャッシュおよびヒープ・メモリ内のアクティビティ  
れらのロックがどれだけ迅速に解消されたかを示しますイムア  
ウトの数値に注目してください。システム時間が 20% を超えている場合  
は、問題の発生を示しています。  
注意 オペレーティンステムが進歩したためSybase IQ ではスピ・  
ロックを使用しなくなりました。このため、[woTO][Loops][TOs] の統  
計はめったに使用されません。  
[AU]:現在アクティブなユーザ数。  
[LRULks]LRU がロックされた ( テンポラャッシュ用に繰り返  
された ) 回数。  
[woTO]イムアウトなしにロックが付与された (テンポラャッ  
シュ用に繰り返された ) 回数。  
[Loops]:ロックが付与される前に Sybase IQ がリトライした ( テンポ  
ラリ・キャッシュ用に繰り返された ) 回数。  
[TOs]Sybase IQ がタイムアウトして、ロックのために待機する必要  
があった ( テンポラリ・キャッシュ用に繰り返された ) 回数。  
[BWaits]:キャッシュ内のバッファに対する “Busy Waits” ( テンポ  
ラリ・キャッシュ用に繰り返された ) 回数。  
[IOLock]Sybase IQ が圧縮化 I/O プールをロックした ( テンポラリ・  
キャッシュ用に繰り返された ) 回数。無視してかまわない。  
[IOWait]縮化 I/O プール上のロックのために Sybase IQ が待機する  
必要があった ( テンポラリ・キャッシュ用に繰り返された ) 回数。無  
視してかまわない。  
[HTLock]Sybase IQ がブロック・マップ・ハッシュ・テーブルをロッ  
クした ( テンポラリ・キャッシュ用に繰り返された ) 回数。  
[HTWait]:ブロック・マップ・ハッシュ・テーブルのために Sybase IQ  
が待機する必要があった ( テンポラリ・キャッシュ用に繰り返された )  
回数。HTLock HTWait は、使用中のブロック・マップ数を示す。  
パフォーマンス&チューニング・ガイド  
161  
Download from Www.Somanuals.com. All Manuals Search And Download.  
バッファ・キャッシュのモニタリング  
[FLLock]Sybase IQ がフリー・リストをロックする必要があった ( テ  
ンポラリ・キャッシュ用に繰り返された ) 回数。  
[FLWait]:フリー・リスト上のロックのために Sybase IQ が待機する  
必要があった ( テンポラリ・キャッシュ用に繰り返された ) 回数。  
[MemLks]Sybase IQ がメモネージャ (ヒープ) をロックした回数。  
[MemWts]:メモリ・マネージャ・ロックのために Sybase IQ が待機す  
る必要があった回数。  
-threads。処理スレッド・マネージャが使用したカウンタを表示します。  
値はサーバワイドです ( つまりインとプライベートのどちらでこのオ  
プションを選択するかは無関係です )。レポートの最後のページ以降の新  
しいイベントを表します。  
[cpus]Sybase IQ が使用している CPU の数。システムに搭載されて  
いる数より少ない場合がある。  
[Limit]Sybase IQ が使用できるスレッドの最大数。  
[NTeams]:現在使用中のスレッド・チームの数。  
[MaxTms]:今まで使用されたチームの最大数。  
[NThrds]:既存スレッドの現在の数。  
[Resrvd]ステム ( 接続 ) での使用のために予約されているスレッド  
の数。  
[Free]:割り当てに使用可能なスレッドの数。モニタリングが必要。  
この数値が非常に小さい場合は、スレッドの不足を示している。  
[Locks]:スレッド・マネージャで処理されたロックの数。  
[Waits]:スレッド・マネージャ上のロックのために Sybase IQ が待機  
する必要があった回数。  
注意 オブジェクトまたはクエリが作業を必要としている場合Sybase IQ  
はスレッド・チームと呼ばれる処理スレッドのグループを割り付けます。  
処理スレッドの調整を行う際に、利用可能なオプションとしては、デー  
タベース・オプションの MAX_IQ_THREADS_PER_CONNECTION と  
MAX_IQ_THREADS_PER_TEAMおよび Sybase IQ が使用できるスレッ  
ド数を指定するサーバ・オプションの -iqmt があります。  
162  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
6 章 パフォーマンスのモニタリングとチューニング  
-interval。レポート間隔を秒単位で指定します。デフォルトは 60 秒ごと  
です。最小値は 2 秒です。通常、クエリの実行中やパフォーマンスに問  
題があるときに、モニタをデフォルトの間隔で実行すると、有益な結果  
を取得できます。間隔が短すぎると、意味のある結果を取得できないこ  
とがあります。ジョブ時間に見合った間隔を指定してください。通常は  
1 分で十分です。  
最初の表示ではーバの起動からのカウンタが示されますれ以降の  
表示では、前の表示との差が示されます。  
-append | - truncate。前者は既存の出力ファイルに追加、後者は既存の出  
力ファイルをトランケートします。デフォルトでは、トランケートされ  
ます。  
-debug。主に、Sybase 製品の保守契約を結んでいるサポート・センタに  
情報を提供するために使用しますれを指定するとじ情報を扱う標  
準表示モードがあるかどうかにかかわらずフォーマンニタで使  
用可能な情報がすべて表示されます。ページの上部には、ディスク・ブ  
ロック・タイプごとの統計の配列が表示されます。次に、他のバッファ・  
キャッシュの統計モリ・マネージャの統計レッド・マネージャの  
統計、フリー・リストの統計、CPU 使用率、そして最後にバッファ・ア  
ロケータの統計が表示されますッフロケータの統計はさらにク  
ライアント・タイプ ( ハッシュ、ソートなど ) ごとに集計され、最後に行  
われたバッファ割り付けのヒストグラムが表示されますモリ割り付け  
ポートの最後のページ以降に割り付けられた量を示すことに注意し  
てください。  
注意 表示する間隔は、ページ単位ではなく、出力行単位です。ただし、次の  
2 つの場合は例外です。-cache_by_type -debug では、表示ごとに新しい  
ページが開始されます。  
モニタ実行中の結果の確認  
UNIX システムでは、クエリの実行中にモニタリング出力を確認できます。  
たとえば、次のコマンドを使用してモニタを起動するとします。  
iq utilities main into monitor_tab  
start monitor “-cache -interval 2 -file_suffix iqmon”  
このコマンドを実行すると、結果が dbname.conn#-[main|temp]-iqmon という名  
前の ASCII ファイルに出力されます。したがって、データベース asiqdemo で  
は、結果が asiqdemo.2-main-iqmon に出力されます。  
結果を確認するには、システム・プロンプトで次のコマンドを入力します。  
$ tail -f asiqdemo.2-main-iqmon  
パフォーマンス&チューニング・ガイド  
163  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
バッファ・キャッシュのモニタリング  
バッファ・キャッシュ・モニタの停止  
モニタの停止コマンドは起動コマンドとほぼ同じですがプションを指定す  
る必要はありません。次の構文を使って Sybase IQ バッファ・キャッシュ・モ  
ニタを停止します。  
IQ UTILITIES { MAIN | PRIVATE }  
INTO dummy_table_name STOP MONITOR  
注意 特定のオプション設定を有効にするためには、データベースを再起動し  
ますニタを実行している場合はータベースを再起動できるようにモニ  
タをシャットダウンする必要があります。  
モニタリング結果の検査と保存  
モニタは果を普通のテキスト・ファイルに保存しますのファイルのデ  
フォルトは、次のとおりです。  
dbname.connection#-main-iqmon (メイッフャッシュの結果の場合 )  
dbname.connection#-temp-iqmon (テンポラッフャッシュの結果  
の場合 )  
プレフィクス dbname.connection# は、データベース名と接続番号を示します。  
接続番号が複数あってれが自分のものかわからない場合はタログ・ス  
トアド・プロシージャ sa_conn_info を実行してください。このプロシージャ  
を実行すると、アクティブなデータベース接続のそれぞれについて、接続番  
号、ユーザ ID などの情報が表示されます。  
IQ UTILITIES コマンドで -file_suffix パラメータを使用すると、サフィックス  
iqmon を任意のサフィックスに変更できます。  
モニタの実行結果を表示するにはキスト・エディタを使用するかァイ  
ルの表示や印刷に通常使用している方法がほかにあればれを使用してくだ  
さい。  
同じデータベースから同じ接続番号を使ってモニタを再度起動する場合、デ  
フォルトでは前回の結果が上書きされますニタの実行結果を保存する場合  
ァイルを別の場所にコピーした後で同じデータベースからモニタを再度  
起動するか、-append オプションを使用してください。  
164  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
6 章 パフォーマンスのモニタリングとチューニング  
モニタリング結果の例  
この項ではろいろなモニタリンプションを使用したサンプル結果を  
示します。  
-summary オプションを使用すると、次のような結果が生成されます。IQ  
UTILITIES コマンドでの指定にかかわらず、メインとテンポラリ両方のバッ  
ファ・キャッシュの統計が表示されることに注意してください。  
Sybase Adaptive Server IQ Performance Monitor  
---------------------------------------------  
Version 3.2  
Options string for Main cache: "-summary -interval 5"  
Summary  
2004-07-16 13:53:24  
Temp Cache  
Active|  
Main Cache  
|
Users| Finds  
HR% Reads/Writes GDirty Pin% Dirty% InUse%| Finds  
HR%  
Reads/Writes GDirty Pin% Dirty% InUse%  
0
286 99.3  
2/34  
3.6  
0
0
0
0
0
0
0
0
0
0
0
0.0  
5.6  
1.6  
5.6  
4.0  
5.6  
5.6  
1.6  
4.0  
5.6  
5.6  
1.6  
8.7  
26.2  
81.7  
608 99.7  
2/47  
0
0.0  
20.0  
1
2621 99.4  
16/155  
23.2  
4121 99.6  
3388 99.8  
3497 99.9  
3342 98.7  
3370 99.8  
3951 100.0  
3916 98.9  
4317 98.9  
3122 99.7  
4034 100.0  
16/163  
0 11.4  
67.3  
1
2646 99.8  
6/48  
40.9  
13.5 100.0  
14.3 100.0  
31.0 100.0  
13.5 100.0  
23.8 100.0  
31.0 100.0  
45.2 100.0  
6/70  
1
4.1  
94.5  
99.1  
1
2684 99.9  
7/78  
42.3  
8/103  
1 10.9  
1
1993 99.9  
0
17/22  
41.4  
122/149  
8.2  
91.4  
1
2479 99.9  
32/110  
45.5  
55/112  
0 11.4  
95.9  
1
3273 100.0  
0/0  
49.1 100.0  
0/108  
1 13.6  
1
2512 99.9  
0
2/0  
48.6 100.0  
88/173  
5.5  
1
1264 99.9  
0
66/131  
40.0  
378/305  
6.4  
77.3  
1
2122 99.8  
30/125  
40.0  
12.7  
99.2  
67/127  
0 12.3  
90.5  
1
3370 100.0  
2/0  
23.0 100.0  
2/98  
2 13.2  
46.4  
98.2  
パフォーマンス&チューニング・ガイド  
165  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
バッファ・キャッシュのモニタリング  
1
1
2981 99.9  
0 14.1  
2/0  
53.2 100.0  
0
0
0
0
0
0
5.6  
5.6  
5.6  
1.6  
6.3  
4.0  
31.7 100.0  
39.7 100.0  
40.5 100.0  
41.3 100.0  
58.7 100.0  
50.0 100.0  
3715 99.9  
4131 99.7  
4135 99.6  
3646 96.9  
4221 98.9  
4102 100.0  
2/110  
3351 99.6  
0 14.1  
13/3  
57.7 100.0  
13/123  
1
3286 99.6  
0 12.3  
13/13  
55.9  
15/139  
97.7  
1
296 100.0  
0
0/0  
366/320  
7.3  
9.5  
7.7  
53.2 100.0  
71/129  
1
1230 99.4  
0
390/297  
59.1  
91.8  
1
1900 100.0  
0
125/279  
38.6  
344/279  
72.3  
Sybase Adaptive Server IQ Performance Monitor  
---------------------------------------------  
Shutting Down  
0
422 98.8  
0
16/99  
1.8  
0
0.0  
0.8  
99.2  
853 98.9  
34/101  
0.0  
59.1  
-cache オプションを使用すると、次のような結果が生成されます。これはテ  
ンポラリ・バッファ・キャッシュのものです。  
Options string for Temp cache: "-cache -interval 10"  
Temp Shared Buffer Cache  
2001-02-18 17:43:55  
Finds Creats Dests Dirty  
GDirty Pin% Dirty%  
HR% BWaits ReReads FMiss Cloned Reads/  
PF/  
Writes PFRead  
Tm:  
0 0.0  
Tm: 1139  
0 0.0  
Tm: 6794  
0 0.0  
640  
82  
109  
754  
57  
83  
84 99.4  
109 100.0  
754 100.0  
0
0
0
0
4
0
0
0
0
0
0
0
0
0
0
0
4/0  
0/0  
0/0  
0/0  
0/0  
2.8  
5.5  
6.1  
6.1  
0/0  
0/0  
0/0  
749  
Tm: 10759  
0 0.0  
1646 1646 1646 100.0  
-io オプションを使用するとのような結果が生成されますれはメイ・  
バッファ・キャッシュのものです。  
Options string for main cache: "-IO -interval 5"  
Main Buffer Cache  
2001-02-18 13:58:48  
Input  
Output  
Reads Lrd(KB) Prd(KB)  
10 40 34  
Rratio Writes Lwrt(KB) Pwrt(KB) Wratio  
1.18 14 56 23 2.43  
Mn:  
166  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
6 章 パフォーマンスのモニタリングとチューニング  
Mn:  
Mn:  
Mn:  
Mn:  
Mn:  
Mn:  
Mn:  
Mn:  
Mn:  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0.00  
0.00  
0.00  
0.00  
0.00  
0.00  
0.00  
0.00  
0.00  
21  
7
84  
28  
88  
252  
216  
256  
248  
292  
420  
34  
11  
35  
100  
93  
101  
94  
2.43  
2.43  
2.48  
2.51  
2.32  
2.52  
2.62  
2.65  
3.47  
22  
63  
54  
64  
62  
73  
105  
110  
121  
-buffalloc オプションを使用すると、次のような結果が生成されます。  
Options string for Main cache: "-bufalloc -file_suffix bufalloc-iqmon -append -interval  
10"  
Buffer Allocation  
2001-02-18 10:58:39  
OU/AU MaxBuf Avail  
AvPF  
20  
Slots PinUsr PFUsr Posted UnPost Quota Locks Waits  
1/0  
1/1  
1/1  
1592  
1592  
1592  
1592  
1592  
1592  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
0
0
0
20  
20  
注意 実際の -contention 出力では、メイン・キャッシュ、テンポラリ・キャッ  
シュモリ・マネージャの結果が同じ行に表示されますのフォーマット  
では横幅が大変広くなってしまうためこでは各カラットを別々に示  
します。  
メイン・キャッシュの -contention 結果は、次のとおりです。  
Options string for Main cache:  
"-contention -file_suffix contention-iqmon -append -interval 10"  
Contention  
2001-02-18 10:57:03  
Main Cache  
|
AU |LRULks woTO Loops  
TOs BWaits IOLock IOWait HTLock HTWait FLLock FLWait  
0
1
1
1
1
1
1
1
66  
2958  
1513  
370  
156  
885  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
1
160  
378  
94  
0
0
0
0
0
0
1
0
5
0
0
0
0
0
0
0
0
4
6
8
10  
12  
14  
16  
18  
0
0
0
0
0
0
0
0
1117  
2
2
2
2
2
2
46  
248  
332  
66  
1223  
346  
パフォーマンス&チューニング・ガイド  
167  
Download from Www.Somanuals.com. All Manuals Search And Download.  
バッファ・キャッシュのモニタリング  
テンポラリ・キャッシュの -contention 結果は、次のとおりです。  
Temp Cache  
|LRULks  
70  
466  
963  
1186  
357  
444  
884  
1573  
woTO Loops  
TOs BWaits IOLock IOWait HTLock HTWait FLLock FLWait  
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
2
2
2
2
2
2
2
0
0
0
0
0
0
0
0
4
15  
8
2
2
3
2
5
0
0
0
0
0
0
0
0
5
12  
20  
23  
25  
29  
31  
37  
0
0
1
1
1
0
1
1
メモリ・マネージャの結果は、次のとおりです。  
| Memory Mgr  
MemLks MemWts  
55483  
5705  
2048  
186  
2
13  
0
0
4
0
137  
22  
0
0
203  
3
-threads オプションを使用すると、次のような結果が生成されます。  
Options string for Main cache: "-threads -file_suffix threads-iqmon -append -interval 10"  
Threads  
2001-02-18 10:59:24  
CPUs Limit NTeams MaxTms NThrds Resrvd Free Locks Waits  
10  
10  
10  
10  
10  
10  
10  
100  
100  
100  
100  
100  
100  
100  
4
6
6
7
7
7
7
12  
12  
12  
12  
12  
12  
12  
100  
100  
100  
100  
100  
100  
100  
13  
12  
12  
12  
12  
12  
12  
68  
63  
63  
62  
62  
58  
58  
106  
4
590  
6
0
0
1
1
0
0
1
5
0
0
168  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
6 章 パフォーマンスのモニタリングとチューニング  
バッファ・キャッシュの構造  
Sybase IQ では、システム上の CPU の数に応じて、バッファ・キャッシュの  
キャッシュ・パーティションの数が自動的に計算されます。マルチ CPU 構成  
で ロ ー ド ま た は ク エ リ の パ フ ォ ー マ ン ス が 予 想 よ り 悪 い 場 合 は、  
CACHE_PARTITIONS データベープションの値を変更するとパフォーマ  
ンスが向上することがあります。詳細についてはSybase IQ リファレンス・  
マニュアル』のCACHE_PARTITIONS オプション」を参照してください。  
バッファは、キャッシュの LRU (Least Recently Used) 側の終端に近づくと、  
ウォッシュ・マーカを越えます。Sybase IQ は最も古いページ ( ウォッシュ・  
マーカを越えたページ ) をディスクに書き出してのページが占有していた  
キャッシュ領域を再利用できるようにしますイーレッドと呼ばれる  
Sybase IQ 処理スレッドのチームがも古いバッファを一掃し (書き出し) ます。  
データのページをキャッシュに読み込む必要がある場合、Sybase IQ LRU  
バッファを取り込みます。バッファがまだ「ダーティな」( 変更された ) 状態  
の場合はにバッファをディスクに書き込む必要がありますニタ -cache  
レポートの [Gdirty] カラムはLRU バッファをダーティな状態で取り込んだた  
めに、Sybase IQ がそのバッファを使用する前に書き出す必要があった回数を  
示します。  
通常、Sybase IQ では [Gdirty] の値が 0 に維持されます。この値が 0 より大  
きい状態が長時間続く場合はイーレッドの数とウォッシー  
カを制御するデータベース・オプションを調整する必要があります。詳細  
についてはSybase IQ リファレンス・マニュアル』の「第 2 章 データベー  
ス・オプション」SWEEPER_THREADS_PERCENT オプション」または  
WASH_AREA_BUFFERS_PERCENT オプション」を参照してください。  
バッファ・マネージャのスラッシングの回避  
オペレーティング・システムによるページングは使用可能な空きメモリを超え  
るバッファを必要とするクエリに影響しますッファ・キャッシュにさ  
らに多くの物理メモリを割り付けようとするとージングが少々必要ですた  
だし理メモリをバッファ・キャッシュに過度に割り付けるとペレーティ  
ング・システムによるページングの発生頻度が高くなりステム全体がスラッ  
シングする原因となることがありますッファ・キャッシュに十分なメ  
モリを割り付けないと、Sybase IQ がスラッシングしてしまいます。  
オペレーティンステムがディスクにペーウトする最適バッファの  
量を減らした場合ッフネージャはこれらのバッファをメモリに戻す  
ためにディスクから余分に読み込みを行わなければならないため、バッファ・  
マネージャのスラッシングが発生します。Sybase IQ では、ディスクにフラッ  
シュするための最適なバッファを把握しているためウトの全体の  
数を減らすことによってのようなオペレーティンステムによる干渉  
を回避できます。  
パフォーマンス&チューニング・ガイド  
169  
Download from Www.Somanuals.com. All Manuals Search And Download.  
       
バッファ・マネージャのスラッシングの回避  
バッファ・サイズを設定するときは、次のトレードオフに注意してください。  
Sybase IQ バッファ・キャッシュが大きすぎると、Sybase IQ が全メモリを  
使用しようとするためペレーティンステムでページングが強制  
的に行われる。  
Sybase IQ バッファ・キャッシュが小さすぎると、Sybase IQ はクエリ・  
データをキャッシュに収めきれないため、スラッシングしてしまう。  
深刻なパフォーマンスの問題が発生した場合はージングをモニタリングし  
て、スラッシングが問題かどうかを確認してください。スラッシングが問題  
だった場合は「バッファ・キャッシュの管理」の説明に従って、バッファ・  
サイズをリセットしてください。  
ページングをモニタリングしてラッシングが問題と判断した場合はッ  
ルゴリズムを伴うクエリが含まれる文の実行時のスラッシングの量を  
制限することもできます。HASH_THRASHING_PERCENT データベース・オ  
プションを調整し、許容するハード・ディスク I/O の割合を制御します。この  
割合を超えると、文がロールバックされてエラーが返されます。  
HASH_THRASHING_PERCENT のデフォルト値は 10% です。  
HASH_THRASHING_PERCENT の値を増やすと、ロールバックが起きるま  
でに許容するディスクへのページングが増え、HASH_THRASHING_PERCENT  
の値を減らすと、ロールバックが起きるまでに許容するページングが減ります。  
以前のバージョンの Sybase IQ では実行されていた、ハッシュ・アルゴリズムを  
伴うクエリが、デフォルトの HASH_THRASHING_PERCENT の制限に達すると  
ロールバックされるようになります。Sybase IQ Hash insert thrashing  
detected または Hash find thrashing detectedエラーをレポートしま  
行に必要なリソースをクエリに割り当てるには1 つ以上の対応策を  
講じてください。  
HASH_THRASHING_PERCENT の値を増やしージングの制限を緩和  
します。  
テンポラャッシュのサイズを増やします (DBA のみ )ンポラ・  
キャッシュのサイズを増やすとャッシュのサイズが減ること  
に注意してください。  
Sybase IQ がこの文の 1 つ以上のハッシュ・サイズの見積もりを誤ってい  
る原因を突き止めて改善します。たとえば、LF または HG インデックス  
を必要とするすべてのカラムにそれがあるかどうかを確認します。また、  
複数カラムのインデックスが適切かどうかも検討します。  
データベース・オプション HASH_PINNABLE_CACHE_PERCENT の値  
を減らします。  
これらのデータベース・オプションの詳細についてはSybase IQ リファ  
レンス・マニュアル』の「第 2 章 データベース・オプション」の  
HASH_THRASHING_PERCENT オプション」と  
HASH_PINNABLE_CACHE_PERCENT オプション」の項を参照してくだ  
さい。  
170  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
6 章 パフォーマンスのモニタリングとチューニング  
クエリで起きている可能性のある問題を特定するには、テンポラリ・データ  
ベース・オプション QUERY_PLAN = 'ON' QUERY_DETAIL = 'ON' を指定  
してクエリを実行し、クエリ・プランを生成します。そして、クエリ・プラン  
の見積もりを調査します。生成されるクエリ・プランは、メッセージ・ログ・  
ファイルにあります。  
Windows システムでのページングのモニタリング  
Windows のシステム モニタを使用してージングをモニタリングできます。  
アクセスするには、[Logical Disk] オブジェクト、PAGEFILE.SYS ファイルが格  
納されているディスクのインスタンス、[Disk Transfers/Sec] カウンタを選択し  
ますのファイルはデータベーァイルとは別のディスクに格納してく  
ださい。[Object Memory] [Pages/Sec] カウンタもモニタリングできます。た  
だしの値はソフト・フォールトとハード・フォールトの両方を含む全メモ  
リ・フォールトの合計となります。  
UNIX システムでのページングのモニタリング  
UNIX のシステム・コマンド vmstat を使用してージングなどのシステム・  
アクティビティをモニタリングできますマンドの省略形構文は次のとおり  
です。  
vmstat interval count  
interval には次の行を出力するまでの時間間隔をcount には出力行の表示回数  
を指定します。オプションとフィールドの説明を含めた vmstat の詳細につい  
ては使用しているオペレーティンステムのマニュアルを参照してくだ  
さい。たとえば次のようになります。  
> vmstat 2 3  
procs  
memory  
page  
disk  
faults  
cpu  
r b w swap  
free re mf pi po fr de sr s0 s1 sd in  
sy cs us sy id  
0 0 0 3312376 31840 0 8 0 0 0 0 0  
0 0 0 3312376 31484 2 3 0 0 0 0 0  
0 0 0 3312368 31116 0 8 0 0 0 0 0  
0 0 0 297 201 472 82 4 14  
0 0 0 260 169 597 80 3 17  
0 0 0 205 1202 396 67 4 29  
上記の出力では、マシンの物理メモリが過度に割り付けられていないため、  
Sybase IQ のクエリ状態が安定していることが示されています。システムの  
ページ・フォールトはほとんど発生していませんの例では題があるこ  
とが vmstat 出力に示されています ( 見やすくなるように、一部のフィールド  
を省略しています )。  
パフォーマンス&チューニング・ガイド  
171  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
バッファ・マネージャのスラッシングの回避  
procs  
r b w swap  
memory  
free  
page  
faults  
sy  
cpu  
re  
mf pi po fr de sr in  
cs us sy id  
0 0 0 217348 272784 0 148 11 3 9 0 2 251 1835 601 6 3 91  
0 0 0 3487124 205572 0  
0 0 0 3487124 205572 0  
5
5
0 0 0 0 0 86 131 133 0 1 99  
0 0 0 0 0 71 162 121 0 0 100  
0 0 0 3483912 204500 0 425 36 0 0 0 0 169 642 355 2 2 96  
0 0 0 3482740 203372 0  
0 0 0 3482676 203300 0  
17  
6 0 0 0 0 158 370 210 1 3 97  
4 10 0 0 0 0 160 1344 225 1 2 97  
0 0 0 3343272 199964 1 2123 36 0 0 0 0 213 131 399 7 8 85  
0 0 0 3343264 185096 0 194 84 0 0 0 0 283 796 732 1 6 93  
0 0 0 3342988 183972 0  
17 58 0 0 0 0 276 1051 746 2 4 94  
0 0 0 3342860 183632 0 119 314 0 0 0 0 203 1660 529 3 4 94  
0 0 0 3342748 182316 2 109 184 0 0 0 0 187 620 488 4 2 95  
0 0 0 3342312 181104 2 147 96 0 0 0 0 115 256 260 9 2 89  
0 0 0 3340748 179180 0 899 26 0 0 0 0 163 836 531 4 4 92  
0 0 0 3328704 167224 0 2993  
6 0 0 0 0 82 2195 222 4 7 89  
上記の出力の最初の行にはシンが起動されてからのシステクティビ  
ティの概要が示されています。最初の 3 行は、約 200MB の空き物理メモリが  
あり、マシンがアイドル状態であることを示しています。4 行目は、Sybase IQ  
が最初に起動されたときと対応しています。8 行目から、空きメモリの量が急  
速に減少し始めています。これは、Sybase IQ バッファ・キャッシュが割り付  
けられータベーージがディスクから読み込まれているときと対応し  
ています (CPU 使用率が増加していることに注意してください )。この時点で  
はクエリが開始されていないためーザの CPU 時間がほとんどありません。  
procs  
r b w swap  
memory  
free  
page  
po fr de sr in  
faults  
sy cs  
cpu  
us sy id  
re mf pi  
7 0 0 3247636 58920 0 1880 1664 0 0 0 0 1131 442 1668 80 18 3  
18 0 0 3246568 43732 0 709 1696 0 0 0 0 1084 223 1308 90 10 1  
12 0 0 3246604 37004 0 358 656 0 0 0 0  
15 0 0 3246628 32156 0 356 1606 0 0 0 0 1141 226 1317 91 9 0  
19 0 0 3246612 26748 0 273 1248 0 0 0 0 950 394 1180 92 7 0  
600 236 722 95 5 0  
上記の出力は少し後の、クエリが進行中のときのものです。これは、ユーザ・  
モードの CPU レベル (us フィールド ) を見ると明らかです然としてページ  
イン・フォールト ( ページインされた KB を示す、pi フィールド ) が発生して  
おりきメモリの量が減少しているためッファ・キャッシュはまだ満杯  
になっていません。  
172  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
6 章 パフォーマンスのモニタリングとチューニング  
procs  
r b w swap  
memory  
page  
faults  
sy  
cpu  
us sy id  
free re mf pi  
po fr  
0
de sr in  
0 0  
cs  
21 0 0 3246608 22100 0 201 1600  
18 0 0 3246608 17196 0 370 1520  
0 1208 1257 1413 88 12 0  
0 464 0 139 988 209 1155 91 8 0  
11 0 0 3251116 16664 0 483 2064 138 2408 0 760 1315 218 1488 88 12 0  
30 0 0 3251112 15764 0 475 2480 310 4450 0 1432 1498 199 1717 87 13 0  
上記の出力は、さらに後のものです。出力の 3 行目は、システムが管理できる  
空きメモリ量のスレッショルドに達したことを示しています。この時点でペー  
ジアウト ( ページアウトされた KB を示すpo フィールド ) が発生しれに応  
じてシステードの CPU レベル (sy フィールド ) が増加していますの状  
況が発生するのは理メモリが過度に割り付けらたためですまりSybase  
IQ バッファ・キャッシュのサイズが、このマシンには大きすぎるのです。この  
問題を解決するには、メインとテンポラリのバッファ・キャッシュのどちらか、  
または両方のサイズを減らします。  
バッファ・キャッシュ・モニタリング・チェックリスト  
次の表はニタリング結果で着目すべき最も一般的な項目の要約と作が  
正常な範囲を逸脱している場合に講じる必要がある対応策を示します。[ 統計 ]  
カラムには準のモニタ・レポートに表示される名前が示されていますデ  
バッポートでは別の名前で表示される統計についてはの名前も示さ  
れています。  
どのモニタリング統計でもしいクエリが開始されたときなどステムの  
状態が変化している間は一時的な異常が起きる可能性があることに注意して  
ください。  
パフォーマンス&チューニング・ガイド  
173  
Download from Www.Somanuals.com. All Manuals Search And Download.  
   
バッファ・キャッシュ・モニタリング・チェックリスト  
6-1: バッファ・キャッシュ・モニタリング・チェックリスト  
調整が必要な動作 推奨される対応策  
統計  
正常な動作  
HR%  
(Cache hit rate)  
90% 以上。  
プリフェッチが機能した後 -iqmc -iqtc を調整し、メインと  
もヒット率が 90% を下回る。 テンポラリのキャッシュ・サイズ  
のバランスをとり直してみる。  
GARRAYBARRAY、  
Bitmap (bm)hash object、  
sort objectvariable-length  
btree (btreev)fixed-length  
btree (btreef)bit vector (bv)、  
dbextdbidvdostore、  
checkpoint block (ckpt) などの  
個別の内部データ構造体の場  
合、クエリの実行中はヒット  
率が 90% を上回る。最初は  
90% を下回る場合がある。  
プリフェッチが機能し始める  
(PF または PrefetchReqs >  
0)、ヒット率が徐々に上昇し  
90% を超える。  
注意 オブジェクトによって  
PREFETCH_THREADS_PERCENT  
はプリフェッチを行わない  
オプションを調整し、プリフェッ  
ものがあるため、これらの  
チ・スレッド数を増やしてみる。  
ヒット率は一般に低くなる。  
Gdirty  
(Grabbed Dirty)  
GDirty > 0  
SWEEPER_THREADS_PERCENT  
オプション ( デフォルトは 10%) ま  
たは WASH_AREA_BUFFERS_  
PERCENT オプション ( デフォルト  
20%) を調整し、ウォッシュ・エ  
リアのサイズを増やす。  
適度なキャッシュ・サイズ  
(< 10GB) が設定されたシス  
テムでは 0。  
注意 スイーレッドがア  
クティブになるのは、ダー  
ティ・ページの数がウォッ  
リアの一定の割合に  
達した場合だけである。  
GDirty/GrabbedDirty 0 より  
大きく、I/O (Writes) が低  
い場合はにシステムに軽  
い負荷がかかっていると考  
えられるため対応策は不要。  
BWaits  
(Buffer Busy  
Waits)  
0
> 0 の状態が持続し、複数の I/O (Writes) が高い場合は、  
ジョブが同じバッファで衝突 キャッシュのスラッシングが原因  
していることを示している。 で Busy Waits が起きていると考え  
られる。キャッシュ・レポートで  
ヒット率を調べて、メインとテン  
ポラリのキャッシュのバランスを  
とり直す必要があるかどうかを確  
認する。  
ほぼ同一の多数のクエリを同時に  
バッチ・ジョブで開始している場  
合は、開始時刻をずらしてみる。  
LRU Waits  
20% 以下  
> 20%。これは重大な競合問 ペレーティンステムの  
題が起きていることを示す。 パッチ・レベルやその他の環境設  
定を確認すれはオペレー  
( デバッグ・レ  
ポートでは  
LRUNum  
ティング・システムの問題の可能  
性が高い。  
TimeOuts  
percentage)  
IOWait  
(IONumWaits)  
> 10%  
10% 以下  
ディスラーや I/O リトライを  
調べる。  
174  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
6 章 パフォーマンスのモニタリングとチューニング  
統計  
正常な動作  
調整が必要な動作  
> 20%  
推奨される対応策  
FLWait  
20% 以下  
dbspace の設定を確認する。  
(FLMutexWaits)  
データベース領域が不足しかかっ  
ていないか?  
DISK_STRIPING ON になってい  
るか?  
sp_iqcheckdb 15% を超える断  
片化をレポートしていないか?  
HTWait  
(BmapHTNum  
Waits)  
> 10%  
10% 以下  
Sybase 品の保守契約を結んで  
いるサポート・センタに問い合わ  
せる。  
MemWts  
(MemNtimesWa  
ited)  
(PFMgrCondVar  
Waits)  
CPU time  
CPU Sys Seconds < 20%  
CPU Sys Seconds > 20%  
-iqgovern を調整し、実行できる同  
時クエリの合計数を減らす。  
( デバッグ・  
レポートでは  
CPU Sys  
CPU Total Seconds 低い使  
用率を示しておりステム キャッシュ・レポートでヒット率  
がビジー状態になるだけの と I/O 率を調べてャッシュがス  
ジョブがある場合はャッ ラッシングしていないかどうかを  
シュがスラッシングしてい 確認するcache_by_type ( ま  
るか列度が失われている はデバッグ ) ポートでハッ  
SecondsCPU  
Total Seconds)  
と考えられる。  
シュ・オブジェクトのヒット率を  
調べて、ハッシュ・オブジェクト  
がスラッシングしていないかどう  
かを確認する:ヒット率が <90%  
I/O (Writes) が高くないか?  
試行された並列処理をクエリ・プ  
ランで確認する。十分なスレッド  
が使用可能だったか?  
システムに大量の CPU が搭載され  
ているか? マルチプレックス構成  
などの対策が必要な場合もある。  
InUse%  
(Buffers in use)  
起動時以外は 100% かそれに 100% 未満  
近い値  
バッファ・キャッシュが大きすぎ  
る可能性がある。  
-iqmc -iqtc を調整し、メインと  
テンポラリのキャッシュ・サイズ  
のバランスをとり直してみる。  
パフォーマンス&チューニング・ガイド  
175  
Download from Www.Somanuals.com. All Manuals Search And Download.  
CPU 使用率をモニタリングするシステム・ユーティリティ  
統計  
正常な動作  
調整が必要な動作  
推奨される対応策  
Pin%  
(Pinned buffers)  
< 90%  
> 90 95%。システムがバッ メ イ ン と テ ン ポ ラ リ の キ ャ ッ  
ファ不足状態に危険なほど近 シイズのバランスをとり直  
づいていることを示す。この してみる。  
状態になるとトランザクショ  
ンがロールバックされる。  
バッファ・キャッシュ・サイズの  
バランスをとり直すことができな  
い場合は-iqgovern を減らして同  
時に実行されるジョブの数を制限  
してみる。  
Free threads  
(ThrNumFree)  
空き > 予約済み  
空きスレッドの数が予約済 次のいずれかを試してみる。  
みの数まで減少している場  
-iqmt を設定してスレッドの数を増  
やす。  
合はステムのスレッドが  
不足していると考えられる。  
スレッド関連の次のオプションの  
値を減らす:MAX_IQ_THREADS_  
PER_CONNECTIONMAX_IQ_  
THREADS_PER_TEAM、  
PARALLEL_GBH_UNITS (Group By  
ハッシュを使ったクエリ )  
USER_RESOURCE_RESERVATIO  
N を設定し、クエリ・エンジンのリ  
ソース割り付けを制限する。  
-iqgovern を設定し、ジョブの数を  
制限する。  
FlOutOfSpace  
0のストアのフリ1。このストア ( メインまた ストアに dbspace を追加する  
(デバッグのみ) トが満杯でないことを示す。 はテンポラリ ) が全部割り付  
割り付けられていないページ けられていることを示す。  
が使用可能  
CPU 使用率をモニタリングするシステム・ユーティリティ  
Sybase IQ の使用中に CPU 使用率をモニタリングするにはのオペレーティ  
ング・システムのユーティリティを使用します。  
UNIX の場合は、次のとおりです。  
ps コマンド  
vmstat コマンド ( 前項の例を参照 )  
sar コマンド (UNIX SystemV の場合 )  
Windows の場合は、次のとおりです。  
システム モニタ  
タスク マネージャ  
176  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
         
7
Windows システムでのサーバの  
チューニング  
この章について  
この章では、Windows システムで Sybase IQ を実行するときに特有のパ  
の説明は「第 5 章 システム・リソースの管理の説明と併せてお読みく  
ださい。  
内容  
トピック名  
ページ  
177  
パフォーマンスについての一般的なガイドライン  
パフォーマンスのモニタリング  
NTFS キャッシュの使用  
179  
180  
181  
挿入とクエリのチューニング  
バックアップ操作のチューニング  
182  
パフォーマンスについての一般的なガイドライン  
この項ではータのロードとクエリの両方に適用される一般的なガイド  
ラインについて説明します。Windows Sybase IQ を実行するときに推奨  
される最小限のメモリ量 (RAM) 512MB ですれより少ないメモリ構  
成でも Sybase IQ は正しく機能しますが、パフォーマンスが低下すること  
があります。  
スループットの最大化  
Windows で実行する場合はットワーービスのサーバのオプショ  
ンで [ ネットワーク アプリケーションのスループットを最大にする ] が有  
効になっていることを確認してください。このオプションを有効にする  
と、メモリが制限される環境でも、NTFS キャッシュが Sybase IQ からメ  
モリを横取りして過度のページ・フォールトが発生する事態を回避でき  
ます。  
[ ネットワーク アプリケーションのスループットを最大にする ] を有効にする  
には  
1
コントロール パネルの [ ネットワーク ] アイコンをダブルクリックし  
ます。  
パフォーマンス&チューニング・ガイド  
177  
Download from Www.Somanuals.com. All Manuals Search And Download.  
           
パフォーマンスについての一般的なガイドライン  
2
3
4
[ サービス ] タブをクリックして、[ サーバー ] ネットワーク・サービスを  
ダブルクリックします。  
[ ネットワーク アプリケーションのスループットを最大にする ] オプショ  
ンをクリックします。  
[OK] 2 回クリックし、マシンを再起動します。  
メモリの割り付け超過の防止  
マシンの物理メモリ (RAM) を過度に割り付けるとステムのペーォー  
ルトが頻繁に発生しますージ・フォールトが頻繁に発生するとSybase IQ  
のパフォーマンスが著しく低下します。Sybase IQ のバッファを慎重に割り付  
け、Sybase IQ プロセスの仮想アドレス空間と使用可能な物理メモリをモニタ  
リングすることによりモリの割り付けの超過を防ぐことができますの  
項では、Sybase IQ によるマシンの物理メモリの使用状況をモニタリングする  
ためのガイドラインについて説明します。  
物理メモリのモニタリング  
アプリケーション (Sybase IQ) が使用できる物理メモリ量は[物理メモリ (KB)]  
の下に表示されます[ 利用可能 ] の値が常に 5000 未満である場合はシン  
の物理メモリが過度に割り付けられている可能性があります。これは、値が  
5000(KB) 台になると低限 5MB の空きメモリを維持するために Windows が  
ページ・フォールトを発生させるからです。  
物理メモリをモニタリングするには、[ タスク マネージャ ] アプレットの [ パ  
フォーマンス ] タブをクリックします。  
ファイル・システム  
Windows ファイル・システムでは、ファイル、ディレクトリ、ボリューム・レ  
ベルでの圧縮がサポートされています。Sybase IQ データベースを格納するす  
べてのディスクとボリュームでWindows ファイステムの圧縮を無効に  
してくださいれはSybase IQ が組み込みの圧縮を提供しているためです。  
ファイステムの圧縮を使用してもれ以上データベースのサイズを縮  
小することはできず、読み込みや書き込みを実行するときに CPU のオーバ  
ヘッドが増えるだけです。  
178  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
7 Windows システムでのサーバのチューニング  
パフォーマンスのモニタリング  
Sybase IQ のパフォーマンスをモニタリングするための主なツールは、Sybase  
IQ パフォーマンス・モニタですのツールについては「第 6 章 パフォーマ  
ンスのモニタリングとチューニングに記載されていますらにペレー  
ティング・システムのモニタリング・ツールも使用できます。  
Windows にはステムのパフォーマンスをモニタリングするツールが 2 つあ  
ります。  
Windows タスク マネージャには 2 つのウィンドウがあり、現在のシステム・  
パフォーマンスの概要を簡単に読み取ることができます。タスク マネージャ  
を起動するには、[ Ctrl + Alt + Del] を押し、[ タスク マネージャ ] ボタンをク  
リックします。[ プロセス ] タブをクリックすると、システムで現在実行中の  
すべてのプロセスがリストされます。表示される列をカスタマイズするには、  
[ 表示 ] - [ 列の選択 ] をクリックします。[CPU 使用率 ] 列、[ メモリ使用量 ]  
[ 仮想メモリ サイズ ] 列はCPU やメモリにボトルネックがあるかどうか  
を判断するのに役立ちます。[ パフォーマンス ] タブでは、マシンのパフォー  
マンスのさまざまなカウンタと履歴を確認できます。  
パフォーマンス モニタには、マシンのパフォーマンスのより詳細な分析が表  
示されます。プロセッサ、プロセス、ディスク、ネットワークなど、さまざま  
なシステムやアプリケーショブジェクトに関するカウンタを個別にモニ  
タリングできます。  
仮想アドレス空間とワーキング・セットのモニタリング  
プロセスの仮想アドレス空間はロセスの合計サイズですロセスのワー  
キング・セットは在プロセスに割り付けられている物理メモリ量ですほ  
とんどの環境では度なシステムのペーォールト避けるためにSybase  
IQ プロセスの仮想アドレス空間をマシンの物理メモリより小さくしてくだ  
さい。  
Sybase IQ サーバ内での仮想メモリの使用パターンのせいで、Windows プラッ  
トフォーム上で仮想メモリの断片化によって処理が過度に増大する可能性が  
あります。このような状況に陥る可能性を小さくするため、Sybase IQ では  
Windows XP Windows Server 2003 について Microsoft LFH ( 低断片化ヒー  
) の使用をサポートしています。  
仮想アドレス空間とワーキング・セットをモニタリングするには  
1
2
3
4
パフォーマンス モニタを起動します。  
[+] アイコンをクリックして、[Process] オブジェクトを選択します。  
最初の [Sybase IQ] インスタンスを選択します。  
[Virtual Bytes] カウンタと [Working Set] カウンタを選択します。  
パフォーマンス&チューニング・ガイド  
179  
Download from Www.Somanuals.com. All Manuals Search And Download.  
           
NTFS キャッシュの使用  
ページ・フォールトのモニタリング  
上記と同じように、Windows パフォーマンス モニタで [Sybase IQ] プロセスを選  
択します。[Page Faults/sec] カウンタを選択します。このカウンタにはソフト」  
ページ・フォールトと「ハード」ページ・フォールトの両方が含まれます。ハー  
ド・ページ・フォールトはィスク I/O を引き起こすページ・フォールトです。  
ソフォールトは一般にフォーマンスの問題には関係しません。  
ハーォールトの数値を調べるには[LogicalDisk] オブジェクト、  
および pagefile.sys ファイルが格納されている場所 ( このファイルは Sybase IQ  
データベースとは別のボリュームに格納してくださ) のインスタンスを選択  
します。[Disk Transfers/sec] カウンタを選択します。この値を [Page Faults/sec]  
の値と比較するとージ・フォールトに対するハード・ページ・フォールト  
の割合がわかりますージ・ファイルへの I/O アクティビティはほとんどな  
いことが理想ですだしモリが少ない構成ではージングが発生する  
ことが多くなります。  
ハード・ページ・フォールト率が毎秒 20 を超える状態が持続する場合は、マ  
シンの物理メモリが過度に割り付けられています。  
NTFS キャッシュの使用  
ネットワーク・サービスのサーバのオプションで [ ネットワーク アプリケー  
ションのスループットを最大にする ] を有効にした状態で、NTFS とその関連  
のキャッシュを使用すると、挿入とクエリの両方で Sybase IQ のパフォーマン  
スが向上しますれは主に理メモリ量とIntel Pentium Sybase IQ ペー  
ジの圧縮解除能力が同じでも、NTFS の方が Sybase IQ バッファ・キャッシュ  
より大量のデータを格納できるからです。したがって、Windows プラット  
フォームで Sybase IQ を使用する場合はSybase IQ バッフャッシュのサ  
イズを推奨される標準設定より小さくしてください。  
Sybase IQ メイッフャッシュとテンポラッフャッシュ  
にはSybase IQ データ ( ページ ) が非圧縮形式で格納されますまり100MB  
Sybase IQ バッファ・キャッシュには、100MB 分のデータを格納できます。  
これに対しNTFS キャッシュでは Sybase IQ データを圧縮形式で管理します。  
このため、圧縮率が 2:1 の場合、100MB NTFS キャッシュには 200MB の  
Sybase IQ データが格納されている可能性があります。したがって、NTFS  
キャッシュでは、キャッシュのヒット率をより高く維持して、I/O を減らすこ  
とが可能です。たとえ NTFS キャッシュから Sybase IQ バッファ・キャッシュ  
に移動するデータを圧縮解除するために計算のオーバヘッドが生じても、I/O  
の削減効果の方が重要です。  
180  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
         
7 Windows システムでのサーバのチューニング  
挿入とクエリのチューニング  
この項ではWindows プラットフォームでの挿入とクエリをチューニングする  
ための追加のガイドラインについて説明します。  
適切にチューニングされた挿入オペレーションの特性  
適切にチューニングされた Sybase IQ の挿入オペレーションには、ある特性が  
見られますれらの特性はWindows タスク マネージャと Windows パフォー  
マンス モニタで確認できます。  
挿入オペレーションの大部分は、CPU の能力に依存します。システム内  
のすべての CPU は、能力の 100% 近くを使用して実行されます。CPU の  
95% 以上がユーザ・モードで実行されますのことはWindows タスク  
マネージャの [ パフォーマンス ] タブをクリックし、[ 表示 ] – [ カーネル  
時間を表示する ] オプションを設定すると簡単に確認できます。  
物理メモリを過度に割り付けないように注意してくださいSybase  
IQ プロセスの仮想アドレス空間はシンの物理メモリ (RAM) より小さ  
くする必要があります。512MB から 2GB の大容量の物理メモリを備えた  
マシンでは、これは問題になりません。メモリ量が 256MB 未満のマシン  
では、次の項の追加のガイドラインを参照してください。  
ハード・ページ・フォルト (pagefile.sys が格納されているボリュームへの  
I/O) を少なくし、理想的には 0 ( ゼロ ) に近づけてください。  
IQ ストアへの I/O 処理が安定して実行され、ディスク・サブシステムの  
I/O 処理能力を超えないようにします。  
CreateFile オプションを ( ファイルの作成時および開くときの両方に ) 使用しま  
LOAD TABLE コマンドで指定したファイルにはのオプションが使用さ  
れます。これにより、先読みが行われ、NTFS キャッシュ・メモリの使用量が  
減少するため、ロードのパフォーマンスが向上します。  
ロードのパフォーマンスは、さらに向上する可能性があります。場合によって  
は大幅に向上しますれにはSybase IQ メイン・バッファ・キャッシュとテ  
ンポラリ・バッファ・キャッシュのサイズをSybase IQ のメイン・バッファ・  
キャッシュとテンポラリ・バッファ・キャッシュ」(111 ページ ) で推奨されて  
いる計算上の値よりもかなり小さく設定します。これでパフォーマンスが向上  
する理由はNTFS キャッシュの使用」(180 ページ ) に記載されています。  
Sybase IQ メイン・バッファ・キャッシュとテンポラリ・バッファ・キャッシュ  
を、計算上の推奨値より最大 50% 小さく設定できます。  
パフォーマンス&チューニング・ガイド  
181  
Download from Www.Somanuals.com. All Manuals Search And Download.  
         
バックアップ操作のチューニング  
クエリのチューニング  
クエリのパフォーマンスも向上する可能性がありますれには述のよう  
に、メイン・バッファ・キャッシュとテンポラリ・バッファ・キャッシュのサ  
イズを小さく設定しますだしルチユーザ環境では注意が必要ですテ  
ンポラリ・バッファ・キャッシュのサイズを小さくすると数ページの位置  
決めとソールゴリズムに影響しフォーマンスの低下を招くことがあ  
ります。クエリ・プラン、構造、オプションの詳細については「第 3 章 クエ  
リと削除の最適化」を参照してください。  
バックアップ操作のチューニング  
Windows では定長の I/O デバイスのみがサポートされていますのため、  
テープの読み込みや書き込みはの前後の読み込みや書き込みと同じサイズ  
で行う必要がありますみ込みや書き込みの操作がハードウェバイス  
の容量を超えた場合作は失敗しますたがってックアップやリスト  
アの操作ではードウェアが設定されているサイズですべての書き込み ( ま  
たは読み込み ) を行わないとックアップ ( またはリストア ) が失敗します。  
Sybase IQ では、どのプラットフォームでもできるだけ効率的に読み込みと書  
き込みの操作が行われるようにデフォルトが設定されています。ただし、  
Sybase IQ データベースの作成時にデフォルトのブロック・サイズを上書きし  
ている場合はのデータベースをバックアップするときにブロック係数を調  
整する必要があります。  
バックアップまたはリストアでは、次の式が適用されます。  
block size x block factor I/O size  
Windows システムでブロック係数を調整するには使用中のテーバイス  
で処理できる物理ブロックの最大サイズの情報が必要ですライブの  
製造元のマニュアルにはの情報は記載されていません。値 ( 通常は 64KB)  
を調べるにはWIN32 API 呼び出しを使って小さなアプレットを作成する必要  
がありますしてータベースのブロック・サイズと BACKUP コマンド  
BLOCK FACTOR オプションを使用して、バックアップのパフォーマンス  
を最適化します。完全な構文と使用方法についてはSybase IQ リファレン  
ス・マニュアル』を参照してください。  
I/O 操作が最大ブロック・サイズに近づくほどックアップのパフォーマ  
ンスが向上します。BLOCK FACTOR の整数値にブロック・サイズを乗算し  
たときにライブのブロッイズにできるだけ近い値が得られるように  
します。  
182  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
     
7 Windows システムでのサーバのチューニング  
データの整合性を保つために、Sybase IQ は書き込んだ各ブロックに余分な  
データを追加することに注意してくださいのためータベースのブロッ  
ク・サイズが 8192 で、テープ・デバイスで処理できる最大ブロック・サイズ  
128KB の場合来なら 8192 * 16 = 128KB となるはずですがロック係  
数に 16 は使用できませんI/O 操作で Sybase IQ が追加する余分なデータを  
計算に入れ、BLOCK FACTOR 15 を使用する必要があります。15 という値  
Windows でデフォルトのデータベース・ブロック・サイズとデフォルトの  
IQ ペーイズ (128KB) を使用したときのデフォルトのブロック係数です。  
パフォーマンス&チューニング・ガイド  
183  
Download from Www.Somanuals.com. All Manuals Search And Download.  
バックアップ操作のチューニング  
184  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
索引  
DEFAULT_LIKE_RANGE_SELECTIVITY  
オプション 38  
DENSE_RANK 関数 17  
A
AGGREGATION_ALGORITHM_ PREFERENCE  
オプション 38  
AND キーワード  
AVG 関数 11  
EARLY_PREDICATE_EXECUTION オプション 38, 39  
B
BETWEEN 条件 10  
BLANK PADDING  
F
BLOCK FACTOR  
FROM 5, 143  
ジョイン 20  
C
CUBE 48  
COUNT 関数 11, 12  
CPU  
GROUP BY 句の拡張機能 44, 47  
GROUPING 関数  
CPU 使用率  
NULL 49  
モニタリング 171, 176  
CREATE DBSPACE 128  
CUBE 演算子 56  
ROLLUP 処理 49  
SELECT 56  
CUBE 処理 47, 48  
NULL 49  
59  
CURRENT ROW 66, 67  
I
I/O  
D
パフォーマンスの推奨事項 125  
IN 条件 10  
IN_SUBQUERY_PREFERENCE オプション 39  
INDEX_ADVISOR オプション 35  
INDEX_PREFERENCE オプション 39  
dbspace  
最適なパフォーマンスのための格納 128  
DEFAULT_HAVING_SELECTIVITY オプション 38  
DEFAULT_LIKE_MATCH_SELECTIVITY  
オプション 38  
パフォーマンス&チューニング・ガイド  
185  
Download from Www.Somanuals.com. All Manuals Search And Download.  
 
索引  
Interactive SQL での特定のプロシージャの  
Interactive SQL でのプロシージャ・プロファイリング  
パフォーマンスの向上 180  
メモリの横取り 177  
IQ PATH オプション  
NTILE 関数 17  
IQ ストア  
NULL 値  
バッファ・キャッシュ・サイズ 113  
IQ ページ・サイズ  
決定 115  
50  
iq_dummy テーブル  
iqgovern イッチ  
パフォーマンスを向上させるためのクエリの  
5
制限 134  
O
IQGOVERN_MAX_PRIORITY オプション 38  
IQGOVERN_PRIORITY 38  
OLAP 63  
IQMSG ログ  
最大サイズの設定 132  
iqnumbercpus  
Grouping() 47  
CPU 数の設定 134  
iqwmem スイッチ 120  
NULL 49  
ROWS 63  
J
JOIN_ALGORITHM_PREFERENCE オプション 39  
機能 44  
L
LIST 関数 11  
M
MAIN_CACHE_MEMORY_MB オプション 113  
MAX 関数 11  
MAX_CURSOR_COUNT オプション 135  
MAX_HASH_ROWS オプション 39  
MAX_QUERY_TIME オプション 37  
MAX_STATEMENT_COUNT オプション 135  
maximum 関数 11  
実行のセマンティック・フェーズ 45  
集合関数 61  
使用 45  
MIN 関数 11  
小計ロー 48  
数値関数 44  
説明 44  
N
統計関数 44, 61, 63  
範囲 70  
NOEXEC オプション 36  
NT CreateFile オプション 181  
NT タスク マネージャ 179  
分散統計関数 44, 63  
186  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
利点 45  
QUERY_DETAIL オプション 36  
ロー 67  
QUERY_PLAN_AFTER_RUN オプション 36  
QUERY_PLAN_AS_HTML オプション 36  
QUERY_PLAN_AS_HTML_DIRECTORY オプション 36  
QUERY_TEMP_SPACE_LIMIT オプション 134  
OLAP OVER 62  
OLAP 関数  
ウィンドウ 62  
順序付きセット 82  
数値関数 85  
統計集合 81  
分散統計 82  
RANGE 63  
OLAP の例 89  
RANK 関数 17  
RAWDETECT  
ORDER BY の結果 93  
ディスク・ストライピング・オプション 128  
ROLLUP 演算子 48  
SELECT 48  
ROLLUP 処理 47, 48  
NULL 49  
小計ロ48  
複数の集合関数をクエリ内で使用 94  
無制限ウィンドウ 72  
UNIX 上で CPU をモニタリング 176  
SELECT 文  
説明 2, 28  
sp_iqtable プロシージャ  
3
累積和の計算 92  
STDDEV_POP 関数 82  
ローベースのウィンドウ・フレーム 69  
ソート順 72  
Sybase Central  
パフォーマンスのモニタリング 148  
OS_FILE_CACHE_BUFFERING オプション 122  
OVER 17, 62  
5
T
P
TEMP_CACHE_MEMORY_MB オプション 113  
PARTITION BY 64  
PERCENT_RANK 関数 17  
PERCENTILE_CONT 関数 17, 82  
PERCENTILE_DISC 関数 17, 82  
PREFETCH_BUFFER_LIMIT オプション 136  
ps コマンド  
UNIX 上で CPU をモニタリング 176  
パフォーマンス&チューニング・ガイド  
187  
Download from Www.Somanuals.com. All Manuals Search And Download.  
索引  
U
UNION ALL  
使用  
7
views 143  
ルール 143  
ウィンドウ  
V
VAR_POP 関数 82  
VAR_SAMP 関数 82  
vmstat コマンド  
集合 63  
順序 64  
W
WHERE 句  
統計 63  
フレーム 65  
分割 64  
BETWEEN 条件 10  
分散統63  
日付の比較  
7
UNBOUNDED PREDEDING 67  
値ベースのウィンドウ・フレーム 70  
ORDER BY 71  
昇順と降順 71  
ウィンドウのサイズ  
ROWS 63  
アドレス空間  
仮想 179  
アポストロフィ  
使用 7  
アルファベット順  
ウィンドウの定義 62  
範囲ベース 70, 71  
ローベース 69  
ウィンドウ・フレーム句 65  
ウィンドウ・フレーム単位 65, 67, 70  
範囲 70  
イベント  
個別プロファイリング情報の表示 154  
プロファイリング・データの表示 149  
要約プロファイリング・データの表示 153  
インデックス・アドバイザ 138  
ロー 67  
ウィンドウ・フレームの物理的なオフセット 67  
ウィンドウ・フレームの論理的なオフセット 70  
ウィンドウ名 62  
188  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
応答時間 104  
オプション  
集合 11, 61  
数値 44, 85  
INDEX_ADVISOR 35  
NOEXEC 36  
QUERY_DETAIL 36  
統計 44  
統計集合 81  
標準偏差 81  
プロファイリング・データの表示 149  
分散 81  
予期しない動作  
オプション値  
5
分散統計 44, 82  
分析 17, 44, 61  
トランケーション 35  
オンライン分析処理  
CUBE 演算子 56  
NULL 49  
ランク付け 44, 75  
ROLLUP 演算子 48  
機能 44  
小計ロー 48  
キー・ジョイン  
使用 22  
逆分散統計関数 82  
キャッシュ  
「バッファ・キャッシュ」参照 157  
NTFS 180  
カーソル  
数の制限 135  
外部参照  
バッフ180  
定義 29  
拡張機能、GROUP BY 47  
仮想アドレス空間 179  
仮想メモリ  
断片化 120  
カラム  
順序  
説明  
クエリ  
6
4
Adaptive Server Anywhere による処理  
構築 31  
5
関数  
最適化 35, 38, 138  
PERCENTILE_CONT 関数 82  
PERCENTILE_DISC 関数 82  
SOUNDEX 関数 10  
小計ロー 48  
推奨するインデックス 138  
チューニング 182  
STDDEV_POP 関数 82  
STDDEV_SAMP 関数 82  
VAR_POP 関数 82  
同時クエリの制限 134  
プレフィクス 47  
メモリ使用の制限 134  
VAR_SAMP 関数 82  
ウィンドウ 45, 62, 80  
パフォーマンス&チューニング・ガイド  
189  
Download from Www.Somanuals.com. All Manuals Search And Download.  
索引  
クエリ・サーバ  
集合関61  
STDDEV_SAMP 82  
クエリの最適化 138  
クエリのパフォーマンス  
Adaptive Server Anywhere のルールによる処理 34  
CIS 機能補正の影響 34  
カタログ・ストア・テーブル 34  
クエリ・プラン 35  
集合関数、統計 81  
述部単位のヒントの指定 39  
述部ヒント 39  
順次ディスク I/O 129  
グラフィカル 37  
実行せずに生成 35, 36  
グループ化されたデータ 11  
ジョイン  
外積 19  
計算、隣接ロー間のデルタ 72  
現在のロー 67  
データ型 25  
小計ロー 48  
NULL 49  
ROLLUP 処理 48  
構築 48  
合計ロー  
降順 71  
コマンド  
定義 48, 56  
条件  
長いコマンド  
昇順 71  
サーバ  
統計 148  
サブクエリ  
数値関44  
使用 28  
個別プロファイリング情報の表示 154  
パフォーマンスのモニタリング 148  
プロファイリング・データの表示 149  
要約プロファイリング・データの表示 153  
スラッシング  
システム・ストアド・プロシージャ  
システム・トリガ  
個別プロファイリング情報の表示 155  
プロファイリング・データの表示 149  
要約プロファイリング・データの表示 153  
実行のセマンティック・フェーズ 45  
実行のフェーズ 45  
3
HASH_THRASHING_PERCENT オプション 170  
回避策 169  
スループット 104  
最大化 177  
190  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
索引  
スレッド  
チューニング 177  
クエリ 182  
管理オプション 124  
バッファ・キャッシュ 169  
モニタリング 162  
スワッピング  
必要なディスク領域 105  
メモリ 105  
スワップ・ファイル  
定義 138  
規則 127  
定義 126  
制限  
内部 127  
7
ロードにおける使用 127  
パフォーマンスへの影響 138  
セグメント  
接続  
文の制限 135  
データ  
相関名  
記憶域 180  
データ型  
説明 20  
定義 29  
チューニング 181  
ストライプ・ディスクの使用 127  
パフォーマンス 117  
データベース  
508 条  
サンプxiv  
準拠 xiv  
パフォーマンス向上のための非正規化 141  
非正規化の利点 142  
データベース間のジョイン  
パフォーマンスへの影響 34  
データベース・セグメント  
最適なパフォーマンスのための格納 128  
データベース・プロシージャ  
プロファイリング・データの表示 149  
データベース・プロシージャ・プロファイリング  
説明 149  
タスク マネージャ 179  
ダミーの Sybase IQ テーブル  
探索条件  
5
概要  
7
サブクエリ 28  
ショートカット 10  
日付の比較  
8
単純な集合関数 61  
断片化 120  
パフォーマンス&チューニング・ガイド  
191  
Download from Www.Somanuals.com. All Manuals Search And Download.  
索引  
テーブル  
パーティション  
iq_dummy  
外部キー 22  
結合 139  
定義 125  
ジョイン 139  
相関名 20  
バッファ  
プライマリ・キー 21  
リスト 3  
テーブルのクエリ  
テンポラリ・ストア  
バッファ・キャッシュ・サイズ 113  
無効化 122  
統計  
サーバ 148  
レイアウト 169  
統計関数 44, 63  
統計集合関数 81  
ドキュメント  
CD xi  
オンライン xi  
I/O の分125  
向上 13  
表記規則 xiii, xiv  
トランザクション・ログ  
説明 129  
正しいインデックス タイプの選択 138  
トランケート 130  
トリガ  
データベースの非正規化の利点 142  
要約プロファイリング・データの表示 153  
概要 147  
ネットワーク  
パフォーマンスのモニタリング  
Sybase Central 148  
設定 145  
165  
大量のデータ転送 145  
パフォーマンス向上の推奨方法 145  
パラメータ  
関数 11  
範囲 8, 70  
ウィンドウ順序句 65  
ウィンドウ・フレーム単位 65  
ウィンドウ・フレームの論理的なオフセット 70  
192  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
範囲指定 67, 70  
範囲ベースのウィンドウ・フレーム 70, 71  
ソート順序 72  
SQL での無効化 151  
SQL での有効化 149  
SQL でのリセット 150  
Sybase Central での無効化 151  
Sybase Central でのリセット 150  
ヒープ  
低断片化 120  
比較  
説明 7, 8  
非正規化  
短所 142  
システム・トリガ 153, 155  
ストアド・プロシージャと関数 153, 154  
トリガ 153, 155  
パフォーマンスの利点 142  
理由 141  
日付 8, 10  
表記規則  
構文 xiii  
書体 xiv  
Sybase Central 152  
ドキュメント xiii, xiv  
標準  
SQL 151  
508 条への準拠 xiv  
標準と対応  
Sybase Central 151  
508 条への準拠 xiv  
標準偏差関数 81  
標本分散関数 82  
プロシージャ・プロファイリングの有効化  
Sybase Central 149  
ファイル  
プロセス  
増加 120  
最適なパフォーマンスのための格納 129  
物理メモリ  
モニタリング 178  
不等号、テスト  
8
IQ ページ・サイズとの関係 115  
プロファイリング情報  
イベント 154  
プリフェッチされたキャッシュ・ページ 136  
プレフィクス 47  
ROLLUP 処理 48  
システム・トリガ 155  
ストアド・プロシージャと関数 154  
トリガ 155  
小計ロー 48  
プレフィクス・カラム  
ROLLUP 処理 48  
分割されたテーブル 143, 144  
分散関数 81  
分散統計関数 44, 63, 82  
パフォーマンス&チューニング・ガイド  
193  
Download from Www.Somanuals.com. All Manuals Search And Download.  
索引  
ページ  
モニタ  
圧縮解除 180  
IQ UTILITIES の構文 157  
ページ・フォールト 177  
モニタリング 180  
ページング  
起動と停止 157  
出力ファイル・ロケーションの設定 158  
モニタリング 148  
Windows でのモニタリング 171  
パフォーマンスへの影響 105  
メモリ 105  
物理メモリ 178  
ページ・フォールト 180  
ワーキング・セット 179  
母標準偏差関数 82  
母分散関数 82  
マルチスレッド  
要約情報  
パフォーマンスへの影響 123  
マルチプレックス・データベース  
ディスク領域 137  
CUBE 演算子 56  
イベント 153  
メモリ 106  
トリガ 153  
無制限ウィンドウの使用 72  
ランク付け関数 44, 63  
OLAP での要件 65  
メッセージ・ログ  
ウィンドウ順序句 65  
77, 78, 79  
メモリ  
「バッファ・キャッシュ」参照 113  
オーバヘッド 109  
クエリによる使用の制限 134  
断片化 120  
隣接ロー間のデルタの計算 72  
必要量の削減 116  
ページング 105  
マルチプレックス・データベース 106  
連結 120  
ロードの要件 109  
194  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  
索引  
例、OLAP 89  
80, 81  
連結メモリ 120  
連邦リハビリテーション法  
508 xiv  
ロー 67  
Rows Between Unbounded Preceding and  
Rows Between Unbounded Preceding and  
ウィンドウ・フレームの物理的なオフセット 67  
小計ロー 48  
説明  
選択  
4
7
ロー指定 67, 70  
ロー・デバイス  
パフォーマンスへの影響 125  
クエリ・サーバ間 137  
ロー・パーティション  
メモリの使用 109  
ローベースのウィンドウ・フレーム 69  
ワーキング・セット 179  
パフォーマンス&チューニング・ガイド  
195  
Download from Www.Somanuals.com. All Manuals Search And Download.  
索引  
196  
Sybase IQ  
Download from Www.Somanuals.com. All Manuals Search And Download.  

Sentry Industries Universal Remote 0 80068 65030 0 User Manual
Sharp CRT Television LC 32DH500E User Manual
Snell Acoustics Speaker AMC 680 User Manual
Sony CRT Television KV HA14 User Manual
Sony eBook Reader PRS 650 User Manual
Sony Ericsson Cell Phone J200 User Manual
Soundstream Technologies Speaker SPL 170 User Manual
Sparky Group Drill BUR 131E User Manual
Sungale Digital Photo Frame PF1025 User Manual
Swann DVR DVR4 950 User Manual