| 内存管理
将整个数据库加载到内存中会不会让人觉得对内存的使用有点过度?当然不会,内存DBMS的关键就是高效的使用内存,使用的内存的大小必须和数据库相同。换句话说,内存DBMS依靠针对内存优化的设计技术和数据库结构保证性能的显著提高。
 

内存操作
为了高效管理大容量数据库,Altibase被设计成高效使用每一层内存。在数据库系统软件中,内存分配(malloc)和复制(memset)大大的影响了系统的性能。Altibase内存管理模块的设计和实现机制是使用自己的内存池管理内存。Altibase的存储管理器管理内存中优化过的数据页,通过最大化各数据页之间的关系高效的存储和管理数据库。Altibase的查询处理器在处理查询时高效管理内存空间,尽量减少由于不必要的内存分配和释放导致的性能下降。
 

选择性加载
通过使用选择性加载技术将表加载到内存或者卸载到磁盘,Altibase高效的管理内存。一般的,内存DBMS为了快速访问数据都没有缓冲管理器,所以数据库所有表都在内存中。因为经常使用的表不多,所以DBMS将很少使用的表移动到磁盘上,这样这些表占用的内存可以被其他表重用。选择性加载将数据库的一部分加载到内存中,因而系统和数据库的效率得到提高。
 

表精简
在内存数据库中,一个表可能会占用一些不必要的空间。当大量数据被插入特定表之后频繁的发生更新和删除数据的操作时会发生这种情况。在这种情况下,DBMS可以将不必要的内存返回给系统,提高内存空间的使用效率。Altibase提供表的精简功能,使用户高效管理表和内存。
 

数据库空间
Altibase可以将数据库空间定位在内存的共享内存中,也可以定位在进程本地内存中。如果将数据库空间定位在共享内存中,在系统正常的情况下Altibase的重启时间非常短。因为以前数据库的状态仍然安全的保存在共享内存中,Altibase服务器可以使用现有的数据库空间,而不需要将磁盘上的备份数据库重新加载到内存中的数据库空间。
Altibase在内存中的数据空间分成不变的和临时的两部分空间。前者存储现有的表和元信息的数据,其内容反映到磁盘中备份数据库。而后者放置执行查询产生的索引数据和临时表。临时空间不反映到磁盘上的备份数据库,当Altibase服务器结束服务时,这个空间就会消失。
因为Altibase备份数据库不存储索引数据,所以索引数据是存在临时空间中间进行管理的。Altibase在数据库运行初期使用数据库目录中的索引信息创建索引。由于不在备份数据库中存储索引信息,Altibase不需要记录日至更新的日志,可以提高数据库的性能。
由于连续的插入数据造成贮存中的数据库的不变空间不足的情况下,Altibase按固定大小自动扩展空间。当然,扩展后的数据库空间保证反映到备份数据库的数据的稳定性。
|