内存操作
为了高效管理大容量数据库,Altibase 被设计成高效使用每一层内存。在数据库系统软件中,内存分配( malloc )和复制( memset )大大的影响了系统的性能。Altibase内存管理模块的设计和实现机制是使用自己的内存池管理内存。Altibase 的存储 管理层(Storage Management Layer)管理内存中优化过的数据页,通过最大化各数据页之间的关系高效的存储和管理数据库。Altibase的查询处理层(Query Processing Layer) 在处理查询时高效管理内存空间,尽量减少由于不必要的内存分配和释放 导致的性能下降 。
磁盘操作
作为大容量数据库高效管理的方案,Altibase 在一个DBMS中提供内存和磁盘存储区。同内存一样,基于磁盘的存储支持 DRDBMS 的 LRU 算法的缓冲池和物理磁盘存储管理。用户将希望的数据加载到缓冲池,与高性能内存存储区的数据最小化性能最低。
表精简
在内存数据库中,一个表可能会占用一些不必要的空间 。当大量数据被插入特定表之后频繁的发生更新和删除数据的操作时会发生这种情况。在这种情况下,DBMS 可以将不必要的内存返回给系统,提高内存空间的使用效率。Altibase 提供表的精简功能,使用户高效管理表和内存 。
数据库空间
Altibase 可以将数据库空间定位在内存的共享内存中,也可以定位在进程本地内存中。如果将数据库空间定位在共享内存中,在系统正常的情况下 Altibase 的重启时间非常短。因为以前数据库的状态仍然安全的保存在共享内存中,Altibase 服务器可以使用现有的数据库空间,而不需要将磁盘上的备份数据库重新加载到内存中的数据库空间。
Altibase 在内存中的数据空间分成不变的和临时的两部分空间。前者存储现有的表和元信息的数据,其内容反映到磁盘中备份数据库。而后者放置执行查询产生的索引数据和临时表。临时空间不反映到磁盘上的备份数据库,当Altibase服务器结束服 务时,这个空间就会消失。
因为Altibase备份数据库不存储索引数据,所以索引数据是存在临时空间中间进行管理的。Altibase 在数据库运行初期使用数据库目录中的索引信息创建索引。由于不在备份数据库中存储索引信息,Altibase 不需要记录更新的日志,可以提高数据库 的性能。
由于连续的插入数据造成贮存中的数据库的不变空间不足的情况下,Altibase 按固定大小自动扩展空间。当然,扩展后的数据库空间保证反映到备份数据库的数据的稳定性。
关于存储空间问题,还可以使用移动(move table)到磁盘空间的功能。有同样表结构时,该Move功能可将内存的数据移到磁盘,并将该数据从原来的内存表中删掉。这样,可以将频繁访问的数据和不经常访问的数据分开存储,从而更高效地利用存储空间。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10954452/viewspace-606840/,如需转载,请注明出处,否则将追究法律责任。