UltraLite 数据库的高速缓存大小动态增加以响应数据操作,但不超过通过指定参数确定的可用设备内存。通常情况下,不需要指定任何参数。如果您的数据库很大(例如 400 MB),您可能要指定 CACHE_MAX_SIZE 参数,以提高最大限制(超出缺省设置)。UltraLite 基于最大高速缓存大小分配一些数据结构,因此缺省设置并不是极其大:您必须显式请求一个大的最大值,以产生此额外内存开销。指定远大于最大实际数据库文件大小的最大高速缓存大小没有益处。
UltraLite Java 版本数据库不支持高速缓存大小的动态调整。有关 UltraLite Java 版数据库缓存大小的详细信息,请参见UltraLite Java 版本数据库高速缓存大小。
虽然不需要显式调整高速缓存大小,但是,当移动设备上的操作系统要求 UltraLite 数据库应用程序减少其内存使用量时,您通常要调整高速缓存大小。
UltraLite 不会自动减小高速缓存。只能在应用程序中通过 cache_allocation 数据库选项显式控制数据库高速缓存大小。
此过程以 UltraLite C++ API 为例,阐述了动态调整高速缓存大小的功能。假设您想要更新现有 C++ 应用程序,以显式控制高速缓存大小。
更新用于连接到 UltraLite 数据库的连接字符串,以设置高速缓存大小限制。
在此示例中,将最大高速缓存大小设为 100 MB:
static ul_char const * ConnectionParms = "UID=DBA;PWD=sql;DBF=sample.udb;CACHE_MAX_SIZE=100m"; |
为响应操作系统引发的内存不足事件,连接到数据库后,调整 cache_allocation 数据库选项。
在此示例中,使用以下代码可以减少一半高速缓存分配,以调整高速缓存大小:
ULConnection * conn = ULDatabaseManager::OpenConnection(ConnectionParms); ul_u_long percent; percent = conn->GetDatabasePropertyInt( "cache_allocation" ); conn->SetDatabaseOptionInt( "cache_allocation", percent / 2 ); |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |