0 フォロワー · 496 投稿

  

InterSystems CachéはマルチモデルのDBMSおよびアプリケーションサーバーです

詳細はこちらをご覧ください

ドキュメント

記事 Toshihiko Minamoto · 10月 7, 2021 5m read

これは、オンラインドキュメントのさまざまな場所に表示される主題に関する概要であり、主に注釈として表示され、専用の章として表示されることはありません。

むかしむかし、ある所に...  おっと、おとぎ話ではありません。
Cachéの初めの頃(それからその前にも)、自分のコードを実行するためのパーティションを用意していたことがあるでしょう。 そのパーティションの一部は、すべてのローカル変数が%、A~Z、a~zでうまくソートされていた領域でした。

また、ローカルに保存する値や情報が何であれ、すべてはそこに保存されており、パーティションでどんなコードを実行する場合でも、可視状態であり、利用することができました。 完全なドキュメントと優良な規律をもって共同作業できている開発者チームであれば、問題はありません。
[残念ながら、これをおとぎ話にしてはいけません]。

0
0 255
記事 Hiroshi Sato · 10月 5, 2021 2m read

これは InterSystems FAQ サイトの記事です。
Web/CSPゲートウェイ管理ページは、通常クライアントマシンからアクセスできないように構成されています。

クライアントからその管理ページにアクセスすると、以下の様なメッセージが返ってきます。

システム管理  このシステムを使用する権限がありません。

Not authorized to use this facility.

You are not authorized to use this facility.

任意のクライアントからアクセスするためには以下の操作を行います。

Web/CSPゲートウェイ管理ページにアクセス可能なシステムからブラウザを起動し、管理ポータルにアクセスします。


管理ポータル>システム管理>構成>の所でCSPゲートウェイ管理をクリックします。


表示されるページの左ペインに表示されるデフォルトパラメータをクリックします。

システム管理マシンの所に*.*.*.*と入力し、設定を保存ボタンを押下げます。

しかしながら任意のクライアントから管理ページにアクセスできるようにするのはセキュリティの観点からはあまりお勧めできません。


アクセスできるクライアントはなるべく限定することをお勧めします。

クライアントアドレスの指定方法としては、以下のような指定形式があります。

0
0 547
記事 Hiroshi Sato · 9月 30, 2021 1m read

これは InterSystems FAQ サイトの記事です。
IRIS.DAT/CACHE.DATのタイムスタンプ更新は、データベースの内容の更新後のディスマウント時 (明示的なディスマウント処理または停止処理の際、 または、 データベースファイルのサイズ拡張時に発生します。

0
0 171
記事 Hiroshi Sato · 9月 29, 2021 2m read

これは InterSystems FAQ サイトの記事です。
こちらでは、タスクスケジュールを登録・参照するサンプルコードをご紹介します。

①タスクスケジュール登録のサンプル

※毎日 am1:00に do ^TEST を実行するタスクを作成します。 

 set task=##class(%SYS.Task).%New()
 set task.Name="MyTask1"
 set taskDescription="毎日夜中1:00に^xxx実行" // 任意
 set task.NameSpace="USER"
 set task.TimePeriod=0
 set task.DailyFrequency=0
 set task.DailyFrequencyTime=""
 set task.DailyIncrement=""
 set task.DailyStartTime=$ZTimeh("01:00:00")
 set task.DailyEndTime=""
 set task.TaskClass="%SYS.Task.RunLegacyTask"
 set task.Settings=$LB("ExecuteCode","do ^TEST") // RunLegacyTask の場合は ExecuteCode を設定 
 write task.%Save()
0
0 402
記事 Toshihiko Minamoto · 9月 28, 2021 3m read

Cachéでのデータ同期については、オブジェクトとテーブルを同期させるさまざまな方法があります。
データベースレベルでは、シャドーイングまたはミラーリングを使用できます。 

これは非常によく機能し、データの一部分だけを同期する必要がある場合には、
グローバルマッピングを使用してより小さなピースにデータを分割することができます。
または、クラス/テーブルレベルで双方向の同期が必要な場合には、オブジェクト同期機能を使用することができます。


これらすべての優れた機能には次のような制限があります。
Caché/IRISからCaché/IRISにしか機能しません。

0
0 230
記事 Megumi Kakechi · 9月 27, 2021 1m read

これは InterSystems FAQ サイトの記事です。

インターシステムズは、特定のオペレーティングシステムのバージョンの特定リリースに対して、製品の検証は実施しておりません。

特定リリースとは、例えば、Windows Server 2003 R2やWindows Server 2008 R2などを指します。

これらの保証については、オペレーティングシステムベンダーが互換性を保証する限りにおいて、提供されます。

特別な状況の詳細は、下記弊社ホームページのサポート情報に明記しています。

最新プラットフォーム情報とリリースノート


明記されていない場合には、オペレーティングシステムベンダーが互換性を保証する限りにおいて、特定リリースもサポート対象となります。


以下の関連トピックもあわせてご覧ください。

【FAQ】どんなプラットフォームで動作するのですか?

【FAQ】Windowsのサービスパックの適用は、製品サポートバージョンに影響しますか?

0
0 230
記事 Hiroshi Sato · 9月 26, 2021 3m read

これは InterSystems FAQ サイトの記事です。
リストコレクション(Property XXX As list of %String;)で定義したプロパティは、SQL関数: $LISTBUILD() 、$LISTFROMSTRING() を使用して操作できます。


各SQL関数については、下記ドキュメントページをご参照ください。

InterSystems SQL リファレンス - $LISTBUILD() 【IRIS】
IRIS SQL リファレンス - $LISTFROMSTRING() 【IRIS】
Caché SQL リファレンス - $LISTBUILD()
Caché SQL リファレンス - $LISTFROMSTRING()
 

/// クラス定義例
Class ISJ.ListOfData Extends %Persistent
{
Property listdata As list Of %String;
}

SQL文実行例は以下の通りです。 
 

0
0 270
記事 Mihoko Iijima · 9月 24, 2021 3m read

これは InterSystems FAQ サイトの記事です。

システムユーティリティクラスを利用したプログラムを作成することで出力できます。

【注意1】出力データの区切り文字がカンマではなくタブで出力されます点、ご注意ください。

【注意2】エクセルでタブ区切りのファイルを開くため、エクセルの開くメニューから出力したファイルを開いてください。

処理概要は以下の通りです。

1) %SYSTEM.SQL クラス(※)の Execute() メソッドを使用します。

第1引数:SQL文を指定します。

第2引数:内部日付が格納されている場合 yyyy-mm-dd で出力されるように表示モードを切り替えます。(1:odbcモード)

詳細は下記ドキュメントページおよびクラスリファレンスをご参照ください。

ドキュメント - $SYSTEM.SQL.Execute()【IRIS
クラスリファレンス - $SYSTEM.SQLクラス - Execute()メソッド【IRIS

ドキュメント - $SYSTEM.SQL.Execute()
クラスリファレンス - $SYSTEM.SQLクラス - Execute()メソッド

※ %SYSTEMパッケージ以下クラスは $system 特殊変数を利用してメソッドを実行できます。

set rset=$system.SQL.Execute("ここにSQL文",1)
0
0 1167
記事 Toshihiko Minamoto · 9月 23, 2021 10m read

この記事は、視覚化ツールと時系列データの分析を説明する連載の最初の記事です。 当然ながら、Caché製品ファミリーから収集できるパフォーマンス関連のデータを見ることに焦点を当てますが、 説明の途中で、他の内容についても解説していきます。 まずは、Pythonとそのエコシステムで提供されているライブラリ/ツールを探りましょう。

この連載は、Murrayが投稿したCachéのパフォーマンスと監視に関する優れた連載(こちらから参照)、より具体的にはこちらの記事と密接に関係しています。

免責事項1: 確認しているデータの解釈について話すつもりですが、それを詳しく話すと実際の目標から外れてしまう可能性があります。 そのため、Murrayの連載を先に読んで、主題の基本的な理解を得ておくことを強くお勧めします。

免責事項2: 収集したデータを視覚化するために使用できるツールは山ほどあります。 その多くは、mgstatなどから得たデータを直接処理するが、必要最低限の調整だけで処理することができます。 この記事は「このソリューションがベストですよ」という投稿ではまったくなく、 あくまでも、「データを操作する上で便利で効果的な方法を見つけたよ」という記事です。

0
0 144
記事 Hiroshi Sato · 9月 23, 2021 2m read

これは InterSystems FAQ サイトの記事です。
 

タスクスケジュールを別環境にコピー(エクスポート/インポート)するには、以下の2つの方法があります。

  1. 個別にエクスポート/インポートする場合(管理ポータルで行う方法)
  2. 複数のタスクスケジュールをエクスポート/インポートする場合(%SYS.TaskSuperクラスを使用する方法) 

1.個別にエクスポート/インポートする場合 管理ポータルから行うことが可能です。

個別のスケジュールを開くと、エクスポートボタンがあるので、そちらからエクスポートしてください。

インポートも同じく管理ポータルから行えます。

2.複数のタスクスケジュールをエクスポート/インポートする場合 タスクスケジュールのエクスポートには、%SYS.TaskSuper クラスの ExportTasks() メソッドをお使いいただけます。

実行例は以下のようになります。 

%SYS>do ##class("%SYS.TaskSuper").ExportTasks($lb(1,2,3,4,5),"c:\temp\exportedTasks.xml")

エクスポートするタスクID を $LB形式で指定します。複数指定する場合は、$lb(1,2,3,4,5) のようにカンマ区切りで指定します。

0
0 1595
記事 Hiroshi Sato · 9月 23, 2021 2m read

これは InterSystems FAQ サイトの記事です。
%IndexBuilder クラスを使用して、複数プロセスを利用してインデックス再構築を行うことができます。

Sample.Person の Home_State(連絡先住所の州情報)カラムに対して標準インデックス HomeStateIdx を定義する目的での例で記載します。

手順は以下の通りです。

1、追加/再構築予定のインデックス名をクエリオプティマイザから隠します。

>write $system.SQL.SetMapSelectability("Sample.Person","HomeStateIdx",0)
1

2、新インデックスを定義するクラス定義のスーパークラスに %IndexBuilder を一番右端に追加します。

///クラス定義文は以下の通りです(一番右端に追加します)
Class Sample.Person Extends (%Persistent, %Populate, %XML.Adaptor, %Library.IndexBuilder)

3、クラス定義の INDEXBUILDERFILTER パラメータに再構築予定のインデックス名を登録します。

Index HomeStateIdx On Home.State;
Parameter INDEXBUILDERFILTER = "HomeStateIdx";
0
0 219
記事 Megumi Kakechi · 9月 21, 2021 3m read

これは InterSystems FAQ サイトの記事です。

Windowsのグループセキュリティポリシーに停止コマンドを記述したバッチファイルを登録する事により可能です。

手順は以下のとおりです。

1.Windowsのローカルコンピュータ・ポリシーのシャットダウンスクリプトに停止コマンドを登録します。
  停止コマンドを含んだbatファイルを作成します。

 CacheStop.bat    ※InterSystems Caché  の場合

c:\intersystems\cache\bin\ccontrol stop CACHE

 IRISStop.bat     ※InterSystems IRIS の場合

c:\intersystems\IRIS\bin\iris stop IRIS


2.[ファイル名を指定して実行(R) ]で mmc と入力し、管理コンソールを起動します。   ファイル名を指定して実行の画面  


3.管理コンソールから[スナップインの追加と削除]を選択します。 スナップインの追加と削除    


4.スナップインの追加と削除で「グループ ポリシー オブジェクト エディタ」を選択し、追加します。 


5.グループ ポリシー オブジェクトの選択画面で完了ボタンを押します。


6.OKをクリックして完了します。

0
0 793
記事 Mihoko Iijima · 9月 21, 2021 3m read

これは InterSystems FAQ サイトの記事です。

Excelのマクロ機能を使ってVBAからREST/JSON経由でアクセスすることが可能です。

REST/JSONを使用したInterSystems製品との連携の簡単なサンプルを以下のGitHubサイトから入手できます。

VBAマクロサンプル

マクロサンプルは Solution/activityreport.xlsm をご覧ください。

サンプルは、コンテナを利用しています。READMEに記載の方法でコンテナを開始し、Solution/activityreport.xlsm の「データ取得」ボタンをクリックすると以下の結果が得られます。

マクロの中では、以下のGET要求を実行しています。

以下の図例は、RESTクライアントでGET要求を行った結果です(​​​ Basic 認証でアクセスしています)。


​​​上記GET要求により、ベースURL(/pm)の指定で、RESTディスパッチクラス(PM.Broker)が起動し、要求されたパス(例では /getactivities)から、PM.REST クラスの GetActivities() メソッドを実行しています。

0
0 333
記事 Hiroshi Sato · 9月 17, 2021 2m read

これは InterSystems FAQ サイトの記事です。
※ IRIS Data Platformのサーバーライセンス(プロセッサーコア単位の課金)では以下の内容は適用されませんので、ご注意お願いします。

2012.1以降のバージョンより、ライセンス管理が厳格化されたために、管理ポータルでもライセンスを消費するようになりました。


デフォルトでは、管理ポータルは独立したID(CSPセッション)単位でライセンスを消費するために同一ユーザが複数ライセンスを消費するようになります。

スタジオ、ターミナル、管理ポータル全ての消費ライセンスをに同一ユーザにまとめる方法は以下になります。

(1) スタジオ、ターミナル、管理ポータルに共通ユーザでログイン

管理ポータル: [システム管理] > [セキュリティ] > [サービス]

以下3つを「パスワード」認証のみに変更

%Service_Bindings
%Service_Telnet
%Service_Console

管理ポータル: [システム管理] > [セキュリティ] > [アプリケーション] > [ウェブ・アプリケーション]


以下7つを「パスワード」認証のみに変更

/csp/sys
/csp/sys/bi
/csp/sys/exp
/csp/sys/mgr
/csp/sys/op
/csp/sys/sec
/api/atelier
0
0 534
記事 Mihoko Iijima · 9月 16, 2021 1m read

これは InterSystems FAQ サイトの記事です。

答え:必要ありません。

InterSystems 製品では、クライアント機能用に特別なライセンスを設けておりません。

通常のサーバーライセンス(サブスクリプションを含む)を保有していれば、そのサーバーライセンスで許容しているキャパシティに応じて、複数のクライアントシステムにクライアント機能をインストールして利用することができます。

0
0 172
記事 Mihoko Iijima · 9月 14, 2021 1m read

これは InterSystems FAQ サイトの記事です。

管理ポータルの SQL 画面(管理ポータル > システムエクスプローラ > SQL)で、任意の SQL を実行した後、結果の行数などが表示されいる行の右端にある「印刷」のリンクから、CSVファイル出力を選択できます。

「クエリ印刷」画面で「ファイルにエクスポート」をチェックすると「ファイル形式」の欄が表示されます。

形式に「CSV」を指定し、出力ファイル名を指定したあと「エクスポート」ボタンをクリックすると出力できます。

注意:古いバージョンでは正しくCSV出力が行えない場合もあります。新しいバージョンをぜひご利用ください。

プログラムでCSV出力を行いたい場合は、関連記事をご参照ください。

0
0 464
記事 Toshihiko Minamoto · 9月 14, 2021 10m read

より産業向けのグローバルストレージスキーム

この連載の第1回では、リレーショナルデータベースにおけるEAV(Entity-Attribute-Value)モデルを取り上げ、テーブルにエンティティ、属性、および値を保存することのメリットとデメリットについて確認しました。 このアプローチには柔軟性という点でメリットがあるにもかかわらず、特にデータの論理構造と物理ストレージの基本的な不一致などによりさまざまな問題が引き起こされるという深刻なデメリットがあります。

こういった問題を解決するために、階層情報の保存向けに最適化されたグローバル変数を、EAVアプローチが通常処理するタスクに使用できるかどうかを確認することにしました。

パート1では、オンラインストア向けのカタログをテーブルを使って作成し、その後で1つのグローバル変数のみで作成しました。 それでは、複数のグローバル変数で同じ構造を実装してみることにしましょう。

最初のグローバル変数^catalogには、ディレクトリ構造を保存します。 2つ目のグローバル変数^goodには、店の商品を保存します。 ^indexグローバルには、店のインデックスを保存します。 プロパティは階層的なカタログに関連付けられているため、プロパティ用の個別のグローバル変数は作成しません。

0
0 405
記事 Megumi Kakechi · 9月 12, 2021 2m read

特定文字列が含まれるグローバルを検索する時、どのように行われているでしょうか?

管理ポータルでグローバルを表示して Ctrl+F で検索することもできますが、サイズが大きなグローバルでは表示に時間がかかり難しい場合もあります。

もちろん、$ORDER  や $QUERY 関数でループして含まれる文字列を検索することは可能です。

しかし、もっと簡単で便利な方法があります。

管理ポータルで行える、グローバル文字列検索機能 を使う方法です。

こちら、管理ポータルの [システムエクスプローラ] > [グローバル] :検索 から簡単に行えます

例えば、^%ISCLOGグローバルの中から「CSP error cleaning up after page」というエラーが含まれるグローバルを検索するときは以下のようになります。

 ↓

 
どうしても  $ORDER や $QUERY 関数を使用してプログラムで行いたい、という場合は以下のようになります。

※サブスクリプトが複数あるときは、 $QUERY  関数で複数階層ループします。

0
0 202
記事 Hiroshi Sato · 9月 9, 2021 2m read

これは InterSystems FAQ サイトの記事です。
システムクラス  Config.MapGlobals を使用して登録することができます。

ネームスペース USER からデフォルトデータベース以外のデータベース SAMPLES にある ^Sample.PersonD をグローバルマッピングする方法は以下の通りです(ターミナルでの実行例)。

USER>zn "%SYS"  %SYS>set ns="USER"  %SYS>set glo="Sample.PersonD"
 
%SYS>set vals("Database")="SAMPLES"
 
%SYS>set st=##class(Config.MapGlobals).Create(ns,glo,.vals) ※ Config.MapGlobals クラスの Create()メソッドの第3引数は参照渡しのため、変数名前にピリオド(.)を付与して指定します。

 

Config.MapGlobals クラスを使用する方法以外に、インストールマニフェストクラスを利用して定義することもできます。

インストールマニフェストクラスの作成方法詳細については添付をご参照ください。

以下例は、インストールマニフェストでの定義例です(クラス定義は添付内に含まれています)。

0
0 344
記事 Hiroshi Sato · 9月 9, 2021 2m read

これは InterSystems FAQ サイトの記事です。
 

2025.1以降CORS関連の設定方法は大きく変わっています。

詳細は、以下の記事を参照してください。

jQueryを使用してIRISからJSONデータを取得する方法

%CSP.REST クラスを継承する REST 用ディスパッチクラスで REST を実装している場合は、クロスドメイン制約回避用に用意されたパラメータ HandleCorsRequest を利用します。

設定方法は以下の通りです。

REST 用ディスパッチクラスをスタジオで修正する場合は、
[クラス] > [リファクタ] > [オーバーライド] を開き、[パラメータ]タブを選択 > [HandleCorsRequest] を選択後OKボタンを押下します。

 

以下の定義が追加されるので、1を設定します。

Parameter HandleCorsRequest=1;

REST ディスパッチクラスを Atelier で修正する場合は、オーバーライドメニューの用意がないため、パラメータの定義を追加するか、%CSP.REST クラスを開き、HandleCorsRequest の定義をコピーし修正します。

0
0 668
記事 Mihoko Iijima · 9月 7, 2021 3m read

これは InterSystems FAQ サイトの記事です。

Windows システムにインストールされた InterSystems 製品を削除するには、コントロールパネルにあるプログラムの追加と削除(Windows 10の場合は、Windows の設定からアプリを選択)を使用します。

システムに変更を加えますので、管理者権限を持ったユーザでログインして作業を行う必要があります。

1) 管理者(Administrator)でシステムにログインします。

2) システムトレイから、アンインストールを行う InterSystems 製品インスタンスのランチャーを終了します(ランチャークリック → 終了)。

3)コントロールパネルにある プログラムの追加と削除 (Windows 10の場合は、Windows の設定からアプリを選択)で

<InterSystems製品> instance [xxxx] ( xxxx にはインスタンス名が表示されています) を削除します。

 例:InterSystems IRIS instance [IRIS]

4) InterSystems 製品インストールディレクトリ(既定では C:\InterSystems\<InterSystems製品> )を Windows エクスプローラ等を使用して削除します。

0
0 667
記事 Mihoko Iijima · 9月 5, 2021 1m read

これは InterSystems FAQ サイトの記事です。

%SYSTEM.License クラスのメソッド利用すると、ライセンス情報を取得できます(実行時は、$SYSTEM.License.メソッド名() と記述します)。 

%SYSTEM.License クラスは、ライセンスユーティリティ用システムオブジェクトです。

ユーティリティの詳細については、添付資料をご参照ください。
(クラス詳細については、クラスリファレンス内 %SYSTEM パッケージ以下 License クラスも併せてご覧ください。)

 また、ライセンス情報は、管理ポータルからも確認できます。

ライセンスキー情報:
 [システム管理] > [ライセンス] 以下

ライセンス使用状況:
 [システムオペレーション] > [ライセンス使用量] 以下

0
0 235
記事 Megumi Kakechi · 9月 3, 2021 2m read

これは InterSystems FAQ サイトの記事です。

$ZSTRIPコマンドは、指定された文字列から文字のタイプと文字を削除します。
このコマンドを使用することで文字列から数値部分のみを抽出することが可能です。

$ZSTRIP(string,action,remchar,keepchar)

第1引数(string)      :対象文字列
第2引数(action)     :string から削除する対象。アクションコードとマスクコードで構成。
第3引数(remchar) :削除する特定の文字を指定。第2引数のマスクコードに含まれない文字も指定可能。【オプション】
第4引数(keepchar):削除しない特定の文字を指定。【オプション】

以下はその例です。

// 第2引数:アクションコード "*" を指定しすべて削除(E)
// 第4引数:.0123456789- を削除しない

USER>write $zstrip("ABC-0.100g","*E",,".0123456789-")
-0.100
0
0 412
記事 Hiroshi Sato · 9月 2, 2021 2m read

これは InterSystems FAQ サイトの記事です。
 

$ZF(-100) のコマンドは、以下のフォーマットで使用します。

$ZF(-100, フラグ, コマンド名, コマンドの引数)

OSコマンドを実行する場合は、「/shell」フラグが必要です。
例えば mkdir であれば、次のように使用します。

 // mkdir C:\temp\newdir
 Write $ZF(-100, "/shell", "mkdir", "C:\temp\newdir")

コマンドの引数が複数ある場合は、以下の例のように引数の数だけ二重引用符で括ってカンマ区切りで指定します。

 // move C:\temp\a.txt C:\temp\a2.txt
 Write $ZF(-100, "/shell", "move", "C:\temp\a.txt", "C:\temp\a2.txt")  // net use Z: \\filesrv\public /user:user password
 Write $ZF(-100, "/shell", "net", "use", "Z:", "\\filesrv\public", "/user:user", "password")

また、同期・非同期実行は以下のように使用します。

0
0 670
記事 Mihoko Iijima · 8月 31, 2021 5m read

これは InterSystems FAQ サイトの記事です。

24時間停止しないシステムの場合、「ジャーナルファイルの削除設定」に合わせて 0時30分 に古いジャーナルファイルを削除します。

「ジャーナルファイルの削除設定」より古いジャーナルファイルが残っている原因として、オープンされたままのトランザクションが存在していることが考えられます。

その場合、トランザクション実行中プロセスを探し、トランザクションを確定させることでジャーナルファイルを削除できるようになります。

以下のサンプルは、オープンされたままのトランザクションの存在確認と、存在する場合は対象ファイル名とジャーナルレコード情報が出力されます。

(サンプルは、https://github.com/Intersystems-jp/CheckOpenTransaction からダウンロードできます)

※注意※
確認対象のジャーナルファイルサイズが大きい場合、ジャーナルファイルが多数ある場合は、実行に時間がかかるため、弊社サポートセンターまでご連絡ください。

0
0 314
記事 Toshihiko Minamoto · 8月 31, 2021 12m read

最初の記事では、Caché Webアプリケーションのテストとデバッグを外部ツールを用いて行うことについて説明しました。 2回目となるこの記事では、Cachéツールの使用について説明します。

以下について説明します。

  • CSP GatewayとWebappの構成
  • CSP Gatewayのロギング
  • CSP Gatewayのトレース
  • ISCLOG
  • カスタムロギング
  • セッションイベント
  • デバイスへの出力
0
0 424
記事 Mihoko Iijima · 8月 30, 2021 2m read

これは InterSystems FAQ サイトの記事です。

InterSystems 製品には、テーブルのコンテンツに関する統計を収集し、クエリの最適化に役立てる「テーブルチューニング機能」があります。

設定方法は、以下のドキュメントをご参照ください。

ターミナルでは次のコマンドを実行します。

do$SYSTEM.SQL.Stats.Table.GatherTableStats("スキーマ名.テーブル名",1,1)

 

 2021.1以前のバージョンでは以下メソッドを利用します。

Do$system.SQL.TuneTable("スキーマ名.テーブル名",1,1)

 

また、以下の資料もご参照ください。

1) パフォーマンス調査の基礎知識として必要なグローバル構造の解説やSQLの動作の仕組みからクエリプランの見方の解説

インターシステムズ・シンポジア2011の資料

2) パフォーマンスチューニングの例(P13~)

インターシステムズ・シンポジア2012の資料

3) ビットマップ・インデックスの圧縮やオプティマイザ・ヒントなど、Caché SQLのパフォーマンスを最大限に引き出すための情報について

インターシステムズ・シンポジア2014の資料

0
0 416
記事 Megumi Kakechi · 8月 25, 2021 2m read

これは InterSystems FAQ サイトの記事です。

リレーションシップが設定されており 1対n の n が多量の場合、そのリレーションシップの順次処理などで大量のメモリ消費となるケースがあります。

プログラムの中で多側オブジェクトを参照し内部的にスウィズル処理した後には、そのOREFを含む変数の解放(削除、他の値の設定など)だけでは、その多側オブジェクトとリレーションシップオブジェクトが解放されないことが原因です。

それらを完全にメモリから解放するためには、OREF変数の解放とRelationshipオブジェクトの%UnSwizzleAt<%Library.RelationshipObject >メソッドの実行による明示的なメモリ解放が必要です。
 

- 使用例 -

 Do {
    Set employee = company.Employees.GetNext(.key)
    If (employee '= "") {
        Write employee.Name,!
        // remove employee from memory
        Do company.Employees.%UnSwizzleAt(key)
    }
 } While (key '= "") 
6
0 296
記事 Megumi Kakechi · 8月 26, 2021 2m read

これは InterSystems FAQ サイトの記事です。

こちらは、コンパイル時に既にそのクラスのインスタンスを開いている場合に起こるエラーです。

対処方としては以下の2つの方法があります。

  1. インスタンスを開いているプロセスまたはアプリケーションを終了する
  2. スタジオのビルドメニュのコンパイルオプション:コンパイルフラグ “使用中のクラスをコンパイル” をチェックしコンパイルを行う  


インスタンス化しているプロセスを特定したい場合は、以下のサンプルルーチンをお試しください。

0
0 203
記事 Toshihiko Minamoto · 8月 25, 2021 7m read

この記事では、Caché Webアプリケーション(主にREST)のテストとデバッグを外部ツールを用いて行うことについて説明します。 パート2では、Cachéツールの使用について説明します。

サーバー側のコードを作成したのでクライアントからテストしたい、またはすでにWebアプリケーションが存在するが機能していない― そういったときに使用できるのがデバッグです。 この記事では、最も使いやすいツール(ブラウザ)から最も包括的なツール(パケットアナライザー)までを説明しますが、まずは、最も一般的なエラーとその解決方法について少し説明します。

0
0 1664