0 フォロワー · 496 投稿

  

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

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

ドキュメント

記事 Tomoko Furuzono · 12月 13, 2021 1m read

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

グローバル単位でジャーナルのON/OFF設定を行いたい場合は、グローバルマッピング設定で、
 ・ジャーナルしたいグローバル ⇒ ジャーナルON(「はい」)のデータベースにマッピング
 ・ジャーナルしたくないグローバル ⇒ ジャーナルOFF(「いいえ」)のデータベースにマッピング
と、分けることで可能です。 但し、通常のデータベースは、ジャーナルOFF設定であっても、トランザクション中の更新についてはジャーナルファイルに記録されます。

一時グローバルを保存するIRISTEMP/CACHETEMPデータベースは、トランザクション中でもジャーナルファイルに記録されませんので、トランザクションデータもジャーナル記録したくない場合にはこれをマッピング先にすることも可能です。
但し、IRISTEMP/CACHETEMPデータベースは一時データベースであるため、インスタンス再起動でグローバルデータは失われますので注意が必要です。
一時グローバルと IRISTEMP データベース

0
0 187
記事 Megumi Kakechi · 12月 9, 2021 3m read

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

【 管理ポータルへのパスワード認証設定方法 】

管理ポータルの、
 [ホーム] > [システム管理] > [セキュリティ] > [アプリケーション] > [ウェブ・アプリケーション]
で /csp/sys、および、/csp/sys/ 以下の各アプリケーション(/csp/sys/expなど) の編集画面を開き、“許可された認証方法” の、"認証なし" のチェックを外し、“パスワード” のみチェックをして保存します。

また、これと同様のことを、ターミナルから、^SECURITYルーチンを使用して実行することも可能です。
以下は/csp/sys/アプリケーションに対する実行例です。*実行は%SYSネームスペースで行って下さい。*

0
0 621
記事 Tomoko Furuzono · 12月 7, 2021 1m read

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

プライベートWebサーバを使用して、HTMLファイルをリクエストした際に、日本語が文字化けする場合があります。
その場合には、HTMLファイルをBOM(バイト・オーダー・マーク)付で保存してください。

※原則的に、プライベートWebサーバを使用してアプリケーションを稼働することは推奨しておりません。
 アプリケーション稼働には、必ず、IISやApache等の製品版のWebサーバを使用してください。  
 プライベートWebサーバについては、以下のドキュメントをご参照ください。
 プライベート Web サーバおよび管理ポータル【IRIS】
 プロダクション Web サーバおよび Caché 付属のプライベート Web サーバ

0
0 261
記事 Tomoko Furuzono · 12月 7, 2021 2m read

これは、InterSystems FAQサイトの記事です。
このメッセージが出力される要因は以下の2つになります。

  1. 同じデータに対して適切に排他を行わずに、別々のプロセスから更新が行われている
  2. ロールバックが発生している

詳細は以下の通りです。 メッセージログ/コンソールログに、以下のようなメッセージがある場合、これはロールバック処理にて出力されています。
※バージョンによってメッセージは多少異なります。

Skipping SET due to compare and swap failed on ...
Skipping KILL due to compare and swap failed on ...
---
Skipping Set global ^xxx during transaction rollback (transaction may not have been properly locked) in journal ...
Skipping KILL as node ^xxx exists in ...
---
Skipped rolling back x update(s) in ...
Total 1 update(s) were skipped during rollback of transaction beginning at address ...
0
0 136
質問 Yuji Ohata · 12月 6, 2021

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

私はIRISでSQLアクセスを行うプログラムをを作成しており、
テーブルアクセスには%ScrollableResultSetクラスのAPIを用いて処理を実現しています。
作成するSQLはインジェクション対策のため、?パラメータを用いておりますが、
この度、大量のパラメータ(600項目)を用いるSQLを作成する必要が出てきました。

https://irisdocs.intersystems.com/iris20191/csp/docbookj/DocBook.UI.Pag…
こちらによりますと、可変長引数を用いても引数の上限値は255個となっており、
実際に600個のパラメータを引数に与えてSQLアクセスしようとすると、<STACK>エラーが発生する状況です。

    Set query = "SQL文"
    Set result = ##class(%ScrollableResultSet).%New("%DynamicQuery:SQL")
    Do result.Prepare(query)
    Do result.Execute(parameterValue...) #; ここに600個のパラメータをセット
2
0 428
InterSystems公式 Yoichi Miyashita · 12月 1, 2021

InterSystems 製品のキットには Apache Web サーバが含まれています。
これにより、お客様が外部Webサーバをインストールせずに Caché/IRIS 管理ポータルを動作させる為の便利な方法を提供しています。
ただし、このWebサーバを実稼働インスタンスに使用しないでください。お客様は、システムに応じたニーズとセキュリティ/リスク要件に適合するWebサーバを別途インストールする必要があります。

最近のテストでは、現在含まれている Apache Web サーバにいくつかのセキュリティ問題があることがわかっていますが InterSystems が管理していないテクノロジである為、
InterSystems は、Apache または別のサードパーティから直接取得した Web サーババージョンをインストールし、付属の Apache Webサーバ を無効にすることをお勧めします。
InterSystems は、今後のリリースに Apache Web サーバの新しいバージョンを含める予定です。
現在のバージョンと同様に、そのバージョンも本番インスタンスには使用できません。
当社の製品の将来のリリースでは、InterSystems はWeb サーバを同梱またはインストールしません。
計画の詳細については、今後、更新情報を提供する予定です。 

0
0 179
記事 Tomoko Furuzono · 11月 28, 2021 5m read

これは、InterSystems FAQサイトの記事です。
InterSystems製品のデータ(テーブルの行データ、オブジェクトのインスタンスデータ)は、グローバル変数に格納されています。
各グローバルのデータサイズは、管理ポータル>システム>構成>ローカルデータベース>グローバルのページから参照したいグローバルのプロパティをクリックし、表示されるグローバル属性ページ上のサイズ計算ボタンをクリックすることで個別のグローバルのサイズを取得することができます。
ネームスペース上のグローバルのデータサイズをまとめて表示するには、ターミナル上で^%GSIZEユーティリティを起動することで取得することができます。
実行方法は以下の通りです。

0
0 458
記事 Hiroshi Sato · 11月 24, 2021 1m read

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

InterSystems製品開始時に、OSの実行ファイルやコマンド、InterSystems製品内に作成したプログラムを実行したい場合は SYSTEM^%ZSTART ルーチンに処理を記述します。

(%ZSTARTルーチンは%SYSネームスペースで作成します)

SYSTEM^%ZSTART に記述する処理は、事前にあらゆる条件下でうまく動作することを確認してください。

^%ZSTART ルーチンの記述ミスや、記述は正しくとも起動時にコマンドが応答を返さなかったり処理でエラーが起こった場合、InterSystems製品が起動できなくなることがあります。

詳しくは、以下ドキュメントをご参照ください。


%ZSTART、%ZSTOPルーチンの記述について【IRIS】
%ZSTART、%ZSTOPルーチンの記述について

0
1 282
記事 Megumi Kakechi · 11月 15, 2021 1m read

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

SELinuxの機能が有効になっているとファイルアクセス時にセキュリティコンテキストのチェックで permission エラーになります。

CSP のページについても同様に permission エラーになっているため、Apache にて 403 Forbidden エラーになります。  

以下の設定でSELinuxの機能を無効にすることで回避できます。

設定ファイル /etc/selinux/config の SELINUX=disableに設定し、OS の再起動を行います。

例:

0
0 392
記事 Hiroshi Sato · 11月 11, 2021 3m read

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

設定内容によって、方法が異なります。
 

システム構成について
管理ポータルの [システム管理] > [構成]

以下の設定については(※1)、パラメータファイル(InterSystems IRISは iris.cpf、Caché/Ensemble/HealthShareは cache.cpf) に格納されます。 

このファイルはテキストファイルとなっていますのでこのファイルの一部を他のシステムにコピーして反映させることが可能です。 
ただし、ディレクトリ名など各システム固有の情報が多く含まれるため、そのままファイル全体をコピーしても設定内容を反映させることはできません。 
(※1) 【Caché/Ensemble2010.2以前】 [システム管理ポータル] > [構成] (システム構成)  メニュー以下の設定が対象です。 
パラメータ・ファイルの各項目については、以下ドキュメントをご参照ください。 
InterSystems パラメータ・ファイル・リファレンスについて【IRIS】Caché パラメータ・ファイル・リファレンスについて      

セキュリティについて
^SECURITY ユーティリティを使用してエクスポート/インポートすることが可能です。 
ターミナルを起動し、%SYSネームスペースで以下のコマンドを実行してください。 

0
0 574
記事 Hiroshi Sato · 11月 11, 2021 1m read

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

タイムアウトを無効にするためには、DSNの設定でクエリタイムアウト無効に設定します。

Windowsコントロールパネル > [管理ツール] > [データソース(ODBC)] > [システムDSN]の構成


で クエリタイムアウト無効 にチェックを入れますと、タイムアウトは無効になります。

アプリケーション側で変更する場合は、ODBC APIレベルで設定することが可能です。


ODBCのSQLSetStmtAttr関数をコールする際に、SQL_ATTR_QUERY_TIMEOUT属性を設定してから、データソースに接続してください。

0
0 11653
記事 Hiroshi Sato · 11月 11, 2021 1m read

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

バックアップ先に、共有フォルダを指定することは可能ですが、推奨しません。

バックアップの最終フェーズのDBアクセスを禁止する箇所で万一ネットワークエラー等で、バックアップがハングアップすることがあれば、システム全体に影響が及ぶリスクがあります。

0
0 155
記事 Megumi Kakechi · 11月 10, 2021 4m read

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


InterSystems製品のプロセスが消費するメモリ領域は以下の6つの領域になります。

プロセスのプライベートな領域

 1. プロセスパーティション(ローカル変数テーブル等、プロセスごとに使用するメモリ)
 2. 長い文字列(LongString)使用メモリ
 3. 文字列スタック...等

プロセス間共有領域

 4. データベースキャッシュ
 5. ルーチンキャッシュ
 6. 一般ヒープメモリ(プロセステーブル、ロックテーブル等)


プロセスが使用するメモリ領域は、「プライベート領域」と「共有領域」の大きく2種類に分かれます。
プライベートな領域はそのプロセスのみが使用し、個々のプロセス毎にメモリを割り当てます。
共有領域は、プロセス間で一つのメモリ領域を共有してアクセスしていますので実体はメモリ上に 1つです。
以下それぞれの領域の値は、管理ポータルで指定します(設定可能な場合)。
(1) プロセスパーティションのサイズ

 [システム管理] > [構成] > [システム構成] > [メモリと開始設定] > [プロセスあたりの最大メモリ(KB)]

0
0 588
記事 Megumi Kakechi · 10月 28, 2021 2m read

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

TIMESTAMP型はInterSystems製品では、%Library.TimeStampデータタイプ(=%TimeStamp)に対応していて、フォーマットは YYYY-MM-DD HH:MM:SS.nnnnnnnnn です。

小数点以下の精度を変更したい場合は、以下の方法で設定します。

1) システムワイドに設定する

管理ポータル:[システム管理] > [構成] > [SQLとオブジェクトの設定] > [一般SQL設定] 
GETDATE(), CURRENT_TIME, CURRENT_TIMESTAMP のデフォルト時刻精度 に 0~9 の範囲で桁数を指定できます。

設定内容の詳細については、下記のドキュメントページをご参照ください。
追加構成設定~ - 一般SQL設定 - SQL タブ


2) SQLの関数で指定する

CURRENT_TIMESTAMP()の引数を利用して、小数点以下の精度を 0~9 の範囲で桁数を指定できます。
※CURRENT_TIMESTAMP()で返される値は、実行環境のタイムゾーンの現在の日付時刻を返します。

0
0 1504
記事 Toshihiko Minamoto · 10月 26, 2021 10m read

InterSystems IRISを初めて使用し始める際には、最低限のセキュリティレベルでのみシステムをインストールするのが通例です。 パスワードを入力する回数が少なくて済むため、初めて作業を始めるときに、開発サービスやWebアプリケーションの操作がより簡単になるからです。 また、開発済みのプロジェクトまたはソリューションをデプロイする際には、最小限のセキュリティを適用している方が便利な場合があります。 それでも、プロジェクトを開発環境から非常に敵対的な可能性のあるインターネット環境に移行する時が来れば、本番環境にデプロイされる前に、最大限のセキュリティ設定(つまり、完全なロックダウン状態)でテストしなければなりません。 これがこの記事の論点です。 InterSystems Caché、Ensemble、およびIRISにおけるDBMSセキュリティ問題をさらに包括的に説明した記事については、私の別の記事、「Recommendations on installing the InterSystems Caché DBMS for a production environment」(本番環境向けにInterSystems Caché DBMS をインストールするための推奨事項)をご覧ください。 InterSystems IRISのセキュリティシステムは、さまざまなカテゴリ(ユーザー、サービス、リソース、特権、およびアプリケーション)に異なるセキュリティ設定を適用する概念に基づいています。 ユーザーにはロールを割り当てることができます。 ユーザーとロールには、データベース、サービス、およびアプリケーションといったリソースに対し、さまざまな読み取り、書き込み、および使用の権限を付与することができます。 ユーザーとロールには、データベースのSQLテーブルに対するSQL特権も与えられます。

0
0 394
記事 Hiroshi Sato · 10月 26, 2021 1m read

これは、InterSystems FAQサイトの記事です。
InterSystems 製品の管理ツールやWebページのセキュリティ強化のため、%付きのWebページ(例:管理ポータル上のユニットテストポータル、Webサービスクラスのテスト画面)に対するアクセスがより効率的に制御できるよう、新しいルールが追加されました。

これによりデフォルトで参照可能なページ以外については、明示的に参照許可を設定する必要があり、設定しない場合参照エラーとなります。 以下のドキュメントをご参照いただき、必要に応じて参照許可を設定するようにしてください。


%CSP ページへのアプリケーション・アクセスの制御について

Webサービスクラスのテスト画面の場合は、以下をご覧ください。


Webサービスのカタログおよびテストページについて【IRIS】
Webサービスのカタログおよびテストページについて

0
0 166
記事 Tomoko Furuzono · 10月 19, 2021 1m read

これは、InterSystems FAQサイトの記事です。
システムをアップグレードした後、管理ポータルを開こうとすると、下記のエラーが表示される場合があります。

ERROR #5001: Server version of object does not match version sent from the client: %ZEN.Component.vgroup

このエラーは、ブラウザのキャシュに古い情報が残っているために発生しています。

ブラウザのキャッシュをクリアすることでエラーを解消することができます。

0
0 297
記事 Toshihiko Minamoto · 10月 19, 2021 9m read

はじめに

ObjectScriptで複雑な問題を解決している場合、おそらく%Status値を使用したコードがたくさんあることでしょう。 オブジェクトの観点(%Save、%OpenIdなど)から永続クラスを操作したことがある場合は、ほぼ確実にその状況に遭遇したことがあるでしょう。 %StatusはInterSystemsのプラットフォームでローカライズ可能なエラーメッセージのラッパーを提供します。 OKステータス($$$OK)は1に等しいだけであるのに対し、不良ステータス($$$ERROR(errorcode,arguments...))は0、スペース、エラーに関する構造化情報を含む$ListBuildリストとして表されます。 $System.Status(クラスリファレンスを参照)は、%Status値を操作するための便利なAPIをいくつか提供しています。クラスリファレンスを役立てられるので、ここでは繰り返しません。 このトピックに関する有用な記事/質問もほかにいくつかあります(最後のリンクをご覧ください)。 この記事では、コーディングのベストプラクティスではなく、いくつかのデバッグのコツや手法に焦点を当てています(ベストプラクティスについては、最後のリンクをご覧ください)。

0
1 403
記事 Hiroshi Sato · 10月 18, 2021 1m read

これはInterSystems FAQ サイトの記事です。
命名規約については、それぞれ下記のドキュメントページをご確認ください。

テーブル名(クラス名)について


識別子のルールとガイドライン - クラス

カラム名(プロパティ名)について


識別子のルールとガイドライン - クラス・メンバ


こちらに記載しておりますように、カラム名(プロパティ名)には英数文字およびASCII 128 よりUnicodeコードポイントの大きな文字のみ使用可能です。

  • 名前は、英字、ASCII 128 よりUnicodeコードポイントの大きな文字かパーセント記号 (%) で始まる必要があります。
  • 残りの文字は、英字、ASCII 128 よりUnicodeコードポイントの大きな文字または数字にする必要があります。

また、「リリース2012.2以降〜」の部分にありますように、

Property "My Property" As %String;

のように " で囲むことで、使用できない記号等も使用できるようになります。

これとは別に、プロパティ名は英数字のみを使用して、SQLフィールド名のみ、別途指定することもできます。

Property iscname As %String [ SqlFieldName = isc_name ];
0
0 841
記事 Hiroshi Sato · 10月 14, 2021 2m read

これはInterSystems FAQ サイトの記事です。
文字コードの変換に利用できる変換テーブル名は、以下のシステム関数で取得できます。 

 Write$$GetIONames^%SYS.NLS()

 

現在のロケールにおいて各デバイス(ファイル、ターミナル等)のデフォルトの変換テーブル名を取得するには、%SYS.NLS.Table クラスを使用します。

確認方法は以下の通りです。

(1) システムデフォルト設定を取得するため、%SYS.NLS.Table のインスタンスを生成します。(引数に、"System" を指定します。) 

 set obj=##class(%SYS.NLS.Table).%New("System")

 

(2) GetIOTable() メソッドを使用して、確認したいデバイスの現在の変換テーブル名を取得します。

メソッドの引数には、デバイス名に対応した番号を指定します。(詳細はクラスリファレンスをご参照ください。)

【ご参考】クラスリファレンスは、ドキュメントトップ > クラスリファレンス または、スタジオ→表示→クラスドキュメント から参照できます。

// ファイル入出力に使用する変換テーブル名を取得
 write obj.GetIOTable(3)

 

【ご参考】

以下のドキュメントもご参照ください。

0
0 559
記事 Hiroshi Sato · 10月 13, 2021 3m read

これはInterSystems FAQ サイトの記事です。
コンソールログファイル (※1) に、以下のメッセージが表示されることがあります。

05/14/19-09:32:14:056 (6888) 0 System routine buffer (64 KB) shortage is detected, 430 routine buffers configured, adjusted per process cached rtn to 71

(※1)
コンソールログファイルは、[管理ポータル] > [システムオペレーション] > [システムログ] > [コンソール・ログ] から参照できます。
または、以下ファイルを直接参照することもできます。


 

<インストールディレクトリ>\mgr\cconsole.log 

上記メッセージでは、ルーチンバッファサイズのうちの 64KB バッファの不足が検出されています。


弊社製品インストール時点のルーチンキャッシュ用メモリのデフォルト値は 35MB に設定されていて、各バッファ(4KB/16KB/64KB)にそれぞれに 430 バッファを割り当てた合計値で設定されています(※補足)。

「adjusted per process cached rtn to 71」については、1プロセスあたりに参照できるルーチン個数が 71個に調整されています。

0
0 228
記事 Toshihiko Minamoto · 10月 13, 2021 6m read

@Evgeny.Shvarovの記事へのコメントとして書こうとしていましたが、 コメントが長すぎたため、別に投稿することにしました。

dockerがすべてのイメージをクリーンアップした結果の画像

dockerがどのようにディスクスペースを使用し、クリーンアップするかについて、少し説明を加えたいと思います。  私はmacOSを使用しているため、以下に示すものは主にmacOSを対象としていますが、dockerコマンドはすべてのプラットフォームでも使用できます。

0
0 7310
記事 Hiroshi Sato · 10月 12, 2021 1m read

これはInterSystems FAQ サイトの記事です。
^BACKUP ユーティリティを使用して、DBリストアする方法をご紹介します。

添付のドキュメントでは、オンラインバックアップ と レガシー並行外部バックアップ の2種類のバックアップからのリストア処理の方法を紹介しています。

リストア処理の詳細は、下記ドキュメントページを参照してください。


オンライン・バックアップ・リストア・ユーティリティ【IRIS】
Caché オンライン・バックアップ・リストア・ユーティリティについて
 

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

これはInterSystems FAQ サイトの記事です。
ファイルサイズを取得する専用メソッドはありませんが、%Net.FtpSession クラスの sendCommand() メソッドを通してFTPのSIZEコマンドを呼び出し、サイズを取得できます。

簡単な利用例をご紹介します。

まず、以下の様なクラスを定義します。

Class MyNet.FtpSession Extends %Net.FtpSession
{ Method getSize(fname As %String, ByRef size As %Integer)
{
set type=..Type  // 現Typeを保存しておくdo ..Binary()
set st=..sendCommand("SIZE "_fname) //SIZE <file name>set size=..ReturnMessageif type="Ascii" {
do ..Ascii()
}
quit
} }

上記で作成したクラスを使用したサンプルコードです。 

0
0 358
記事 Toshihiko Minamoto · 10月 12, 2021 11m read

前の記事では、マクロの潜在的なユースケースををレビューしました。そこで、マクロの使用方法についてより包括的な例を見てみることにしましょう。 この記事では、ロギングシステムを設計して構築します。

ロギングシステム

ロギングシステムは、アプリケーションの作業を監視するための便利なツールで、デバッグや監視にかける時間を大幅に節約してくれます。 これから構築するシステムは2つの部分で構成されます。

  • ストレージクラス(レコードをログ記録するためのクラス)
  • 新しいレコードをログに自動的に追加する一連のマクロ
0
0 398
記事 Mihoko Iijima · 10月 12, 2021 6m read

開発者の皆さん、こんにちは。

いつも使用しているユーザでアプリケーションや InterSystems 製品(IRIS/Caché/Ensemble/HealthShare) にアクセスしたとき、セキュリティ設定変更などの影響で急にアクセスできなくなった!という場合に、調査に便利な監査ログの参照方法をご紹介します。

ここでは、%Allロールを持つシステム管理ユーザ( _system や SuperUser )で管理ポータルにアクセスできる状態での確認方法をご紹介します。

監査ログですが、まずはシステムで監査が取られる設定になっているかご確認ください(通常無効化されている場合は、調査の時だけ有効に変更してください)。

管理ポータル > システム管理 > セキュリティ > 監査 > 監査を有効に

次に、アクセスできなくなった原因を探るため、以下のシステムイベントの監査を取得できるように変更します。

管理ポータル > システム管理 > セキュリティ > 監査 > システムイベントを構成
以下のイベントの「状態変更」をクリックし、 Enabled に はい と表示されるようにします。

  • %System/%Login/LoginFailure
  • %System/%Security/Protect
0
0 1030
記事 Megumi Kakechi · 10月 8, 2021 1m read

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

ターミナルでルーチンを実行し、プログラム上でエラーが発生した時に、エラートラップを適切に設定していない場合、以下のようなデバッグモードになります。

USER>do ^error1
 write A
^
a+2^error1 *A
USER 2d0>

この状態から、ルーチン起動の前の状態に戻るにはQuitコマンドを入力します。

USER 2d0>Quit

またエラーが発生したルーチン内でトランザクション処理を行なっている場合には、以下のような表示のプロンプトになります。

USER>do ^error1
 write A
^
a+3^error1 *A
TL1:USER 2d0>q
TL1:USER>

このようにプロンプトの先頭にTL+数字が表示されている場合には完了していないトランザクションがあることを示しています。

この状態ではQuitコマンドを入力しても元のプロンプトには戻りません。

最初にTrollbackコマンドを入力し、その後でQuitコマンドを実行することで元のプロンプトに戻ります。

TL1:USER>Trollback
0
0 530
記事 Hiroshi Sato · 10月 7, 2021 1m read

これは InterSystems FAQ サイトの記事です。
ジャーナルレコードの「時間」には、ジャーナルバッファを初期化したときの時間が登録されています。

ジャーナルレコードの時間は、ジャーナルバッファ毎に記録されているため、同じジャーナルバッファ内のジャーナルレコードはすべて同じ時間になります。

なお、ジャーナルバッファは、64KBのサイズで255個存在していて、1つのジャーナルバッファが満杯になった場合、次のジャーナルバッファへレコードを追加するように順番に使用されます。

ジャーナルレコードの時間は、次のバッファへレコードを追加する前に行われる初期化の時間が記録される仕組みになっています。

0
0 173