我需要将我的Web应用程序从MySQL转换为在DB2上运行。 我需要事先知道我是否需要一个高规格的服务器来确保Web应用程序的执行速度与现在的MySQL相同。
该应用程序是一个非常数据库密集型数据分析应用程序与浏览器界面 现在只使用大约20%的可用CPU功率和30%的内存。 如果转换成DB2,会花费更多的CPU还是内存? 我需要一个高规格的服务器?
我只是寻找任何普遍的感觉,如果一切都保持相等(数据库大小,stream量等),是否需要升级服务器到MySQL到DB2的转换。
你使用isam还是innodb?
通常,DB2比当前版本的mysql需要更less的系统资源。 但是,如果你需要的是性能,而且数据库的大小不是太大,你可能真的需要考虑切换到postgresql,因为它的function远不如mysql那么“function强大”(读:臃肿) 。 有时你需要MySQL,但如果你不这样做,通常使用pgsql是一个好主意。
如果你运行mysql或者DB2,我不认为这会有很大的不同。 但是,除非你真的自己尝试,否则你不能确定性能。 我build议您在类似于您当前的系统的testing环境中尝试它。
如果您启用了自调整内存pipe理function(STMM),那么DB2应该对服务器上的内存进行相当有效的使用,前提是DB2之外的进程以良好的方式分配和释放其内存。 STMM调整几个高影响内存缓冲区和堆的大小以适应不断变化的数据库工作负载。 DB2的最后几个主要版本默认启用了此function,并且通常会到达与DB2专家手动调整的数据库几乎相同的内存设置。 STMM的一个注意事项是devise者禁止在内存大小上进行大幅度的调整,这意味着STMM可能需要进行一些增量调整,以适应数据库利用率的急剧上升或下降。 DB2提供了丰富的内置监视function来帮助您跟踪内部内存结构的效率和增长模式,因此您可以快速了解特定工作负载的“正常”状况。
在CPU方面,性能和可伸缩性的最大风险之一是扫描,即使所有必需的数据页已经caching在缓冲池内存中,也会烧焦CPU周期。 随着表的增长和查询的扩大,了解索引如何工作以及何时使用或忽略特定的SQL语句尤为重要。 有时候,不可接受的扫描并不是因为糟糕的索引或糟糕的连接谓词,而是因为RUNSTATS收集的表的基数和分布统计信息已经过时,这会误导DB2基于成本的查询优化器低估使用部分或全部扫描的后果。 db2expln实用程序将通过考虑当前统计信息来显示build议查询的访问计划。 在运行时,还可以监视读取(扫描)的行数与实际select的行数,这可以让您了解到达工作负载的结果集的时间。