Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » Ultra Light データベース管理とリファレンス » Ultra Light のパフォーマンスに関するヒント

 

Ultra Light データベースのキャッシュサイズの調整

Ultra Light データベースのキャッシュサイズは、使用可能なデバイスのメモリが指定したパラメーターの範囲内であれば、データ操作に応じて動的に増加されます。通常は、パラメーターを指定する必要はありません。データベースが大きい (400 MB など) 場合は、CACHE_MAX_SIZE パラメーターを指定して、最大許容サイズをデフォルト値よりも大きくすることができます。Ultra Light は、最大キャッシュサイズに基づいて、いくつかのデータ構造を割り当てます。そのため、デフォルト値はさほど大きく設定されていません。メモリのオーバーヘッドを追加するには、より大きな最大値を明示的に要求する必要があります。最大キャッシュサイズに、実際のデータベースファイルの最大サイズより大きい値を指定しても、利点はありません。

注意

動的なキャッシュサイズの増加は、Ultra Light Java Edition データベースではサポートされていません。 Ultra Light Java Edition データベースのキャッシュサイズの詳細については、Ultra Light Java Edition データベースのキャッシュサイズを参照してください。

キャッシュサイズを明示的に調整する必要はありませんが、モバイルデバイス上のオペレーティングシステムによって、Ultra Light データベースアプリケーションのメモリ使用量を減らすように要求された場合は、通常、キャッシュサイズを調整します。

Ultra Light のキャッシュサイズは自動的には縮小されません。データベースのキャッシュサイズを制御するには、アプリケーションの cache_allocation データベースオプションを使用する必要があります。

 ♦ Ultra Light for C++ アプリケーションでの Ultra Light データベースのキャッシュサイズの調整

ここでは、Ultra Light for C++ API を使用した動的なキャッシュサイズ変更機能について説明します。キャッシュサイズを明示的に制御するために、既存の C++ アプリケーションを更新することが前提です。

  1. キャッシュサイズの制限値を設定するには、Ultra Light データベースへの接続に使用する接続文字列を更新します。

    この例では、最大キャッシュサイズを 100 MB に設定します。

    static ul_char const * ConnectionParms =
        "UID=DBA;PWD=sql;DBF=sample.udb;CACHE_MAX_SIZE=100m";
  2. オペレーティングシステムによって発行されたメモリ容量低下イベントへの対応として、データベースへの接続後、cache_allocation データベースオプションを調整します。

    この例では、次のコードを使用して、キャッシュサイズの割り当てを半分に減らします。

    ULConnection * conn = ULDatabaseManager::OpenConnection(ConnectionParms);
    ul_u_long percent;
    percent = conn->GetDatabasePropertyInt( "cache_allocation" );
    conn->SetDatabaseOptionInt( "cache_allocation", percent / 2 );
 参照