教你轻松掌握DB2 9.5的数据库内存保护

日期: 2008-06-03 作者:Alice 来源:TechTarget中国

  在DB2 9.5版本中,数据库引擎由基于过程模式转变为线程模式,这将意味着整个数据库引擎都在一个地址空间下(任何代码段都可以访问任何全局变量)。这自然是有利也有弊。其中一个有利的方面是线程比过程更“轻”,这表示DB2的性能更好。有人做过测试显示DB2 9.5的性能在负荷运行情况下比相同状态下的DB2 9.1提升了2%到5%。


  而不利的方面是,在任何与缓冲池无关的任何db2代码路径中的任何db2错误都有可能会破坏数据页。此外,和db2共享相同地址空间的非保护模式下的用户自定义函数(unfenced UDF)也有可能会破坏内存页。而后,这些不正确数据页就会在毫不察觉的情况下被写入磁盘里,而你很可能永远都不会知道这些数据已经出现了不一致。线程模式还会产生与非保护模式下的用户自定义函数相关的安全问题,因为线程模式在潜在情况下会允许恶意用户代码在没有得到授权的情况下读写数据页。如果在保护(fensed)模式下运行用户自定义函数,这些问题就都不成问题,用户代码会通过一个子过程执行并且会通过IPC与DB2进行交流,唯一的问题就是这样做比在非保护模式下运行要慢很多。


  在IBM的Power6 CPU上市的时候,也带来了一项用于内存保护的新技术就是用户级别存储键技术。这里不是说的内核级别存储键,这个已经存在了一段时间,而用户级别的存储键则是个新东西。存储键能够使应用程序锁定内存页,防止对其进行任何形式的读写组合操作。


  必须支持CPU上的存储键是因为内存访问的速度非常之快(达到纳秒级),在软件水平是无法做到的。存储键使在用户空间执行的DB2引擎能够防止代码段对缓冲池数据页进行无授权的读写操作。当然,如果你是在AIX上运行Power6处理器,那这只是其中一个可选的保护措施。启动该功能需要5%到6%的性能开销。用下面的语句启动该功能:






db2set DB2_MEMORY_PROTECT=yes 
RESTART YOUR INSTANCE


  你需要运行AIX 5.3 ML6(或更高版本)或AIX 6.1版操作系统。


  假如你还在AIX上开发c或c++代码,而且并不适用Java的话,你可以选择使用ukey_protect( address, size, UKEY_PRIVATE)函数来协助保护数据内存结构。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

Alice
Alice

相关推荐

  • 数据库产品巡礼:IBM DB2概览

    IBM DB2关系型数据库管理系统提供了支持多平台系统的关键技术,它具备较高的可用性和良好的性能。

  • 如何进行分布式大数据应用调优

    分布式环境通常是与数据库服务器相分离的。而DBA的工作就是监视这些环境并配置和优化数据库服务器以满足多种需求。大数据的出现加剧了DBA的问题。

  • IBM DB2将迎来30岁“生日”

    再过几天,主流数据库产品DB2就将迎来它30岁的“生日”。作为关系型数据库技术的标志性产品,DB2在过去的30年中也在伴随用户需求的变化不断地发展。

  • SQL调优之“忧”:如何进行SQL调优

    DBA们应该将自己从“我要对什么调优?”的老路上解放出来,而在指标、配置和成本方面花费一定的时间。