既存のシーケンスのキャッシュサイズを更新したいのですが、テーブルのようにoracleでシーケンスを記述したいと思います。どうやってするの ?
シーケンスのキャッシュ値を増やすことのすべての欠点は何ですか
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回実行する必要はありません。
したがって、キャッシュを増やすと、同じリソースでの同時セッションが少なくなります。