set alloc block size
此功能仅针对持久化类生成。
适当设置块大小能够通过使此类的实例在持久化存储上聚集在一起,从而提高持久化对象的顺序扫描性能;这样可以减少磁盘定位开销,并将碎片保持在合理水平。最佳大小会因此类对象的预期数量而异,但可能在 1 到 10 兆字节之间。
MCO_RET classname_set_allocation_block_size(
/*IN*/ mco_trans_h trans,
/*IN*/ mco_size_t block_size
);
兼容性
此函数与 mco_disk_database_vacuum()
API 不兼容,因为 mco_disk_database_vacuum()
会遍历所有已分配的页面(在位图中标记为已分配的页面),而调用 classname_set_allocation_block_size()
实际上会导致运行时分配整个块,而其中只有部分被使用并正确初始化。
参数
trans
mco_trans_h
由 mco_trans_start()
函数返回的 MCO_READ_WRITE
事务句柄。
block_size
mco_size_t
一个指定分配块大小的整数值。
返回
MCO_S_OK
日志含义设置分配块大小成功。
MCO_E_DISK_*
由不同持久页访问失败引起的错误代码。
示例
/* 模式片段 */
declare database hybriddb;
transient class A
{
unsigned<4> ui4;
...
};
persistent class B
{
unsigned<4> ui4;
...
};
/* 应用程序代码片段 */
const char * db_name = "hybriddb";
int main(int argc, char* argv[])
{
MCO_RET rc = MCO_S_OK;
mco_db_h db = 0;
mco_trans_h t;
...
B b;
...
{
rc = mco_trans_start( db, MCO_READ_WRITE, MCO_TRANS_FOREGROUND, &t );
...
rc = B_set_allocation_block_size( t, 1024*1024 );
...
}