Microsoft PowerPoint - SQL パフォーマンスチューニング.pptx

Similar documents
平成20年度成果報告書

PowerPoint プレゼンテーション

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

標準化 補足資料

PA4

Microsoft Word - 統一データアーキテクチャ.doc

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

3/7 マイグレーション開発方針 顧客名 0 作成者 根岸正 < プログラム移行方針 > システム名称 A-VX システムマイグレーション作成日 2015/09/01 < COBOL 資産のプログラム移行 > COBOLソース ( メインとCOPYLIB) を入力としてSCC 言語変換ツールにてVB

Microsoft Word - Android_SQLite講座_画面800×1280

PowerPoint プレゼンテーション

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

Dolteng Scaffoldに対する機能追加とマスタ-ディテールScaffoldの紹介

ゲートウェイ ファイル形式

クエリの作成が楽になるUDF

,, create table drop table alter table

intra-mart Accel Platform — IM-共通マスタ スマートフォン拡張プログラミングガイド   初版  

Basic descriptive statistics

メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 Copyright 2007 SRA OSS, Inc. Japan All right

このドキュメントに記載されている情報 (URL 等のインターネット Web サイトに関する情報を含む ) は 将来予告なしに変更することがあります このドキュメントに記載された内容は情報提供のみを目的としており 明示または黙示に関わらず これらの情報についてマイクロソフトはいかなる責任も負わないもの

データベース暗号化ツール「D’Amo」性能検証

第 1 章 条件分岐 この章では 条件に応じて処理を分岐する方法について説明します 1. CASE 式で複雑な条件分岐を実現 2. 関数を使用した条件分岐 3. MERGE 文による条件に応じた DML の実行

tkk0408nari

ゲートウェイのファイル形式

SQL 基礎 (6) JOIN 句 - データの結合 作成日 : 2016/02/22 作成者 : 西村 更新履歴 更新日 更新概要 作業者 2016/02/22 新規作成 西村 はじめに この資料では 下記のような JOIN によるテーブル ( データ ) の結合について簡単に説明します INNE

アプリケーション インスペクションの特別なアクション(インスペクション ポリシー マップ)

intra-mart Accel Platform

ご存知ですか? データ転送

基本サンプル

: ORDER BY

PowerPoint Presentation

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

ゲートウェイのファイル形式

目次 更新履歴... 1 はじめに... 3 レコードセット?... 3 準備... 5 SQL でデータを取得する... 6 データのループ処理... 7 列の値を取得する... 7 対象行を変更する (MoveFirst, MoveNext, MovePrevious, MoveLast)...

PowerPoint プレゼンテーション

PostgreSQL SQL チューニング入門 ~ Explaining Explain より ~ 2012 年 11 月 30 日 株式会社アシスト 田中健一朗

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

Taro php.jtdc

スライド 1

Microsoft Word - Writing Windows Installer's DLL.doc

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

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

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

Caché SQL ゲートウェイの使用法

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

ユーザ デバイス プロファイルの ファイル形式

Microsoft Word - ECALSDS01_Vr1_5_080305_ja.doc

Microsoft PowerPoint - db03-5.ppt

Microsoft PowerPoint - 第5章補足-DB2組み込みSQL.ppt

Microsoft PowerPoint - Symposia2012_EnsembleUpdates_Horita.pptx

untitled

基本サンプル

Microsoft Word - PHP_SQLServer2012

Microsoft PowerPoint - 3-Forms-Others.ppt

Microsoft PowerPoint - 講義補助資料2017.pptx

TALON Tips < カレンダー ( 月別 ) の画面を表示する > 株式会社 HOIPOI 第 1.1 版 p. 1

Microsoft PowerPoint - advanced-2-olap.ppt [互換モード]

Caché SQL に関するよくある質問

Oracle Database Connect 2017 JPOUG

電話機のファイル形式

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

早分かりS2Dao

関数サンプル1

intra-mart Accel Platform — TableMaintenance ユーザ操作ガイド   第8版  

Chapter Two

Chapter Two

eラーニング資料 e ラーニングの制作目標 データベース編 41 ページデータベースの基本となる概要を以下に示す この内容のコースで eラーニングコンテンツを作成予定 データベース管理 コンピュータで行われる基本的なデータに対する処理は 次の 4 種類です 新しいデータを追加する 既存のデータを探索

Web 環境におけるレイヤー別負荷の 2 違い DB サーバ AP サーバ 後ろのレイヤーほど負荷が高く ボトルネックになりやすい

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid("text_box02_id"); if ("001" == statee

Microsoft認定資格問題集(70-483_demo)

1 ex01.sql ex01.sql ; user_id from (select user_id ;) user_id * select select (3+4)*7, SIN(PI()/2) ; (1) select < > from < > ; :, * user_id user_name

Microsoft Word - 06.doc

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

ER/Studio Data Architect 2016 の新機能

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


Microsoft PowerPoint pptx

Exercise 41: Create a Drill Down Report

PowerPoint プレゼンテーション

Sequel のすすめ 私が SQL を嫌いな理由 とみたまさひろ RubyHiroba Sequel のすすめ - 私が SQL を嫌いな理由 Powered by Rabbit 2.0.7

intra-mart Accel Platform — TableMaintenance ユーザ操作ガイド   第7版   None

2D/3D CAD データ管理導入手法実践セミナー Autodesk Vault 最新バージョン情報 Presenter Name 2013 年 4 月 2013 Autodesk

立ち読みページ

はじめに コースの概要と目的条件分岐の方法や複雑な集計の手法など SQL のコーディングの幅を広げるためのテクニックについて説明します また パフォーマンスを考慮した記述方法や正しい結果を取得するための記述方法などについても あわせて説明します 本コースでは 実践的な SQL の記述手法を広く浅く紹

セットアップカード

PrintBarrierV3L50(V ) アップデート手順書 第 1.01 版 株式会社富士通アドバンストエンジニアリング 平成 25 年 3 月 7 日 1

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

Delphi Generics.Collections

NEC COBOL SQL アクセス Server Runtime V1.0 COBOL SQL アクセス Server Runtime V1.0 (1 年間保守付 ) COBOL SQL アクセス Server Runtime V1.0 (1 年間時間延長保守付 ) セットアップカード SL438

2 目次 1 はじめに 2 システム 3 ユーザインタフェース 4 評価 5 まとめと課題 参考文献

PowerPoint プレゼンテーション

PowerRDBconnector説明書(SQLServer編)

S2DaoでもN:Nできます

インテル(R) Visual Fortran コンパイラ 10.0

Oracle Text 概要

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

JapanCert 専門 IT 認証試験問題集提供者 1 年で無料進級することに提供する

データアダプタ概要

Microsoft Word - Lab5d-DB2組み込みSQL.doc

TALON Tips < 親子関係のある構成データを TALON で表示する > 株式会社 HOIPOI 第 1.1 版 p. 1

導入設定ガイド

Transcription:

Caché テクニカルコンサルタント上中進太郎インターシステムズジャパン Agenda Caché SQL 概要 データ インデックスグローバルの構造 埋め込み SQL 動的 SQL が処理される仕組み クエリのロジック SQL パフォーマンスチューニング クエリプラン チューニング TuneTable Index 追加 クエリキーワード SQL パフォーマンス計測 %SYS.PTools ユーティリティ 2 1

Caché SQL 概要 Caché のSQL はどうやって動いてる? サンプルクラス定義 グローバル構造 ( データ インデックス ) 埋め込みSQL の仕組み 動的 SQL の仕組み SQL ロジックの基本的な考え 3 Caché SQL 概要 サンプルクラス定義 Class Symposia.Person Extends %Persistent { } Property RegID As %Integer; Property Name As %String; Property CompanyName As %String; Index RegIDIndex On RegID [U Unique ]; Index CoNameIndex On CompanyName [ Type = bitmap ]; 4 2

Caché SQL 概要 データグローバル ^Symposia.PersonD=10 IDを採番する ^Symposia.PersonD(1)=$lb(,774, 太郎 "," ロイヤル薬品証券 ") ^Symposia.PersonD(2)=$lb(,894, 鈴 花, サイバー技研興業 ) データは $List 形式で格納されている $List の構造 2N17 1712T 12TInterSystems InterSystems5T t 5TTokyo 各データの前にデータ データ型がバイナリ形式で格納されている 5 Caché SQL 概要 インデックスグローバル 標準インデックス ^Symposia.PersonI("RegIDIndex", ("RegIDIndex",774,1)=" ^Symposia.PersonI Symposia.PersonI("RegIDIndex", ("RegIDIndex",894 " 894,2)=" グローバル名 ( インデックス名, 対象プロパティ 1,,ID) =$LB( インデックスデータ ) ビットマップインデックス ^Symposia.PersonI( ( CoNameIndex, ロイヤル薬品証券,1) =$c(150,1,1,0,1,0)/*$bit(01)*/ )*/ グローバル名 ( インデックス名, 対象データ,chunk) =010000001000....... 1chunkに最 64000bit 6 3

クエリを実 したらどのように処理されているのか? Caché SQL 概要 埋め込みSQL クラスクエリは そのルーチンやクラスにクエリが展開される SQL1.mac SQL1.int 7 クエリを実 したらどのように処理されているのか? Caché SQL 概要 動的 SQL や外部からの xdbc 接続では クエリキャッシュができる クエリキャッシュをクラス等で参照するには SMP 構成 SQL 設定 般 SQL 設定 クエリキャッシュ- ソース保存 = はいに変更 xdbc 経由のSQLや %ResultSet API の場合 %sqlcq.[ns name].[n].mac 新しい %SQL.Statement APIの場合 %sqlcq.[ns name].cls[n].cls がクエリキャッシュとして 成される * 使 しているバージョンによって異なるクエリキャッシュ名となる可能性がある SQL2mac 8 4

9 Caché SQL 概要 クエリのロジックを予想してみる Select RegID from Symposia.Person where CompanyName = ʻAAAʼ Order by Name ^Symposia.PersonD=93 ^Symposia.PersonD(1)=$lb(,774, 太郎 "," ロイヤル薬品証券 ") ^Symposia.PersonD(2)=$lb(,894, 鈴 花, サイバー技研興業 ) ^Symposia.PersonI("CoNameIndex"," AAA",1) =$bit(00010000010000001) ^Symposia.PersonI("CoNameIndex"," BBB",1) =$bit(00001) CompanyNameもIndex 指定してあるので ^Symposia.PersonI( CoNameIndex, AAA,n) を参照して該当するデータグローバルのID Name 取得し その後ソートのためにNameをキーにテンポラリグローバル ^CacheTemp(Name,id)=RegIDに 度格納してから 最終的にデータを取りだす パフォーマンス調査の第 歩 10 いちいちロジックを予想したり ルーチンを たりはしていられないので クエリプランをみよう! 管理ポータルのSQL SQL の実 クエリプランの表 クエリを実 しなくても表 できる 管理ポータルの SQL スキーマ クエリキャッシュ 動的 SQL xdbc クエリのプランが確認できる STUDIO でクエリを選択して右クリック SQL に対するプラン表 5

クエリプランの具体的な 英語で処理内容を表記 次ページでキーワード紹介 相対コストとは 同 クエリ同 で 較できる相対的なコスト 主にインデックス追加前後の効果を測定できる 相対コストが低いプランのほうが良い 異なるクエリ同 のコスト 較は意味がない 11 クエリプランキーワード Call module n この表記がある場合は そのmodule 部分を先に呼び出している 12 6

クエリプランキーワード キーワード Read master map 意味 データグローバルを参照 Read index map using the given yyy looping on xxx with a %STARTSWITH range condition インデックスグローバルを参照 主にクエリのパラメータとして与えられたyyyを使 してインデックス or データ本体の値を取得 xxxでインデックス or データ本体をループ 前 致条件でループ 13 クエリプランキーワード キーワード Add ID bit to bitmap temp-file A 意味各モジュールでの検索結果をテンポラリ領域にビットマップ形式で保存 Add a row to temp-file A, subscripted by %SQLSTRING(AAA) and ID,with node data of BBB. 各モジュールの検索結果をテンポラリ領域にサブスクリプトにAAAとID を配列形式で データ部にBBBを保存例 : ^temp(aaa,id)=bbb Accumulate the max(xxx). xxx を計算する Max の場合は 較 Sumの場合は し算など (((index map INDEXNAME) UNION (bitmap temp-file A)) UNION (bitmap temp-file B)) 14 INDEX あるいはテンポラリ領域の複数の結果を UNION 処理 7

クエリプランで特に注意する点 Read master map Symposia.Table1.IDKEY, looping on ID. これは全データグローバルをループして参照しているということなので データ件数の多いテーブルの場合はよくない Read master map Symposia.Table1.IDKEY, using the given idkey value. は問題ない Add a row to temp-file A テンポラリグローバルに書いているということなので 件数にもよりますが あまりよくない この内容がインデックス追加のヒントになることもあります 15 クエリチューニング まずは TuneTable! 管理ポータル SQL SQL スキーマを参照 スキーマを表 してスキーマ全体のチューニングマ全体のチ テーブルを個別に表 してテーブルのチューニング $SYSTEM.SQL.TuneTable(tablename) TuneTable は以下の つを計測している 選択性 (SELECTIVITY) エクステントサイズ (EXTENTSIZE) 16 8

選択性 (SELECTIVITY) 選択性はデータの分散度合いを抽出して計測している N % 1 ユニークであることを表している 17 * 性別のフィールドの選択性は 50% になる 実際のデータ分布は関係ない 例えばデータ上は男性 70% 性 30% であったとしても 男性 性 というデータが抽出されたの 性 というデータが抽出されたのであれば 50% となる 99% のデータが 0 の 削除フラグ でも 削除フラグ =1 のデータが抽出されると 50% となる 管理ポータルから値を指定することも可能 18 エクステントサイズ テーブルの総データ件数を計測 エクステントサイズは複数テーブル間のJOIN が発 する場合に どのテーブルから絞り込みを開始するか 決定するのに使 される SELECT count(*) FROM Symposia.Table2,Symposia.Table3,Symposia.Table4 y p, y p WHERE T2Key=T3Key AND T2Key=T4Key AND T2Value %STARTSWITH 'A' AND T3Value %STARTSWITH 'B' AND T4Value %STARTSWITH 'C' 9

TuneTable はいつ う? システム稼働前に実 し 空のテーブルについては予測値を れておく 通常は定期的に う必要はない パフォパフォーマンスに問題が発 していない場合は特に う必要がない 各テーブルの選択性やエクステントサイズのテーブル間の 率が きく変わった場合は効果あり 注意点 TuneTable 実 中はシステムに負荷がかかります TuneTable 実 直後 関連するテーブルのすべてのクエリキャッシュがパージされます 次回実 時に新たに 成されるため負荷がかかります 稼働 直後 稼働 1 年後 トラン B トラン A マスタ 2 マスタ 1 19 インデックスを追加しよう どんなインデックスを追加する? Q. 標準インデックス? ビットマップ? A. 対象プロパティの個別値個別値が 10000 20000 個を超える場合には標準インデックスを使 したほうが良い データの分布を考えてインデックスを選択するとさらに良い 10 万件に1 件しかない 削除フラグ =1 を検出したい 標準 条件に AND 検索や OR 検索が多い ビットマップ COUNT() クエリを 速化したい ビットマップ 条件なしCount() の 速化 エクステントビットマップ 20 10

インデックスを追加しよう 対象テーブルにフィールドが多い場合はインデックスデータを活 ある特定のクエリに対して専 インデックスを設定して ク速化したい 標準インデックス クエリプランの Add a row to temp-file X をヒントにしてみる SELECT P1 FROM Symposia.Table1 WHERE P2 = 'V2411ʼ ORDER BY P3,P4 Index SpecialIndex On (P2, P3, P4) [Data = P1]; 21 22 インデックスを使わせる クエリプロセッサがインデックスを使わない 法を選択することがある レコード件数が少ないので インデックスを るよりデータを直接 たほうが早いと判断する 恣意的にインデックスを使わせたい場合は選択性 エクステントサイズなどを変更する 条件となるフィールドが関数を使 しているとインデックスを使 できない 例 :TimeStamp 型フィールド (SalesDate) を 付 (2000-01- 01) と 較 SELECT * FROM Symposia.Table5 where SalesDate > ʻ2000-01-01 00:00:00ʼ OK SELECT * FROM Symposia.Table5 where {fn CONVERT(SalesDate,SQL_DATE)} > ʻ2000-01 01-01ʼ01ʼ NG SELECT * FROM Symposia.Table5 where SalesDate > {fn CONVERT(ʻ2000-01-01ʼ,SQL_TIMESTAMP)} 01ʼ,SQL_TIMESTAMP)} OK 11

インデックスを使わせる 最近実際にあったケース Oracle からデータを SQL Gateway で移 Oracle の DATE 型は時間情報まで含むので Caché は TIMESTAMP 型に変換 クエリは 付を TO_DATE 関数で指定しているので インデックスを使わない! 解決策案 1. 指定を TO_DATEではなく TO_TIMESTAMPに変更 Where visitdate = TO_DATE(ʻ2011/06/03ʼ,ʼyyyy/mm/ddʼ) Where visitdate = TO_TIMESTAMP(ʻ2011/06/03ʼ,ʼyyyy/mm/ (ʻ2011/06/03ʼ,ʼyyyy/mm/ddʼ) 案 2. 時間情報はいらない場合 移 プログラムを作成して Caché 側でも DATE 型を利 する 23 ストアド関数をうまく使う 複雑な条件をもつクエリをストアド関数を使って簡略化する SELECT count(*) FROM Symposia.Table2 where T2Value like '%12%' or T2Value like '%23%' or T2Value like '%34%' or T2Value like '%45%' or T2Value like '%56%' or T2Value like '%67%' or T2Value like '%78%' or T2Value like '%89%' or T2Value like '%90%ʻ 条件に合致するストアド関数を 意する SELECT count(*) FROM Symposia.Table2 where Symposia.Table2_MyFunction1(T2Value)=1 24 * ストアド関数を使う場合 相対コストは余りあてにならない 12

25 クエリキーワード 1 SQLにキーワードを付与して 動作をコントロールすることができます INSERT/UPDATE/DELETE キーワード %NOLOCK データ追加 更新時にレコードのロックを実 しない レコードの競合が発 しないことが分かっている場合に使 可能 例 : 深夜のオンラインユーザ切断中のバッチ処理など %NOCHECK 外部キーの参照整合性チェックやデータの妥当性検証を わない 例 : 外部システムや H/Wから出 されたデータの追加など %NOINDEX インデックスを 成しない 全レコード追加後にまとめて %BuildIndices() メソッド等を使って 分で 成する必要あり %NOTRIGGER トリガを実 しない 26 クエリキーワード 2 SELECT キーワード (FROM 句の後につける ) %IGNOREINDICES 指定されたインデックスを使 しない SELECT * FROM %IGNOREINDICES Symposia.Table6.FlagIndex Symposia.Table6 where Flag=0 and P1 ='Aʻ ほとんどのデータでFlag=0 なのでインデックスを参照しないように指定する JOINするテーブルの順序をコントロールするキーワード %FULL %INORDER %STARTTABLE 各クエリ最適化オプションを実 しないように指定するキーワード %NOFLATTEN %NOMERGE %NOSVSO %NOTOPOPT %NOUNIONOROPT 13

SQL パフォーマンス計測 パフォーマンスを計測しよう %SYS.PTools.SQLStats クエリの実 時間を測定し データベースに保存する 有効にすると クエリキャッシュ内に計測 のコードが埋め込まれる 設定 法 Do $SYSTEM.SQL.SetSQLStats(n) 0 : 計測 コード 成を無効にする 1 : 計測 コードを 成するが 測定は わない 2 : 計測 コードを 成し クエリの開始 終了を測定する 3 : 計測 コードを 成し クエリの開始 終了 モジュール毎の時間も測定する 27 SQL パフォーマンス計測 測定する項 結果確認 測定する項 グローバル参照数 コードの実 数 クエリ モジュールの呼び出された回数 クエリ モジュールの実 時間 クエリによって返された 数 結果の確認 SQLStatsクラス内に定義されている View [%SYS_PTools.SQLStatsView SYS_PTools.SQLStatsView] SQLStatsView] を使 するのが良い 利 する可能性がある場合は $SYSTEM.SQL.SetSQLStats(1) を設定しておくとよい PTools 未設定状態から 有効にする場合はクエリキャッシュをパージする必要あり 28 14

SQL パフォーマンス計測 結果確認クエリ 1 SELECT RoutineName, ModuleName, ModuleCount, GlobalRefs, LinesOfCode, TotalTime, RowCount, QueryType, StartTime, QueryText FROM %SYS_PTools.SQLStatsView WHERE Namespace= 'SYMPOSIA' 29 SQL パフォーマンス計測 結果確認クエリ 2 SELECT RoutineName as クエリキャッシュ名, ModuleName as モジュール名, SUM(ModuleCount) AS クエリ実 回数, AVG(TotalTime TotalTime) AS 平均実 時間, SUM(TotalTime) AS 合計実 時間, AVG(GlobalRefs GlobalRefs) AS 平均グローバル参照数, AVG(LinesOfCode LinesOfCode) AS 平均コード実 数, QueryText as クエリテキスト FROM %SYS_PTools.SQLStatsView WHERE NameSpace = ʻSYMPOSIA' GROUP BY RoutineName, ModuleName ORDER BY 合計実 時間 DESC * クエリ単位で集計し 合計実 時間でソートすることでシステムへの影響が きいクエリを洗い出すことができる 30 15

SQL パフォーマンス計測 SQLStats の注意点 Select 句の場合 クエリの開始から Fetchの終了までを計測しています クライアントで Fetch 毎に処理をしている場合は その時間も含まれます = サーバでかかった時間を計測しているわけではありません 31 システムワイドの設定です 1 度クエリを実 するごとに複数回レコードの更新が実 されます システムに負荷がかかります SQL パフォーマンス計測 クエリパラメータが必要な場合 同じクエリのパフォーマンスに きな差がある場合は クエリパラメータにパフォーマンスが依存していることが考えられます クエリパラメータは View [%SYS_PTools.Query_With_Parameters ] を参照して取得することができます (2011.1~ 2011.1~) 直接の参照関係はないので 上記 View の RunTime と SQLStatsView の StartTime を 較します 32 16

SQL パフォーマンス計測 SQL ベンチマークを実 する 収集したクエリ情報 クエリパラメータを利 して 再度 SQL を順番に実 することができます (2011.1~) 1 ##class(%sys.ptools.sqlbenchmarkqueries).run(ns,1) 実 結果の確認 SELECT QueryId->QueryText QueryText,* FROM 33 %SYS_PTools.SQLBenchMarkResults WHERE QueryId->NameSpace='SYMPOSIAʻ * クエリ毎に結果を集計してまとめているわけではないので注意 クエリ毎に るには QueryId->QueryTextQueryText 等での Group by が必要 17