2

Apex バッチ ドキュメントのこの段落に問題があります。それは私が学んでいないクエリカーソルに関するものです。誰かがQCとここで何が起こっているのか説明してもらえますか?

ユーザーは一度に最大 50 個のクエリ カーソルを開くことができます。たとえば、50 個のカーソルが開いていて、同じユーザーが新しいカーソルを開こうとしたときにクライアント アプリケーションがまだログインしている場合、50 個のカーソルのうち最も古いものが解放されます。この制限は、ユーザーごとに一度に最大 5 つのクエリカーソルを開くことができるバッチ Apexstart メソッドでは異なることに注意してください。他の一括 Apex メソッドには、50 個のカーソルの上限があります。

さまざまな Force.com 機能のカーソル制限は、個別に追跡されます。たとえば、50 個の Apex クエリカーソル、50 個のバッチカーソル、および 50 個の Visualforce カーソルを同時に開くことができます。

4

1 に答える 1

3

Query Cursors がバッチ処理されてロックされたレコードのリストを返すことを理解しています (たとえば、バッチ Apex 以外の他の更新/編集は、レコードが処理されている限り防止されるという意味でロックされています)。通常、Apex のクエリカーソルはDatabase.getQueryLocatorメソッドによって返されます。

すべてのレコードが一度に返されるわけではなく、データのバッチに分割されます。500 件のレコードがあった場合、最初の 200 件のみが返される可能性があります (これは、デフォルトで 200 に設定されているバッチ スコープ/サイズによって決定されます)、バッチ実行コードは、2 番目の 200 件に対して再度実行され、最後のレコードに対して再度実行されます。 100 レコード。同じ概念がVisualforce ページネーションDatabase.getQueryLocatorに適用されます (例の標準の Controller 初期化で使用されるへの呼び出しに注意してください)。

制限に関しては、基本的に、 への 50 回のコールDatabase.getQueryLocator、50 個のバッチ Apex クラス、およびページネーション (例で説明されている方法を使用) を使用して同時に開く/実行する 50 個の Visualforce ページ (この制限は以前は 5 でした。50大幅な改善です)。

于 2012-06-15T19:00:26.553 に答える