0

既存のシーケンスのキャッシュサイズを更新したいのですが、テーブルのようにoracleでシーケンスを記述したいと思います。どうやってするの ?

シーケンスのキャッシュ値を増やすことのすべての欠点は何ですか

4

1 に答える 1

2
Alter sequence seq_name cache 20;

ドキュメントを参照してください。

ddlを取得するには、dbms_metadataパッケージを使用できます。これは、任意のオブジェクトに使用できます。

select dbms_metadata.get_ddl('SEQUENCE','SEQ_NAME') from dual;

キャッシュサイズを増やすと、シーケンスから大量のフェッチを行う場合に役立ちます。あなたがそれらを使用するという事実を考慮すると、それを増やすことには欠点はありません。

ただし、一度に1ミリオンの値を生成し、10のみを使用する場合、999990の値が失われるため、適切なアイデアではない可能性があります。次のセッションでは、さらに1000000の値が生成されます。エンジンはそれらを生成し、セッションに値を割り当てるように機能すると思います。

たとえば、私の意見では、セッションで通常使用するキャッシュの10分の1で問題ありません。

更新:David Aldridgeのコメントを追加:

大規模なキャッシュの有用性は、実際には一般的に使用される速度に関連しているため、大規模な選択だけでなく、一度に1つの値を使用するセッションが多いシステムでも使用できます。背景として、小さなキャッシュでのパフォーマンスの問題は、キャッシュが使い果たされたときにSEQ$システムテーブルを変更する必要があるために発生します。これは小さな操作ですが、明らかに1秒間に100回実行する必要はありません。

したがって、キャッシュを増やすと、同じリソースでの同時セッションが少なくなります。

于 2012-12-20T07:59:36.467 に答える