<td id="cl7yg"></td>

        <code id="cl7yg"></code>

          天极传媒
          天极网
          比特网
          IT专家网
          52PK游戏网
          极客修
          全国分站

          北京上海广州深港南京福建沈阳成都杭州西安长春重庆大庆?#25103;?/a>惠州青岛郑州泰州厦门淄博天津无锡哈尔滨

          产品
          • 网页
          • 产品
          • 图片
          • 报价
          • 下载
          全高清?#38431;?#26426; 净化器 4K电视曲面电视小?#19994;?/A>滚筒洗衣机
          您现在的位置 天极网 > 开发>技术文档>DB2数据架构高效的智能应用案例

          DB2数据架构高效的智能应用案例

          天极网开发频道 2012-03-07 18:43 我要吐槽

          即使您的团队中都是非常有才华的应用程序开发人员他们仍会做一些错事这会减少他们为公司提供的价值我经常看到的一个最显著的例子是使用应用程序代码去完成 DB2 可以更高效完成的工作

          在 20 世纪 80 年代 IBM 推出全新的 DB2 时大量的应用程序开发人员都在学习如何使用 SQL(顺便说一下这也是 IBM 发明的)进行编程虽然掌握这门语言需要时间但现在 DB2 已经推出 27 年了仍由程序员使用应用程序代码来连接表而不是充分利用 SQL 的面向集合的特性换言之他们在用应用程序代码去完成 DB2 应该做的事在这篇专栏中我将尝试介绍一些案例让 DB2 去执行它可以替您执行的工作

          让程序员的时间更有价值

          没有人?#19981;?#30475;到开发小组总是在做重复的事如果程序员编写有用例程的方式无法让其他程序员轻松发现该例程的功能或者无法轻松地使用它那么所导致的结果肯定是做了不必要的重复?#25237;?#22240;为其他人最终会在其程序中从头编写相同的逻辑这还会导致在某种程度上延长应用程序的维护时间从而导致可用来开发新应用程序的时间缩短因为您必须在不同的程序中更新类似的功能

          DB2 对此可提供很大的帮助有多种方法将逻辑置于 DB2 级别的应用程序中让访问数据库的所有程序都可使用该逻辑例如为了响应在表中插入删除或更新行可使用触发器 让某个操作自动执行(几乎所有的操作都可以使用 SQL 表达)您可使用触发器确保某个雇员的薪水位于允许的范围内方法是在更新后的薪水超出该范围外时发出一个错误触发器还能调用 DB2 中已存储的过程和用户定义的函数这些过程和函数是以DB2对象的形式封装逻辑的一种方法如果更新 PARTS 表中的行后库存的商品数低于某个指定的阈值那么触发器就会调用某个已存储的过程再次定购目录中的该商品

          在 DB2 数据库中实现的以数据为中心的逻辑越多程序员就可以将更多的精力放在编写能直接满足公司各种商业需求的代码上如果您认为某些与数据有关的逻辑能在企业中广泛应用那么可以同 DB2 DBA 谈?#31119;?#23558;这些逻辑部署在应用?#20302;?#30340;数据库层中最终可让公司中的所有程序员更高效更高产地工作

          面向未来的应用程序

          随着时间的流逝数据库也发生了改变通常数据库变得更大了并且数据库中存储的数据的特征也发生了改变例如过去表中内容基本上只有一列而现在可能变得包含大量重复的值用户希望在经历这些改变后应用程序执行任务?#27604;员?#25345;一致性但如果程序员在做 DB2 应该去做的工作那么这种一致性实现起来就很困难

          举个例子用应用程序代码来连接表这意味着程序员要确定数据访?#20107;?#24452;问题马上就来了如何知道程序员是否作出了正确的决定?在表 A 上编写一个游标获取合格的行并在表 B 中寻找匹配的内容?#23548;?#19978;这些就是我们所谓的?#30701;?#24490;环连接如何知道?#30701;?#24490;环方法是连接这些表的正确方法?合并连接是否是正确方法混合连接 (DB2 for z/OS) 或哈希连接(DB2 for LinuxUNIX Windows)又怎样呢?

          DB2 执行表连接工作时SQL Optimizer 会根据 DB2 目录中存储的统计信息来确定成本最低的结果集生成方式DB2 Optimizer 能够出色地完成本职工作因为自从 IBM 发明基于成本的 SQL 语句优化后的 30 年中一直在对 DB2 Optimizer 进行改进

          数据库逐渐发生变化时就会出?#20540;?#20108;个问题也许数据库变得非常大查询得到的结果集比以前大很多并且其他表连接方法的性能要比最初选择的方法要好如果由 DB2 负责处理连接工作那么 DB2 Optimizer 会自动调整访?#20107;?#24452;如果用应用程序代码完成连接工作则会出?#20013;?#33021;下降从而导致需要重写程序

          类似的是用编程方式进行连接会让数据库变得无法维护或者维护工作变得很复杂假设某个通过程序代码执行的表连接工作主要取决于具体索引是否存在如果表中累积了太多的索引致使插入和删除操作的成本过高则需要删除这些索引(在数据库中这随时都会出现这?#26234;?#20917;)如果由 DB2 负责处理连接工作它可切换到不同的连接方法并实现可接受的性能但是需要重写硬编码的连接您无法更改硬编码程序中的连接方法(除了重写程序)所以用编程方式实现的连接可能让 DBA 无法进行?#23548;?#30340;数据库更改而这些更改会减少关键数据更改操作的执行时间

          底线是让 DB2 完成尽可能多的工作将访?#20107;?#24452;选择处理工作留给 DB2 去完成这样当数据库随着时间的流逝而不断改变时有助于保持应用程序的性能不变总之您要考虑到您的公司已经为 DB2 中内置的复杂 SQL 优化技术付过费了

          提高应用程序的 CPU 工作效率

          程序发出一个 SQL 语句之后该语句必须从程序到达 DB2执行完该语句后必须将控制权归还给应用程序代码数据在程序与 DB2 之间的来回旅行可不是免费的减少应用程序代码中的 SLQ 语句数目就会减少来回穿过 D应用程序-DB2 边界的 CPU 累积开销让传输到 DB2 的信息变得更少这样完成工作会实现显著的性能提高此处的重点是不要关注于单个工作单元而是关注总体的工作负载每个交易所用的 CPU 时间虽然只有很小的差别但在每秒执行数万个交易时或者批处理工作要使用输入文件中的数万个记录时累积的差别会非常显著

          要想从 CPU 效率的角度真正实现高性能开发人员需要跟上并准备好利用各种全新的 DB2 特性和功能减少应用程序与 DB2 之间的通信例如可以考虑使用 MERGE 语句通过使用该语句可根据一组输入记录来更改表与输入记录匹配时更新目标表的数据不匹配时则在表中插入新的?#23567;?#36825;样做可以节省 CPU 使用时间因为?#25103;?#27861;是针对目标表执行 SELECT 操作查看是否存在与输入记录匹配的行然后执行 UPDATE(如果有匹配行)或 INSERT(如果没有匹配行)类似的是与一次插入一行相比使用多行 INSERT(有时称为块 INSERT)将多个新行插入表中(使用一个 INSERT)也可以节省 CPU 使用时间寻找可用更少 SQL 语句就能完成数据检索和更改的方式这样就可以减少 DB2 服务器上的负载

          让 DB2 帮您完成工作

          让 DB2 完成使用 SQL 可以完成的所有工作这才是最正确的方式记住一些逻辑实现 SQL 工作(例如创建触发器)是 DBA 所熟悉的所以您可以在需要时向 DBA 求助DB2 数据库中内置了易用且可重用的功能随着数据库的更改的增加可以用更一致的方式维护应用程序性能并且程序的 CPU 使用效率会更高这些都会让您的公司受益匪浅不要再费劲地编程了程序本身就是智能的

          作者IT168责任编辑?#21644;?#20581;楠
          请关注天极网天极新媒体 最酷科技资讯
          扫码赢大奖
          评论
          * 网友发言均非本站立场本站不在评论栏推荐任何网店经销商谨防上当受骗
          办公软件IT新闻整机
          ҹʱʱ

          <td id="cl7yg"></td>

              <code id="cl7yg"></code>

                <td id="cl7yg"></td>

                    <code id="cl7yg"></code>