[oracle] how to use open source tools to implement your own tpc-c
作者:fenng
日期:mar 14 2004 (v0.13)
站点:http://www.dbanotes.net
|
本文简介
不可否认,硬件选型是一门艺术,选择合适的硬件,能给公司节省大笔的费用,选择不能满足业务需求的服务器产品,不但花了冤枉钱,还会对将来的业务产生影响。 可能大家首先会想到参考服务器的tpc-c的信息。提到tpc-c,可能很多人对此都感到既熟悉又陌生,因为经常听人说起,但是具体的问下去,能说清楚的又没有多少人,而且,从大家口中得到的还不尽相同。那么什么是tpc/tpc-c这些都代表什么意思呢? 什么是tpc? tpc(transaction processing performance council,事务处理性能委员会)是一个非盈利性的组织,其官方站点在http://www.tpc.org。其宗旨是为了制定商务应用基准程序(benchmark)的标准规范,提供性能和价格度量,并管理测试结果的发布。在业界极其具有权威性。 tpc的基准程序的标准规范(standard specification)是对公共开放的,可以在官方站点上得到,但是tpc却不提供基准程序的代码。任何软硬件厂商或其它测试者可以根据标准规范,最优地构建自己待测的系统。为保证测试结果的客观性,被测试者(通常是厂家)必须提交给tpc一套完整的报告(full disclosure report),包括被测系统的详细配置、分类价格和包含五年维护费用在内的总价格。该报告必须由tpc授权的审核员核实(tpc本身并不做审计)。 什么是tpmc? 先说一下tpc-c,tpc-c是联机事务处理(on-line transaction processing , oltp)的基准程序。tpc-c模拟一个批发商的货物管理环境。tpc-c使用三种性能和价格度量,其中性能由tpc-c吞吐率衡量,单位是tpmc。tpm是transactions per minute的简称;c指tpc中的c基准程序。它的定义是每分钟内系统处理的新订单个数。 了解了这些内容,您可能会想:我们公司的pc服务器完全是自己攒出来的,如何进行tpc-c的衡量的?也去参考tpc官方站点上的信息?不要忘了,tpc.org 上公布的测试结果都是各大厂商根据自己的系统进行了充分优化之后的出来的结果。打个比方,tpc公布的数值就好比崭新的法拉利跑车经过专业技师们的精心检查保养,然后在专用跑道上跑出来的速度值,而我们的情况可能是法拉利(甚至是夏利)要在乡村土路上行驶,可比性大打折扣。 有的朋友会想:那我们可以根据自己的情况,拿一个秒表在“乡村土路”上测试一下看看呀。这样的意义也是显而易见的,对我们的实际的环境不是更具有参考价值?不错,这也正是本文的目的:让我们利用开源(open source)工具来实现自己的针对oracle数据库的tpc-c。 hammerora—the open source oracle load test tool 首先介绍一下hammerora。从创作者对这个工具的标题描述可以看出,hammerora是一款oracle数据库负载测试工具。该工具可以在oracle 8i、9i和10g等版本上使用。
图1: hammerora的logo
hammerora的设计原理是解析oracle的trace文件,并把它们转化为oratcl程序,然后在oracle数据库中用多个用户并发的对用户的事务进行“回放”。我们知道,oracle的trace文件能够翔实的记录用户对数据库的操作。这样hammerora能够保证对用户环境的真实模拟。 hammerora最初是用以学习的目的:期望是模拟数据库的一定数量的用户。这样一个小的基于家庭的学习开发系统就能够比较接近产品环境。这个工具已经成长为一个oracle数据库做压力测试--从小的数据库到大的基于rac的集群。 tcl语言已经用来提供高性能的和oracle数据库的oci集成,而无需重新编译生成的程序。每个生成的程序具有严格的tcl/oratcl兼容性,并且可以在hammerora的命令行shell下运行。tcl的强大功能和灵活性意味着潜在的功能是无穷尽的。tcl线程包用来实现对oracle数据库的多个并发连接。 hammerora包含oracle存储过程和tcl驱动脚本用来运行tpc-c基准程序。但是,我们先要构建一个同tpc-c规范相符的数据库。这样,我们需要用到orabm。 orabm是geoff ingram (high-performance oracle: proven methods for orabm的运行机制在geoff ingram有明确的说明,这里翻译如下:orabm 通过在每个用户指定的并发数据库会话(session)中运行用户执行数量的数据库事务来进行工作.事务通过orabm模式下的orabm_serverside_stress存储过程运行. 更详细信息可以参考http://www.linxcel.co.uk/orabm/的内容. 安装步骤 对oracle 9i 来说,如果没有安装该组件的话,可能要重新运行runinstall,在oracle 9i client products树中选择"oracle call interfaces" . 对oracle 10g来说,oracle 10 oci 库应该是默认安装的.
|
