友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

SQL 21日自学通(V3.0)(PDF格式)-第58部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!




长空间与资源强行捆绑 



   对用户进程进行可用时间片试验 



   这样你可以为不同的用户分配不同的可控时间 



   优化你所使用的应用的网络包的尺寸 



   要通过网络传送大量的数据     应该设定网络的最大包尺寸     你参考你的数据库和网络 



文档来查看更多的内容 



   将大表分配于不同的磁盘上 



   如果并发用户访问位于多个磁盘上的大表  等待系统资源的机会就会减少 



   将数据库的排序区   系统目录区  撤消区分布于不同的磁盘上      见下图 



   这些区域是用户访问最多的区域  把它放在多个硬盘上你可以最有效地利用资源 



   增加 CPU 



   这样系统管理及数据库的性能将会得到极大的提高        增加 CPU 可以提高数据处理的速 



度是显而易见的    如果你在机器上将有多个 CPU   那么你将有机会行使并行处理策略       关 



于并行处理请参考你的数据库相关文档中的更详细的信息— — 如果它在你的环境中是可用 



的话 



   增加内存 



   一般说来  这样会更好 



   将表和索引存贮在不同的硬盘上 



   只要有可能   你就应该将索引和与它相关的表存储在不同的硬盘上         这种安排可以在 



读表的同时访问与该表相关的索引      存储在多个硬盘上的对象的实际能力取决于有多少块 



硬盘连接于控制器上 



   下图给出的如何隔离数据库各个主要区域的简单例子 



   在上图中使用了四个设备    从 DISK01  到 DISK04 这样做的目的是保证每个盘都有较 



                                                 322 


…………………………………………………………Page 323……………………………………………………………

SQL 21  日自学通(V1。0)                             翻译人 笨猪 



高的访问率 



   DISK01…系统目录中存储着关于表  索引  用户   统计信息   数据文件的名字    大小 



增加长度以及其它的相关数据  它在事务中被访问的次数相当多 



   DISK02…每天的每一次对表的内容的改变  插入     更新  删除  都会更新事务的历史 



记录信息   事物记录是在线事务的一项重要功能  但它在只读型的数据库如 DSS  或数据仓 



库中的意义不大 



   DISK03…ROLLBACK  段对于事务处理环境的意义也很大  可是  如果很少进行事务活 



动的话  ROLLBACK 段就不会被经常使用 



   DISK04…这里是数据库排序区 也就是说它是 SQL 语句过程和排序数据 如 GROUP BY 



或 ORDER  BY  子句 的临时存放区域  DSS 和数据仓库是排序区域的典型代表  但是 



在事务处理环境中也考虑使用排序区域 



技巧  你也应该注意到数据库的表和索引是如何入到每一个磁盘上的  应该尽可能地将表 



和索引分开 



   注意在上图中表和索引是被安排在不同的设备上的         你也可以看在    大表  和索引在 



不同设备上的交互访问     这种技术将大表分为可以访问的小段        交互访问表和索引是一种 



控制碎片的办法    在这种情况下可以在参考相关索引的同时进行读表  这就会提高数据的 



整体访问速度 



   这个例子的确是非常简单的      根据你所使用的数据库的函数      大小和相互关系    你可 



以找到类似的方法对系统进行优化以提高工作性能  如果钱不是问题那么完美的方法是将 



每一个数据库实体都放在一个硬盘上       包括大表和索引 



注  DBA  与系统管理员应该协同工作以平衡数据库的使用空间和优化服务器的可用存储空 



间 



   对数据库的调整要依据你所使用的数据库系统而定         显而易见   优化查询要比调整数 



据库的作用更明显    也就是说当你还没有将 SQL 应用本身调整好时你不要期望在对数据库 



的调整上得到太多的回报  以调整数据库为专职的人员会专攻一种数据库产品以学习尽可 



能多的关于它的特点和特性  尽管数据库的调整经常被认为是一项痛苦的工作             但是它可 



以让真正了解它的人对它更充分地利用 



                                                   323 


…………………………………………………………Page 324……………………………………………………………

SQL 21  日自学通(V1。0)                           翻译人  笨猪 



性能的障碍 



我们已经说不许多的对一个数据库性能产生影响的可能方面          最具有代表性的瓶颈涉及到 



系统级的维护  数据库的维护和对 SQL 语句的管理 



这里总结了常见的大多数对系统性能和数据库响应时间有影响的因素 



没有很好地利用服务器上的可用设备— —  电脑可能基于某种原因已经购买了多个磁盘  如 



果你没有将一些数据库的重要组件分布在多个磁盘上的话性能就会受到影响            要让系统的 



能力和数据库服务的能力尽可能地发挥 



没有经常性的执行 MIT 命令 — — 懒于使用 MIT 命令和 ROLLBACK 命令的结果 



会导致你的服务器出现瓶颈 



允许批量载入于日常进程同时工作      当数据库还存在其它用户时运行批量载入会对每个人 



都产生影响  批处理进行会由于成为最终用户和系统资源之间的瓶颈 



在创建 SQL 语句时不认真 — — 不负责任地创建复合语句会比标准语句耗用更多的系统时 



间 



技巧  你可以用不同的来优化你的 SQL  语句的结构    具体的步骤依据 SQL  服务器处理你 



的过程的步骤而定 



对于有索引的表运行批处理任务时 — — 你可以会需要几天几夜才能完成一个批处理的任 



务  而一般的批量载入任务也许只要几个小时  索引会对批量载入任务访问表中更多的行 



造成障碍 



可分配的存储空间中有更多的并发用户       随着当前数据户用户和系统用户的增多  你可以 



会因为过程的共享而需要更多的内存 



创建索引的列只存在不多的可选数值 — — 对如性别这样的列创建索引并不会非常有效          所 



以  你所创建的索引返回的行数应该占表的并行数比较低 



对小表创建了索引 — — 这时使用全表扫描可能会更有效 



没有有效地管理系统的资源— — 对系统资源的管理不善如数据库初始化         表的创建   不受 



控制的碎片   和不正确的系统维护会浪费大量的数据空间 



表和索引的大小不合适 — — 在大型数据库中对表和索引的大小估计错误片如果护理不当会 



带来严重的碎片问题    并会由于而引发更严重的问题 



                                                 324 


…………………………………………………………Page 325……………………………………………………………

SQL 21  日自学通(V1。0)                               翻译人  笨猪 



内置的调整工具 



   在确认需要进行调整时要征徇 DBA  和你的数据库供应商以得知哪些工具对你是可用 



的  你可以使用调整工具来确定你的数据库在数据访问上的不足之处  此外               这些工具对 



对于特定的 SQL 语句提出更改建议以提高系统的性能 



   ORACLE 有两个流行的工具用以管理 SQL 语句的性能 这两个工具是EXPLAIN    PLAN 



和 TKPROF EXPLAIN    PLAN 可以在 SQL 语句执行时检查它的访问路径  TKPROF  可以 



给出每个 SQL  语句在执行时所需的时间  ORACLE  公司也提供了其它的工具用以对 SQL 



语句和数据库进行分析  但是这两种是最流行的          如果你想测试一下一个 ORACLE  中的单 



个的 SQL 语句的运行时间    你可以使用 SQL*PLUS  中的命令 SET TIMING ON 



   这个命令和其它更多的 SET 命令会在第 20 天的     SQL*PLUS 中提及 



   SYBASER  的 SQL  SERVER 也有用于诊断 SQL  的工具  你可以将 SET  命令作为选项 



加入到你的 SQL   语句中   这些命令与 ORACLE   的命令类似     一些常用的命令 SET 



SHOWPLAN ON SET  STATISTIC  IO  ON 和 SET  STATISTICS  TIME  ON 这些 SET 命令 



可以在查询执行时显示每一步的输出内容         查询的读写要求和一些常用的 SQL 语句分析用 



的信息  SQL SERVER 的 SET 命令将会在第 19 天的  TRANSCAT SQL 简介 中提到 



总结 



   流化  或者说是调整    中两个主要的因素可以直接地影响 SQL 语句的性能  对应用的 



调整和对数据库的调整      它们中的每一个都有自己的规则  但是没有另外一方它们自己是 



不能完全调整工作的      首先你要让技术队伍与系统工程师一同为平衡资源和让数据库充分 



发挥它自己的特性而工作以有助于系统性能的提高           其中的许多特性已经被数据库软件的 



供应商内置于其中了 



   应用程序开发人员必需知道这些数据         知道应用数据是优化数据库设计的关键所在 



开发人员和编程人员必须知道什么时候就使用索引           什么时候应该增加索引       什么时候允 



许批量载入运行     一定要让批量载入与日常进行的工作分开 



   对数据库的调整可以提高特定的应用程序访问它的速度  数据库管理员必须了解每天 



的操作和数据库的性能  此外  在后台调试时必须小心  DBA  通常会给出一些创造性的建 



议以使对数据的访问更加有效       比如使用索引或重新构造 SQL  语句  DBA  也应该熟悉在 



                                                      325 


…………………………………………………………Page 326……………………………………………………………

SQL 21  日自学通(V1。0)                                翻译人  笨猪 



数据库软件中所给出的工具来测量性能和提出建议 



问与答 



   问  如果我对我的 SQL 进行了优化     可以得到多大的性能提升 



   答  性能的增加是与你的表的大小相关的         与表有没有索引还是其它的相关数据无关 



在大型的表中    复杂的查询可能由几个小时减为只需几分钟  在事务处理过程中              对 SQL 



语句的优化可能为最终用户节省更多的时间 



   问  我应该在什么时候运行我的批量载入任务 



   答  听你的 DBA  的建议  DBA 需要知道你需要插入  更新或删除多少数据  在其它 



批量载入任务活动时也应该经常执行 MIT 命令 



   问  我是否应该将我的表分于不同的磁盘 



   答  这在你的表很大或你的表访问任务很重时有用 



校练场 



   1  SQL 语句的流化是什么意思 



   2  表和它的索引是否应该放在同一个磁盘上 



   3  为什么说对 SQL 语句中各个元素的安排是非常重要的 



   4  当全表扫描时会发生什么情况 



   5  你如何才能避免全表扫描 



   6  常见的对性能的障碍有哪些 



练习 



1  让下边的 SQL 语句更易读 



   SELECT       EMPLOYEE。LAST_NAME;     EMPLOYEE。FIRST_NAME; 



EMPLOYEE。MIDDLE_NAME;EMPLOYEE。ADDRESS;  EMPLOYEE。PHONE_NUMBER; 



PAYROLL。SALARY;  PAYROLL。POSITION;EMPLOYEE。SSN;  PAYROLL。START_DATE 



FROM  EMPLOYEE;  PAYROLL  WHEREEMPLOYEE。SSN  =  PAYROLL。SSN  AND 



EMPLOYEE。LAST_NAME LIKE 'S%' AND  PAYROLL。SALARY 》 20000; 



                                                       326 


…………………………………………………………Page 327……………………………………………………………

SQL 21  日自学通(V1。0)                                                                翻译人     笨猪 



2    重新安排下边的查询条件以减少数据返回所需要的时间  并使用下边的统计  对整个表 



    以决定这些条件的次序 



     593 individuals have the last name SMITH。 



     712 individuals live in INDIANAPOLIS。 



     3;492 individuals are MALE。 



     1;233 individuals earn a salary 》= 30;000。 



     5;009 individuals are single。 



     Individual_id is the primary key for both tables。 



     SELECT M。INDIVIDUAL_NAME; M。ADDRESS; M。CITY; M。STATE; M。ZIP_CODE; 



                   S。SEX;  S。MARITAL_STATUS;  S。SALARY 



     FROM  MAILING_TBL  M;    INDIVIDUAL_STAT_TBL  S 



     WHERE M。NAME LIKE 'SMITH%' 



       AND M。CITY = 'INDIANAPOLIS' 



       AND S。SEX = 'MALE' 



       AND S。SALARY 》= 30000 



       AND S。MARITAL_STATUS = 'S' 



       AND M。INDIVIDUAL_ID = S。INDIVIDUAL_ID; 



                                                                                           327 


…………………………………………………………Page 328……………………………………………………………

SQL 21  日自学通(V1。0)                         翻译人  笨猪 



第 16 天    用视图从数据字典中获得信息 



目标 



   今天我们来讨论数据字典    也就是通常所说的系统目录  在今天中我们会对以下的内 



容有充分的了解 



    l  数据字典的定义 



    l  数据字典中都包括有哪些方面的信息 



    l  在数据字典中有几种不同类型的表 



    l  从数据字典中获得有用信息的有效方法 



数据字典简介 



   每一种数据库都有它自己的数据字典     或系统目录   在今天的介绍中这两个词我们都 



会使用  数据字典是在数据库环境中的一个系统区域       它包含着关于数据库成份的信息 



数据字典中包括的信息如数据库设计  存储的 SQL 代码    用户统计   数据库过程  数据库 



的增长情况和对数据库性能的统计 



   数据字典中包括有数据库设计信息的表  它们是由数据库设计语言  DDL     如 CREA
返回目录 上一页 下一页 回到顶部 1 1
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!