已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I 基于基于 TPC CTPC C 基准数据库系统性能测试的实基准数据库系统性能测试的实 现毕业论文现毕业论文 目 录 摘摘 要要 I ABSTRACT II 目目 录录 III 1 绪绪 论论 1 1 1 课题研究背景与意义课题研究背景与意义 1 1 2 国内外数据库性能测试的研究状况国内外数据库性能测试的研究状况 1 1 3 本文的主要工作本文的主要工作 4 1 4 本文组织结构本文组织结构 4 2 数据库性能测试数据库性能测试 5 2 1 数据库性能测试方法及内容数据库性能测试方法及内容 5 2 1 1 性能测试分类 5 2 1 2 性能测试指标 6 2 2 性能测试工具性能测试工具 LOADRUNNER介绍介绍 7 2 2 1 LoadRunner的特点 7 2 2 2 LoadRunner功能描述 8 2 2 3 LoadRunner测试步骤 8 3 基于基于 TPC C 基准事务的实现基准事务的实现 9 3 1 TPC C 基准总述基准总述 9 3 1 1 TPC C 简介 9 3 1 2 TPC C测试指标 10 3 2 基于基于 TPC C 基准数据库设计基准数据库设计 12 3 2 1 SQL Server 2000 中表的设计 12 3 2 2 表的结构关系 14 3 2 3 TPC C基准数据录入 15 3 3 基于基于 TPC C 基准事务模型的实现基准事务模型的实现 17 3 3 1 NEW ORDER 新订单 事务的实现 17 3 3 2 PAYMENT 支付 事务的实现 19 3 3 3 DELIVERY 发货 事务的实现 21 3 3 4 STOCK LEVEL 库存状况查询 事务实现 22 3 3 5 ORDER STATUS 订单状况查询 事务的实现 22 II 4 测试方案及结果分析测试方案及结果分析 24 4 1 测试方案测试方案 24 4 2 测试场景设置测试场景设置 29 4 3 测试结果分析测试结果分析 32 4 4 系统瓶颈分析系统瓶颈分析 38 5 全文总结和展望全文总结和展望 40 5 1 全文总结全文总结 40 5 2 展望展望 40 参考文献参考文献 41 致致 谢谢 42 1 1 1 绪 论 1 11 1 课题研究背景与意义 随着软件业的迅猛发展 系统开发的结构层次在不断地加深 数据库从以 前一个默默无闻的后台仓库 逐渐演变为今天的数据库系统 他在很多系统的 设计中起着举足轻重的作用 对于其性能的要求也越来越高 数据库测试开发 也逐渐演变出一些适合其特点的测试方法和工具 7 数据库的测试同其他软件测试一样 包含性能测试和功能测试两种 其中 功能测试的目的是验证系统是否实现了用户要求的所有功能要求 而性能测试 的目的是验证软件系统是否能够达到用户提出的性能指标发现软件系统中存在 的性能瓶颈 最后起到优化系统的目的 评价一个数据库仅仅通过其功能是否 实现是远远不够的 性能的好坏与否也是一个非常重要的指标 目前 有各种各样的功能强大的数据库测试工具 但是能正确的使用工具 开发合适的脚本 创建测试场景和正确的根据自己需要的测试参数选择合适的 测试工具是需要丰富的经验与技巧的 基于前人的经验 本文具体分析和实现 了基于 TPC C 基准的数据库性能测试 1 21 2 国内外数据库性能测试的研究状况 随着数据库性能测试的不断升温 对数据库的测试方法和内容也是层出不 穷 清华大学就曾对通用海量数据库性能的测试和实现 6 进行了研究 在这篇 论文中作者为了能够反映出数据库实际的运行性能 其设计了一种可配置数据 库性能的测试基准 这种基准能够针对具体的应用数据库系统 建立吸纳供应 的控制模型 这个基准包含了几种模型 包括控制模型 数据模型和事务处理 模型 其中控制模型主要是描述了数据库的运行模式 而数据模型则描述的是 用户访问数据库的数据集合 事务处理模型主要是描述用户访问数据库的行为 2 模式 控制模型同事务处理模型和数据库模型组装动态 SQL 语句 然后产生多 个并发进程模拟大量实际用户访问数据库 以测试数据库的运行状况和性能 这个测试标准 与目前国际上通用的固定模型测试标准如 TPC C 等相比 更能 够客观反映数据库实际运行性能 这说明 在国内我们也开始慢慢寻找出更加 符合实际的标准来对数据库进行测试 但是这一项目仅对数据库的正确性和可 用性进行了相关设计和实现 如果要想形成像 TPC C 那样通用的且能对数据库 的各方面性能都能进行测试的方案 还需要进一步的研究 东北大学就曾对 TPC C 测试标准及其在面向对象数据库 14 上的设计与实 现一文中也指出 数据库测试标准主要用途是数据库的开发者通过对其系统的 性能测试和评价 而对系统进行改进和完善 用户根据不同系统的测试数据 而选择性能优良的系统 作为新生代的面向对象数据库系统 OO 数据库系统 可在具有复杂数据结构的场合得到应用 并且其也可能广泛地应用于在线事务 处理中 但是为我们所熟知的 TPC C 基准仅给出了数据模型 事务处理和测试 指标的定义 研究数据库测试技术以及 TPC C 基准在面向对象数据库中的使用 也是大有裨益 由以上两个方面的例子可以说明 在国内 不管是研究新的测试标准研究 在现有标准上增加新的应用等方面都开展了许多工作 相信在不久的将来 国 内将会出现一套完整的数据库测试方法 数据库系统测试作为软件测试的一个重要分支 在详细阐述其之前 我们 有必要对软件测试进行一个概述 鉴于目前国内对软件测试的重视程度在不断 地提高 许多软件测试方面的材料和研究也在不断地推进 以前的那种对软件 测试 可有可无 的态度得到了很大的改善 他已变成了软件开发的一个必不 可少的一个环节 很多软件开发公司都有自己的软件测试小组 所谓的软件测 试一般看来就是根据软件开发各阶段的制约和软件的内部结构 精心设计很多 的测试用例 包括一些极端的测试用例 这些用例的内容包括输入数据以及预 期的输出结果 应用这些测试用例来不断地运行程序 发现其中不符合质量的 特性要求 亦即软件的缺陷和错误 另一方面 软件的测试是贯穿整个软件开 发的生命周期中 所以软件的需求设计 规格说明书以及程序等都要包含测试 的相关内容 3 至于数据库测试种类 从测试过程的角度可以分为系统测试 集成测试和 单元测试 接下来对这几种测试进行简要介绍 一 系统测试 系统测试包括了不同的测试组成部分 其主要目的就是充分地运行系统 并进一步验证系统各部件是否都能够正常地完成所赋予的任务 所以当产品需 求和系统设计的文档完成以后 系统测试的小组成员就应该提前开始制定出相 应的测试计划和设计几个不同的测试用例 不必等到 实现与测试 阶段完成 以后在进行 这样做的一个主要目的就是可以大幅提高系统测试的效率 其测 试工具有主要用于评估测试各种不同系统参数下的数据库负载情况的模块化 跨平台 多线程基准测试工具 sysbench 这一阶段的测试主要是通过数据库设 计评审来实现 二 集成测试 集成测试主要是对接口进行的测试工作 其主要考虑的是内容包括数据项 的修改操作 数据项的增加操作 数据项的删除操作 数据表空 数据表满 删除空表中的记录 数据表的并发操作 针对存储过程的接口测试 结合业务 逻辑做关联表的接口测试 等价类 边界值 错误猜测等是其采用的主要方法 三 单元测试 对于一个软件 要确保其功能是按照最先设计实现 我们可以创建一组测 试并在开发过程中使用 这就是所谓的但也测试 单元测试主要侧重的是逻辑 覆盖 其可以通过语句覆盖和走读的方式完成 数据库单元测试是测试应用程 序不同组成部分间所使用的数据 比如当一个应用程序升级或是重新开发 用 户便可设置单元测试用例 验证这个应用程序的数据输出在不同的版本间是否 是一致的 10 随着数据库测试的不断发展 现在在数据库功能的测试领域中有许多的工 具 例如 DBunit QTP DataFacory 等 其中 DBunit 是一款开源的数据库功能 测试框架 其可以使用类似于 Junit 的方式对数据库的基本操作进行白盒单元测 试 对输入输出进行校验 4 QTP 是一款自动测试工具 其通过对对象的捕捉和识别 模拟用户的操作 流程 并通过校验方法或结合数据库后台的监控对整个数据库的数据进行测试 DataFactory 是数据自动生成工具 通过它可以生成任意的结构数据库 并 实现对数据库的填充 可以根据需要产生大量的数据以帮助验证数据库中的各 种功能是否正确 1 31 3 本文的主要工作 鉴于目前专门对数据库性能测试的研究还有待深入研究 现有的测试方法 缺少了对数据库性能的详细评测 本文研究的创新点和主要内容如下 1 对数据库测试的内容 指标进行更加深入详细的归纳总结 2 对 TPC C 基准数据库的设计与事务模型的实现进行详细的描述 3 本文的实践是基于数据库性能测试标准和数据库负载测试工具 Loadrunner 详细介绍了从脚本录制修 测试场景设计到最后测试结果分析的 整个过程 为以后对 Loadrunner 工具的使用提供参考 1 41 4 本文组织结构 第一章介绍课题背景 国内外数据库性能评测基准领域的研究状况以项目 的主要工作等 第二章介绍数据库性能测试的主要方法 内容 主要测试工具 LoadRunner 为课题的设计和实现奠定基础 第三章对TPC C做了介绍 并详细分析和实现了基于TPC C基准的事务模 型 第四章提出测试方案 并对测试的结果进行分析 与TPC C提供的标准进 行对比 找出系统的瓶颈 第五章对全文进行总结和展望 指出项目的不足和改进的空间 5 2 2 数据库性能测试 2 12 1数据库性能测试方法及内容 数据库测试属于软件测试测试中的一类 一般从以下三个方面进行分类 从透明度分为黑盒测试和白盒测试 从开发过程可分为单元测试 集成测 试 系统测试等 专门性的测试还包括安全性测试 性能测试和内存测试等 由于本文主要针对的是数据库的性能测试 接下来对性能测试的内容和指标进 行介绍 2 1 12 1 1 性能测试分类性能测试分类 广义的性能测试通常包括压力测试 负载测试 疲劳强度测试 并发 用 户 测试 大数据量测试 配置测试 可靠性测试 安全性测试等和性能相关 的测试 10 通常一次测试也是包括这几种测试中的多种的 以下简要对这几种 测试的概念进行具体介绍 一 负载测试 负载测试是模拟实际软件系统所承受的负载条件的系统负荷 通过不断加 载 如逐渐增加模拟用户的数量 或其它加载方式来观察不同负载下系统的响 应时间和数据吞吐量 系统占用的资源 如 CPU 内存 等 以检验系统的行 为和特性 以发现系统可能存在的性能瓶颈 内存泄漏 不能实时同步等问题 1 负载测试是站在用户的角度去观察在一定条件下 软件系统的性能表现 2 负载测试的预期结果是用户的性能需求得到满足 这些需求指标一般体 现为响应时间 交易容量 并发容量 资源使用率等 二 压力测试 压力测试是在强负载 大数据量 大量并发用户等 下的测试 查看应用 系统在峰值使用情况下表现状况 从而有效地发现系统的一些功能隐患 系统 6 的容错能力和可恢复能力是否良好等等 压力测试分为高负载下的长时间 如 24小时以上 的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力 测试 一般来说 压力测试就是让系统在极端的条件下工作 查看系统的表现 并且这种极端条件是高于系统用户的需求的 三 并发测试 并发测试是性能测试的最主要部分 其重点关注的是多个用户同时访问同 一个应用模块或者是数据是否存在性能问题 它是通过一个包含了负载测试和 压力测试的过程 分析各种交易执行指标和资源监控指标来确定系统并发性能 的过程 四 可靠性测试 可靠性测试指通过给系统加载一定的业务压力的情况下 让系统在尽量真 实环境下或者仿真的使用环境下运行一段时间 测试系统在这种条件下能否稳 定运行 可靠性测试可以有效的暴露在实际使用过程中影响可靠性要求的缺陷 它介于功能测试和性能测试之间 是在功能实现的基础上更接近模拟现实环境 下的测试 2 1 22 1 2 性能测试指标性能测试指标 要进行软件性能测试 首先需要知道软件测试中有哪些性能指标 否则软 件的性能测试就无从做起 常见的性能测试指标主要包含以下内容 一 吞吐量 处理能力 处理能力又叫吞吐量 指的是单位时间内处理的客户端请求数量 通常 吞吐量用请求数 秒或页面数 秒来衡量 二 负载 负载分为客户端负载和服务器端负载 客户端负载的简单说就是有多少个 用户在同时使用软件 服务器端负载的就是有多少个请求同时到达了服务器端 要求服务器进行处理 三 响应时间 响应时间是可以判断一个被测应用系统是否存在性能瓶颈的最直观的要素 7 响应时间一般分为最大响应时间 最小响应时间和平均响应时间 四 同时在线用户数量 同时在想用户对本系统来说就是在同一时刻 执行各个事务的用户数量总 和 五 TPS Transactions Per Second 是应用系统每秒钟完成交易的数量 是估算应用系统性能的重要依据 系统整体处理能力取决于处理能力最低模块 的TPS值 2 22 2 性能测试工具 LoadRunner 介绍 现在软件测试行业里有很多的软件测试软件 但是LoadRunner得到了广泛 的应用 综合起来 LoadRunner适用范围很广 它可以适用于各种体系架构 其还是自动负载测试工具 它能够模拟上成千上万个并发用户 同时向服务器 发送请求 并记录和分析测试结果 最终帮助企业快速 有效的查找和发现问 题 通过使用LoadRunner 企业能最大限度地缩短测试时间 优化性能和加速 应用系统的发布周期 此外 LoadRunner能支持广范的协议和技术 为一些特 殊环境提供特殊的解决方案 2 3 2 2 12 2 1 LoadRunner 的特点的特点 LoadRunner的具体特点表现为如下两点 1 轻松创建虚拟用户 采用LoadRunner的Virtual User Generator 可以录入我们需要测试脚本并进 行修改 进一步可以很简便地创立起系统负载 录入脚本的过程其实就是其记 录业务操作流程 但是这个仅是流程的某一个分支 如果需要完整地运行程序 代码的修改是必不可少的 通过这个虚拟用户产生器 可以虚拟用户并模拟真 实用户的业务操作行为 利用虚拟用户 可以在Windows上同时产生成千上万 个用户访问 所以LoadRunner能极大的减少负载测试所需的硬件和人力资源 2 创建真实的负载 8 Virtual users建立起后 我们可以设定具体的负载方案 业务流程组合和虚 拟用户数量 这主要是使用LoadRunner的Controller 通过不同的场景设置 可 以组织起多用户的测试方案 更好地对系统进行全方位的测试 2 2 22 2 2 LoadRunner 功能描述功能描述 LoadRunner包含很多组件 最为我们所使用的有Visual User Generator Controller和Analysis 其中Virtual User Generator 虚拟用户生成器 主要是用于录制测试脚本 Controller 中央调度器 主要是通过场景设置控制 模拟用户个数和并发数 进一步设置测试的调度方案 执行脚本并记录测试结 果 包括缺陷报告和测试日志 Analysis 结果分析器 用于统计和分析测试 结果 确定是否与发布的基准要求相符合 2 2 32 2 3 LoadRunner 测试步骤测试步骤 LoadRunner是一个很好使用的测试软件 欲采用其完成相应的测试 只需 要完成以下四个步骤 第一步 使用Virtual User Generator 创建脚本 具体为 1 选择协议 该软件支持的协议有很错 根据不同的测试程序选用不 同的协议 接着创建脚本 2 录制脚本 录入过程选择在action里 3 编辑脚本 因为其录制的只是事务的一个分支 4 检查修改脚本是否有误 直至正确 第二步 使用Controller来调度虚拟用户 具体为 1 选择欲测试脚本 并创建场景 2 设置机器虚拟用户数 运行时间等 3 设置调度方案 4 如果模拟多机测试 设置Ip Spoofer 第三步 运行脚本 分析场景 尽力保持系统没有别的程序在运行 这样可以更精确地知 9 道整个测试过程所占用的资源数 第四步 分析测试结果 10 3 3 基于 TPC C 基准事务的实现 3 13 1 TPC C 基准总述 3 1 13 1 1 TPC C 简介简介 基准 TPC C 即 TPC BnechmarkTM C 是 TPC Transaction Processing Performance Council 委员会发布的数据库测试基准之一 该标准第一版于 1992 年 7 月批准并首次发布 5 TPC C 是复杂联机事务处理 OLTP 应用环境工作 量的一个衡量标准 其并不实际表示某一个企业所进行的操作 但是其高度提 炼了所有企业都必须进行的操作 比如管理或销售产品或是服务 它模拟的是 被复杂话了的联机事务处理应用环境的创建活动 其主要是把许多系统组成部 件和特定环境关联起来实现的 1 这种环境具有如下的一些表现 1 能够并行执行的事务是有一定复杂度的 2 具有可在线处理事务执行的模式 3 支持多个线终端活动 4 较好地协调系统运行和应用程序执行时间 5 通过 ACID 特性保证事务处理的正确性 6 通过主键和外键能够识别出分配高低优先级数据访问 7 数据库由一些具有各种大小 属性和关联的基本表组成 TPC C 基准的目标就是要减少应用层面的多变性 而保留一些重要的应用 特征 也即系统的实用性和复杂性 比如一些如登陆系统等操作 对于某些系 统来说可能很重要 但是却被 TPC C 忽略掉 因为这些功能对于系统的分析来 说并没有太大的作用 他们占用系统的资源和执行的频率也不会很高 TPC C 模仿的是一个分布在多个地区都有销售点的公司 随着公司业务的 增长 新的 Warehouse 和销售地区都会随之建立 一个仓库管理 10 个地区 每 个地区为 3 000 名客服服务 所有的仓库管理公司的 100 000 条销售 客户可以 11 提交订单订购商品 平均每个订单包含 10 个订单项 1 的订购商品不在本地 库存中 需要其它地区的仓库发货 下图说明了 TPC C 应用环境的逻辑结构 Customers Company Warehouse 1 District 10 Warehouse W District 1 District 2 3k 12 30k 图 3 1 TPC C 基准逻辑结构 TPC C的数据模型可描述为 a 一个大型商品批发商拥有若干个分布在不同区域的商品库 b 每个仓库负责为10个销售点供货 c 每个销售点为3000个客户提供服务 d 每个客户平均一个订单有10 项产品 e 所有订单中约1 的产品在其直接所属的 仓库中没有存货 需要由其它区域的仓库来供货 3 1 23 1 2 TPC C 测试指标测试指标 TPC C测试规范经过两年的研制 于1992年7月发布 几乎所有在OLTP市 场提供软硬件平台的厂商都发布了相应的TPC C测试结果 随着计算机技术的 不断发展 这些测试结果也在不断刷新 TPC C的测试结果主要有两个指标 1 流量指标 Throughput 简称tpmC 12 tpmC 定义 TPC C 的吞吐量 按有效 TPC C 配置期间每分钟处理的平均交 易次数测量 至少要运行 12 分钟 按照TPC的定义 流量指标描述了系统在执行Payment Order status Delivery Stock Level这四种交易的同时 每分钟可以处理多少个New Order交易 所有交易的响应时间必须满足TPC C测试规范的要求 流量指标值越大越好 2 性价比 Price Performance 简称Price tpmC 即测试系统价格 指在美国的报价 与流量指标的比值 性价比越小越好 这个指标对于Price无法确定 故在本次测试中不予考虑 重点考虑的是第一个性能指标 结合 2 1 1 节提出的数据库性能测试指标 包括吞吐量 处理能力 负载 响应时间 同时在线用户数量 TPS 等几项 TPC C 基准提供的五个事务模型 各有其特点 NEW ORDER 事务模仿在线用户的订单请求 用户输入一份完整的订单 提交系统 该事务执行频率高 要求系统响应时间短 PAYMENT 事务更新用户的账户并反映出地区和仓库的销售状况 该事务 要求高频读写 所以响应时间必须要快才能满足在线用户的需求 ORDER STATUS 事务查询客户上一次订单的状态 是一个只读事务 执 行频率低 对系统的响应时间要求不是很严格 STOCK LEVEL 事务模拟的是用户从固定的仓库和地区中选取最后 20 条记 录 检查订单中所有货物的库存 计算并且把所有库存数低于用户指定域的商 品数量 这个事务是只读事务 执行的频率较低 对系统的响应时间不做严格 限制和要求 DELIVERY 事务模拟的是对于任意一个客户 随机选取一个发货包 更新 被处理的用户的账户余额 并把该订单从新订单中删除 这个事务的执行频率 不高 对事物的响应时间也没有严格的限制 通过对这五个事务进行配比的不同体现出事务的执行频率不同 而且每个 事务的复杂程度不同 这就可以体现出事务的响应时间的区别 在本次测试过 程中 采取的方案是通过设置不同的 Vuser 数以测试系统的在线用户数 进一 13 步得到系统的 TPS 响应时间等指标 具体测试方案详见 4 1 1 节 3 23 2 基于 TPC C 基准数据库设计 3 2 13 2 1 SQL Server 2000 中表的设计中表的设计 通过 3 1 节的介绍 TPC C 的逻辑结构图表明了 TPC C 的总体操作流程 为了实现这一结构 TPC C 设计了九个相关的数据表 E R 关系图如下 图 3 2 TPC C 基准 E R 图 表框里的数据表示该表存放的记录数 仓库数 W 体现了数据库中的数据规 模 表间的数据表示各表中记录条数的比例关系 k 表示 1000 换句话说 给 数据库加载数据时 如果给数据表 Warehouse 表装入 l 条记录的话 那么 District 须装入 10 条记录 Customer 须装入 3000 条记录 history 须装入 30000 条记录 Order 须装入 30000 条记录 New Order 须装入 9000 条记录 Order Line 须装入 300000 条记录 Stock 须装入 100000 条记录 还需要注意的是 无论 Warehouse 表记录为多少 item 表总数为 100000 条记录 并不随 Warehouse 的记录数增加而变化 由于本次测试采用的是单机测试 并且主机的配置不高 而实际每增加一 个仓库 数据库就有数以万计的数据加入 这将会花费很多时间 所以 Warehouse 的数目就做出限制 只有 warehouse1 和 warehouse2 具体的表如下图所示 14 Warehouse W ID2 W unique IDsW NAMEvariable text size 10W STREET 1 variable text size 20W STREET 2 variable text size 20W CITYvariable text size 20W STATEfixed text size 2W ZIPfixed text size 9W TAXsigned numeric 4 4 W YTDsigned numeric 12 2 District D ID20 unique IDs D W ID2 W unique IDsD NAME variable text size 10D STREET 1 variable text size 20D STREET 2 variable text size 20D CITY variable text size 20 D STATEfixed text size 2D ZIPfixed text size 9 D TAXsigned numeric 4 4 D YTDsigned numeric 12 2 D NEXT O ID 10 000 000 unique IDs Customer C ID96 000 unique IDs C D ID20 unique IDs C W ID2 W unique IDs C FIRSTvariable text size 16 C MIDDLE fixed text size 2 C LASTvariable text size 16 C STREET 1 variable text size 20 C STREET 2 variable text size 20 C CITYvariable text size 20 C STATEfixed text size 2 C ZIPfixed text size 9 C PHONEfixed text size 16 C SINCEdate and time C CREDIT fixed text size 2 C CREDIT LIM signed numeric 12 2 C DISCOUNT signed numeric 4 4 C BALANCE signed numeric 12 2 C YTD PAYMENT signed numeric 12 2 C PAYMENT CNTnumeric 4 C DELIVERY CNTnumeric 4 C DATAvariable text size 500 History H C ID96 000 unique IDs H C D ID 20 unique IDs H C W ID 2 W unique IDs H D ID20 unique IDs H W ID2 W unique IDs H DATEdate and time H AMOUNT signed numeric 6 2 H DATAvariable text size 24 New order NO O ID10 000 000 unique IDs NO D ID20 unique IDs NO W ID2 W unique IDs Order O ID10 000 000 unique IDs O D ID20 unique IDs O W ID2 W unique IDs O C ID96 000 unique IDs O ENTRY D date and time O CARRIER ID 10 unique IDs or null O OL CNT numeric 2 O ALL LOCAL numeric 1 Order line OL O ID10 000 000 unique IDs OL D ID20 unique IDs OL W ID2 W unique IDs OL NUMBER 15 unique IDs OL I ID200 000 unique IDs OL SUPPLY W ID 2 W unique IDs OL DELIVERY D date and time or null OL QUANTITYnumeric 2 OL AMOUNT signed numeric 6 2 OL DIST INFO fixed text size 24 Item I IM ID200 000 unique IDs I NAMEvariable text size 24 I PRICEnumeric 5 2 I DATAvariable text size 50 Stock S I ID200 000 unique IDs S W ID2 W unique IDs S QUANTITY signed numeric 4 S DIST 01 fixed text size 24 S DIST 02 fixed text size 24 S DIST 03 fixed text size 24 S DIST 04 fixed text size 24 S DIST 05 fixed text size 24 S DIST 06 fixed text size 24 S DIST 07 fixed text size 24 S DIST 08 fixed text size 24 S DIST 09 fixed text size 24 S DIST 10 fixed text size 24 S YTDnumeric 8 S ORDER CNT numeric 4 S REMOTE CNT numeric 4 S DATAvariable text size 50 图 3 3 数据表构建图 图中红色标注为每张表的主键 各键之间的联系如所示 类型说明 1 N unique Ids 型 该类型要求生成 N 位数范围内的 ID 标识 2 Variable text Size N 型 该类型要求生成一个最大长度不超过 N 任意长 度 任意字符的变换尺寸文本 并且要求对于字符数小于 N 的需要用空格填满 3 fixed text size N 型 要求生成一个长度为固定长度 N 字符为任意字符 的文本 4 data and time 型 要求生成一个日期 5 numeric N digits 型 要求生成一个长度为 N 位十进制的阿拉伯数字字 15 符串 并且 包含货币的数值域必须使用这样的数据类型具有精确度为两位小 数的实型 6 numeric m n 说明该数总共有 m 位 其中小数点后 n 位 本项目的数据库是 SQL Server 2000 在数据库的建立时使用的是 SQL 脚 本建表 格式是如 图 3 4 SQL 脚本示例 如是将所有表项建立完毕 各个表之间通过外键进行约束 这样就构成了 TPC C 测试基准数据库的整体结构 3 2 23 2 2 表的结构关系表的结构关系 TPC C 基准数据库的九张表通过主键引用联系起来 各个表都有各自的用 途 且各表之间的结构关系 主键 为 16 图 3 5 各表关系图 各张表的使用将在事务的使用中进行详细介绍 3 2 33 2 3 TPC C 基准数据录入基准数据录入 大多数的数据库提供有专门的数据加载工具 这些加载工具具有快速高效 的性能 比如说 Oracle 的 Sql Loader SQL Sever 的 DTS 等工具 对于国产数 据库 有一部分厂商提供了比较高效的数据加载工具 例如可以将具有一定格 式的文本数据文件加载到数据库的表中 但同时一些厂商没有提供或是提供的 加载工具效率不高 如果采用这些加载工具就很浪费时间 8 在本项目中数据 的加载主要是通过 C 编写代码实现的 17 图 3 6 数据加载方案 以下是对整个数据加载过程的定义说明 random 表示在指定范围随机生成一个数 random x y 表示从 x 到 y 的范围中随机选择一个数 一般平均数为 x y 2 产生的数的个数也会由于所要求的精度不同而发生变化 比如 random 0 01 100 00 产生的随机数就为 100 000 个而 random 1 100 产生的随机 数个数为 100 个 random a string x y 随机产生一个字符串 其最小长度为 x 最大长度为 y 平均长度为 x y 2 可以是字母字符串也可以是数字字符串 采用的算法是 通过产生随机数来的到字符串的长度 N 然后再随机产生长度为 N 的字符串 4 C LAST 是 Customer 表中的一项 其产生采用以下机制 下表中的每 一个数都对应着一个字符串 随机生成 0 到 999 的一个是 C LAST 将由随机 数每一位所对应的字符串拼接而成 0 1 2 3 4 5 6 7 8 9 BAR OUGHT ABLEPRI PRESESE ANTICALLY ATIONEING 比如说产生的随机数 245 那么 C LAST 对应的字符串就应该为 ABLEPRESESE 随机数 59 对应 C LAST 的值为 ESEEING unique within x 表示的是在小于 x 的数中取值 且每个数必须是唯一的 仅能取一次 5 仓库 地区 顾客的邮编号 W ZIP D ZIP C ZIP 通过以下机制产生 随机产生一个长度为 4 的字符串 然后在末尾加上 11111 组成 这个长度为 4 的字符串通过 0 到 9999 随机数产生 这就是说总共可以产生 10000 个编码 例如 随机字符串 0970 那么邮编码就是 097011111 对于每一个仓库有 18 30 000 位顾客 但编码只有 10 000 个 所以平均有三位顾客是使用同一个 邮编 定义完这些重要的数据类型 通过表 3 1 对应的各表的数量关系 将数据 库进行初始化 19 表 3 1 各表数量关系图 Table NameCardinality Typical 3 RowTypical 3 Table in rows Length in bytes Size in 1 000 bytes WAREHOUSE1 890 089 DISTRICT10 950 950 CUSTOMER30k 65519 650 HISTORY 30k 461 380 ORDER 30k 24720 NEW ORDER 9k 872 ORDER LINE 300k 5416 200 STOCK 100k 30630 600 ITEM 100k 828 200 通过以上的初始化 数据的加载就算告一段落了 接下来的工作就是把各 个事务进行设计和实现 3 33 3 基于 TPC C 基准事务模型的实现 由 3 1 节对 TPC C 的介绍可知 TPC C 的事务模型包含了一系列的读操作 和更新事务操作频繁交互执行的处理过程 模拟的是一种复杂的联机事务应用 环境的创建的活动 这个环境的核心活动是 NEW ORDER 事务 其他四个事务 是在一个仓库中进行的 PAYMENT 支付操作 ORDER STATUS 订单状态查询 操作 DELIVERY 发货操作和 STOCK LEVEL 库存状态查询操作 接下来将对 各个事务的特征和实现过程进行详细分析 3 3 13 3 1 NEW ORDER 新订单 事务的实现 新订单 事务的实现 NEW ORDER 事务是本系统中的一个核心事务 是一个读写型事务 执行 20 的频率很高 因此要求系统的响应时间必须尽可能小 以满足在线用户的需求 其主要内容就是模仿在线用户的订单请求 用户输入一份完整的订单 这一切 在实现过程中都是随机数生成 提交系统的过程 在测试过程中 每分钟生成 的订单数 tmpC 是整个系统性能的重要参考和评价指标 tmpC 越大 说明系统 的性能越好 系统对用户的响应时间也就越短 事务的实现分为以下部分 一 数据输入要求 1 Warehouse ID 要求前后都一致 是用户输入的 考虑到如果 Warehouse 数量过多会导致数据量的庞大 故而 Warehouse 的取值只能为 1 或 2 2 District ID 是 1 到 10 的一个随机数 但是保证了 District 的 D W ID 与 Warehouse 的 ID 是一样的 即 D W ID W ID 3 顾客编号 C ID 是用 NURand 1023 1 3000 生成的但保证顾客所选 的仓库号与 Warehouse 的 W ID 一致并且地区号与 District 的 D ID 一致 即 C D ID D ID C W ID W ID 4 Order t 表中的 ol cnt 是 5 到 15 中的一个随机数 平均为 10 其主要是 计量 order 的大小 5 供货仓库 99 的时间是直接从就近仓库中获取 1 的时间是从远方仓 库中获取 这一功能的实现可以采用随机数 1 到 100 加以实现 即当 X 1 时 OL SUPPLY W ID W ID 而 X 1 时 OL SUPPLY W ID 是从可用仓库中随 机选择的一个 而不是 W ID 6 OL QUANTITY 是 1 到 10 的随机数 7 O ENTRY D 是当前的系统时间 二 事务的实现步骤 1 从 WAREHOUSE 表中找出与输入的 W ID 相等的项并返回 W TAX 2 从 DISTRICT 表中找到 D W ID W ID D ID 与随机生成的 D ID 相等 的项 并返回 D TAX D NEXT O ID 即下一个可用的订单号返回并且加一 3 从 CUSTOMER 表中找到 C W ID W ID C D ID D ID C ID 与随机 生成的相等的项并返回顾客的折扣率 C DISCOUNT 顾客的姓氏 C LAST 顾 21 客当前的账务状况 C CREDIT 4 往 NEW ORDER 和 ORDER 表中填入新项以表有新的订单生成 同时 O CARRIER ID 设置为 NULL 如果所有订单都是本地的仓库获取 则 O ALL LOCAL 被置为 1 否则为 0 5 ORDER T 表中 O OL CNT 置为相应的 OL CNT 6 对于 ORDER T 表中的每一项 O OL CNT 表 ITEM 中找到符合 I ID OL I ID 的项 返回 I PRICE I NAME I DATA 7 STOCK 表中找到 S I ID OL I ID 且 S W ID OL SUPPLY W ID 返 回 S QUANTITY S DIST xx xx 代表的是 S DIST 的编号 S DATA 如果 S QUANTITY 的数超过 10 则 S QUANTITY OL QUANTITY S QUANTITY 否则 S QUANTITY S QUANTITY OL QUANTITY 91 S YTD SYTD OL QUANTITY S ORDER CNT S ORDER CNT 1 如果仓库是远方的 则 S REMOTE CNT 加一 8 OL AMOUNT OL QUANTITY I PRICE 9 如果 I DATA 和 S DATA 都包含有 ORIGINAL 字符串 则 brand generic 被标志为 B 否则标志为 G 10 Total amount sum OL AMOUNT 1 C DISCOUNT 1 W TAX D TAX 3 3 23 3 2 PAYMENT 支付 事务的实现 支付 事务的实现 Payment 事务主要是更新用户的账户并反映出地区和仓库的销售状况 对 于任意一个客户 在固定的仓库中随机选取一个地区及其内用户 采用随机的 金额支付一笔订单 并作相应的历史记录 修改用户的金额 这个事务要求高 频读写 所以响应时间必须要快才能满足在线用户的需求 一 数据输入要求 22 地区编号 D ID 是 1 到 10 的一个随机数 顾客 60 的时间是按 Last name 来搜寻 即搜寻条件为 C W ID C LAST 而 40 的时间是按用户编号来搜 寻的 即 C W ID C D ID C ID 顾客货物的供应仓库有 85 的时间是本地供 货 15 的时间是远方仓库供货 即作为一个从 1 到 100 的随机数 X 当 X85 时 C D ID 是 1 到 10 的一个随机数 C W ID 是当前可用的仓库中的一个 并且满足 C W ID 不等于 W ID 对于以上百分比的实现可以采用 1 到 100 的随机数 Y 当 Y60 时 C ID 是用 NURand 1023 1 3000 生成的 Payment 的 H AMOUNT 是 1 00 到 1000 00 的一个随机数 H DATE 是当前的系统时间 二 事务实现具体步骤 1 从 WAREHOUSE 表中选出与输入的 W ID 相符的项 并返回 W NAME W STREET 1 W STREET 2 W CITY W STATE 和 W ZIP 并 且 W YTD H AMOUNT 2 从 DISTRICT 表中选择出 D W ID W ID D ID 与随机生成 D ID 的相 等的项 并返回 D NAME D STREET 1 D STREET 2 D CITY D STATE 和 D ZIP 且 D YTD H AMOUNT 3 情况一 当顾客的查询是按 C ID 是 从 CUSTOMER 表中找到与 C W ID C D ID C ID 相符的项 返回 C FIRST C MIDDLE C LAST C STREET 1 C STREET 2 C CITY C STATE C ZIP C PHONE C SINCE C CREDIT C CREDIT LIM C DISCOUNT and C BALANCE 且 C BALANCE H AMOUNT C YTD PAYMENT H AMOUNT C PAYMENT CNT 1 4 情况二 当顾客的查询是按 C LAST 时 从 CUSTOMER 查询出符合 C W ID C D ID C LAST 的项 并从 N 2 以上的项中返回 C ID C FIRST C MIDDLE C STREET 1 C STREET 2 C CITY C STATE C ZIP C PHONE C SINCE C CREDIT C CREDIT LIM C DISCOUNT and 23 C BALANCE 且 C BALANCE H AMOUNT C YTD PAYMENT H AMOUNT C PAYMENT 1 5 如果 C CREDIT BC 那么 C DATA 也得从 CUSTOMER 表中返回 且 C ID C D ID C W ID D ID W ID 和 H AMOUNT 等历史信息要插入到 C DATA 域中 并且只是将这些内容插入到 C DATA 原有内容的左边 而 C DATA 的原有内容右移 超过 500 的字符被移出到 C DATA 域外 6 H DATA 是 W NAME 和 D NAME 的拼接 7 往 HISTORY 表中插入新项 H C ID C ID H C D ID C D ID H C W ID C W ID H D ID D ID and H W ID W ID 3 3 33 3 3 DELIVERY 发货 事务的实现 发货 事务的实现 该事务模拟的是对于任意一个客户 随机选取一个发货包 更新被处理的 用户的账户余额 并把该订单从新订单中删除 这个事务的执行频率不高 对 事物的响应时间也没有严格的限制 一 数据输入要求 W ID 是用户输入 其值只能为 1 或 2 O CARRIER ID 是 1 到 10 的一个随机数 OL DELIVERY D 是当前系统的时间 二 事务执行具体步骤 1 在 NEW ORDER 表里找到 NO W ID W ID 并且 NO D ID D ID 的最小的 NO O ID 这代表的是未发货的最老的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铁岭市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(真题汇编)
- 2026年省直辖行政单位农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(突破训练)
- 珠海市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)带答案详解(完整版)
- 潼南县农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解
- 台州市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(历年真题)
- 浙江省农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)有完整答案详解
- 荆门市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)完整参考答案详解
- 2026年嘉峪关市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解
- 2025年高危儿护理常规试题及答案
- 2026年河池市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(轻巧夺冠)
- 2025至2030小型越野汽车行业市场深度分析及竞争格局与投资发展报告
- 云计算应急响应方案
- 2025年肿瘤内科正高试题及答案
- 水务大数据分析与应用-洞察及研究
- 十八项电网重大反事故措施第一课培训课件
- 计生科应急预案(3篇)
- 修理扫帚课件
- 治边稳藏课件
- -T-CAPA-11-2024《女性阴道松弛症诊断与治疗规范》
- 医院消防安全管理架构及人员职责
- 小小园艺师教学课件
评论
0/150
提交评论