运行时管理
运行时信息
可以通过调用 mco_get_runtime_info()
API 获取当前活动运行时的特性。
这些特性会以 mco_runtime_info_t 结构的形式返回。
其中许多是布尔值(uint1 类型)(其中 1 = MCO_YES
,0 = MCO_NO
),表明该功能是否已启用。
typedef struct mco_runtime_info_t_
{
uint1 mco_version_major; /* 软件主版本 */
uint1 mco_version_minor; /* 软件版本次号 */
uint2 mco_build_number; /* 构建编号 */
uint1 mco_size_t; /* mco_size_t 变量的大小取决于 x32/x64 架构 */
uint1 mco_offs_t; /* mco_offs_t 变量的大小取决于 x32/x64 架构 */
uint1 uint4_supported; /* 如果为True,则支持uint4数据类型 */
uint1 float_supported; /* 如果为True,则支持double/float数据类型 */
uint1 mco_checklevel; /* 运行时的检查级别,非调试库值为 0 */
uint1 evaluation_version; /* 评估运行时 */
uint1 large_database_supported; /* 如果为True,x32运行模式下支持大型数据库(>4G)*/
uint1 collation_supported; /* 如果为True,则支持外部排序(索引比较) */
uint1 heap31_supported; /* 如果为True,则支持SmartEDB v3.1应用程序级堆特性 */
uint1 bin_serialization_supported; /* 如果为True,则支持二进制或XML序列化 */
uint1 fixedrec_supported; /* 如果为True,则支持固定大小对象的FIXEDREC分配 */
uint1 statistics_supported; /* 如果为True,表示启用统计功能 */
uint1 events_supported; /* 如果为True,则支持同步/异步事件 */
uint1 save_load_supported; /* 如果为True,则支持数据库映像保存/加载 */
uint1 object_initialization_supported; /* 如果为True,则支持新对象字段初始化(而不是零) */
uint1 direct_index_field_access_supported; /* 如果为True,使用索引中字段值,而非对象体优化(持久对象) */
uint1 multiprocess_access_supported; /* 支持链接到程序中的常规或共享内存驱动程序 */
uint1 object_repack_supported; /* 支持动态对象重新打包功能。左为兼容性。(已弃用) */
uint1 transaction_logging_supported; /* 如果为True,事务日志(TL)特性支持 */
uint1 cluster_supported; /* 如果为True,支持群集(CL)特性 */
uint1 high_availability_supported; /* 如果为True,表示支持高可用性(HA)特性*/
uint1 ha_multicast_supported; /* 如果为True,表示支持HA Multi-cast */
uint1 ha_incremental_replication_supported; /* 如果为True,表示支持HA增量复制 */
uint1 binary_schema_evalution_supported; /* 如果为True,表示支持二进制模式计算 */
uint1 unicode_supported; /* 如果为True,表示支持Unicode (nchar / nstring数据类型)*/
uint1 wchar_supported; /* 如果为True,表示支持WChar (WChar / wstring数据类型)。需要C/ c++运行时 */
uint1 recovery_supported; /* 恢复支持。(已弃用)*/
uint1 disk_supported; /* 如果为True,表示支持持久化对象(vtmem / vtdsk runtime) */
uint1 direct_pointers_supported; /* 如果为True,则支持数据库中的直接指针或基于偏移量的指针(DPTR / OFFS运行时) */
uint1 persistent_object_supported; /* 如果为True,则支持对象持久化(允许在imoffs运行时持久化对象) */
uint1 xml_import_export_supported; /* 如果为True,表示支持XML数据库导出/导入 */
uint1 user_defined_index_supported; /* 如果为True,则支持用户定义索引(比较)*/
uint1 multifile_supported; /* 如果为True,表示支持多文件持久存储 */
uint1 multifile_descriptor_supported; /* 如果为True,多文件描述符文件(mfd-file)支持多文件持久存储特性 */
uint1 two_phase_commit_supported; /* 如果为True,表示支持两阶段提交 */
uint1 rtree_supported; /* 如果为True,在运行时包含rtree索引的实现代码 */
uint1 tree_based_hash; /* 如果为True,则支持基于树的散列实现(用于内部调试) */
uint1 tmgr_mvcc_async_cleanup; /* 值为1表示“延迟清除不需要的对象版本”;值为0意味着立即清理(表示文件mcocfg.h中MCO_CFG_TMGR_MVCC_ASYNC_CLEANUP的状态) */
uint1 concurent_disk_btree; /* (已废弃) */
uint1 open_cursor_goto_first; /* 表示新游标最初定位到第一个元素 */
uint1 smart_index_insert; /* 在自愿创建索引过程中对数据记录进行预排序 */
uint1 btree_leaf_lock; /* B树索引的细粒度锁 */
uint1 null_statistics; /* (已废弃)*/
uint1 implicit_runtime_start; /* (已废弃) */
uint1 bufferized_sync_iostream; /* 同步过程启用HA传输缓冲 */
uint1 async_replication; /* 启用HA异步复制 */
uint1 fast_transaction_list; /* 表示在事务列表中启用树索引(MURSIW) */
uint1 extendable_dirty_page_bitmap; /* 持久存储的脏页映射扩展 */
uint1 mursiw_policy; /* MURSIW TM行为:0 -基于优先级的事务队列,1 -顺序事务队列,2 -全局同步,3 - RW-Lockk */
uint1 sync_capabilities; /* 同步原语实现能力,位掩码:1 -单进程,2 -多进程能力原语 */
uint1 char_comparison_policy; /* 比较字符as: 0 -默认,1 -有符号,2 -无符号 */
uint4 stream_buffer_size; /* 在HA / CL / TL等流代码中使用的缓冲区大小(也用于流读取器和流写入器函数) */
uint1 max_db_instances; /* 运行时支持的数据库实例数量 */
uint1 max_db_name_length; /* 运行时支持的数据库名称的长度 */
int max_extends; /* 数据库内存区的扩展数 */
uint4 tl_page_buffer_size; /* TL操作的内部缓冲区的大小 */
uint2 ha_max_replicas; /* 同一时间HA副本个数 */
uint4 ha_transmit_buffer_size; /* HA用于从commit发送数据的缓冲区大小,默认是2K */
uint4 ha_syncronization_buffer_size; /* HA同步流IO缓冲区大小,默认为2K */
uint4 default_redo_log_limit; /* 重做日志长度限制的默认大小,默认为16M */
uint1 mvcc_critical_sections; /* MVCC使用的临界区数目,最好是质数 */
uint1 mvcc_per_index_locks; /* 索引使用的锁的数目,最好是质数 */
uint2 con_disk_page_cache_size; /* 每个连接页缓存的长度。运行时预分配一些在需要时加速页分配 */
uint1 small_con_cache_threshold; /* 如果con_disk_page_cache_size > small_con_cache_threshold,则使用散列的每个连接缓存;否则使用数组 */
uint4 extendable_dirty_page_bitmap_limit; /* 如果启用了可扩展的脏页位图,位图的最大长度 */
uint1 max_vista_sessions; /* Vista最大会话数(仅限windows Vista) */
uint1 concurrent_write_transactions; /* 当前事务管理器是否支持并发写事务 */
uint1 encryption_support; /* 启用数据库加密 */
const char *mco_revision; /* 版本号字符串 */
} mco_runtime_info_t;
运行时选项
函数 mco_runtime_setoption()
允许应用程序控制运行时的某些特性。
以下运行时选项的可选值在头文件 mco.h
中定义:
MCO_RT_OPTION_EXTHEAPS
启用自定义堆管理。此选项在 7.1 版本中已弃用。如果指定,
mco_runtime_setoption( MCO_RT_OPTION_EXTHEAPS, 1)
将返回MCO_E_UNSUPPORTED
错误代码。MCO_RT_OPTION_DB_SAVE_CRC
此选项在 7.1 版本中已弃用。
启用 CRC32 流一致性覆盖。自 7.1 版本起,保存的数据库映像始终会保留 CRC。请注意,为了保持向后兼容性,
mco_db_load()
函数能够加载未保存 CRC 的快照。此功能将在未来的版本中移除。MCO_RT_OPTION_MARK_LAST_OBJ
用于指定需要事务结束的通知。请参阅事务日志记录。
MCO_RT_CRC_ALGORITHM
指定用于验证持久数据库一致性的 CRC32 算法。
MCO_RT_MAX_PATRICIA_DEPTH
指定在抛出错误
MCO_E_PATRICIA_TOO_DEEP
之前Patricia 索引的最大深度。(默认值为256。)MCO_RT_MAX_DYNAMIC_PIPES
定义了可通过
mco_db_extend_dev()
添加的PIPE_BUF
类型设备的最大数量。MCO_RT_MAX_DYNAMIC_PIPES
定义了当函数
mco_class_load()
需要将加载的对象与数据库中已存在的对象进行合并(追加)时的策略。默认值为 0(在加载前删除指定类的所有对象)。MCO_RT_OPTION_DATETIME_PRECISION
日期时间值的时间分辨率(精度):1 - 秒,1000 - 毫秒,1000000 - 微秒,1000000000 - 纳秒。
MCO_RT_OPTION_LAST
这并非一个选项,而只是一个标记,用于方便获取运行时选项的总数。
Unix共享内存选项
MCO_RT_OPTION_UNIX_SHM_MASK
设置 Unix 共享内存访问模式。请参阅共享内存运行时选项。
Posix 共享内存选项
MCO_RT_POSIX_SHM_OPT
启用设置以下 POSIX 共享内存选项的组合。
MCO_RT_POSIX_SHM_ANONYMOUS
启用 POSIX 函数
mmap
的MAP_ANONYMOUS
选项,该选项可将虚拟共享内存映射到当前进程。MCO_RT_POSIX_SHM_SHARED
指定将使用 POSIX 函数
mmap
的MAP_SHARED
选项。否则将使用MAP_PRIVATE
选项。
Windows 共享内存选项
Windows 共享内存和同步原语的命名以及安全描述符选项:
MCO_RT_WINDOWS_SHM_OPT
启用设置以下 Windows 共享内存选项的组合。
MCO_RT_WINDOWS_SHM_PREFIX_GLOBAL
使用全局前缀。共享对象在所有会话中都可见。
MCO_RT_WINDOWS_SHM_PREFIX_LOCAL
使用本地前缀,共享对象仅在当前会话中可见。
MCO_RT_WINDOWS_SHM_PREFIX_SESSIONS
Vista 会话修复。
MCO_RT_WINDOWS_SHM_PREFIX_NONE
无前缀(默认)。
MCO_RT_WINDOWS_SHM_PREFIX_MASK
每个人都可以访问。
MCO_RT_WINDOWS_SHM_SEC_DESCR_EMPTY
使用 Windows 默认策略(默认)
MCO_RT_WINDOWS_SHM_SEC_DESCR_SAMEUSER
只有同一用户可以访问。
MCO_RT_WINDOWS_SHM_PREFIX_NONE | MCO_RT_WINDOWS_SHM_SEC_DESCR_NULL`
这是默认的 Windows 共享内存选项组合为,这使得数据库仅对本地会话可见且可访问。
MCO_RT_CRC32_NONE
不计算循环冗余校验(CRC)。
MCO_RT_CRC32
版本15523 2014-07-17之前使用的CRC实现。
MCO_RT_CRC32_FAST
仅对数据的第一个和最后一个 8 字节字计算循环冗余校验(CRC) 。
MCO_RT_CRC32_OLD
版本12823 2013-01-28之前使用的CRC实现。
MCO_RT_CRC32C
版本15523 2014-07-17 之后硬件与软件实现 CRC32C。