期刊问答网 论文发表 期刊发表 期刊问答
  • 回答数

    4

  • 浏览数

    126

开始
首页 > 期刊问答网 > 期刊问答 > sql数据库论文3000字

4个回答 默认排序1
  • 默认排序
  • 按时间排序

sallow_sy

已采纳
ORACLE中SQL查询优化研究  摘 要 数据库性能问题一直是决策者及技术人员共同关注的焦点,影响数据库性能的一个重要因素就是SQL查询语句的低效率。论文首先分析了导致SQL查询语句性能低下的四个常见原因以及SQL调优的一般步骤,然后分别针对如何降低I/O操作、在查询语句中如何避免对查询结果的高成本操作以及在多表连接时如何提高查询效率进行了分析。  关键词 ORACLE;SQL;优化;连接  1 引言  随着网络应用不断发展,系统性能已越来越引起决策者的重视。影响系统性能的因素很多,低效的SQL语句就是其中一个不可忽视的重要原因。论文首先分析导致SQL性能低下的常见原因,然后分析SQL调优应遵循的一般步骤,最后从如何降低I/O、避免对查询结果的高成本操作和多表连接中如何提高SQL性能进行了研究。鉴于目前ORACLE在数据库市场上的主导地位,论文将只针对ORACLE进行讨论。  2 影响SQL性能的原因  影响SQL性能的因素很多,如初始化参数设置不合理、导入了不准确的系统及模式统计数据从而影响优化程序(CBO)的正确判断等,这些往往和DBA密切相关。纯粹从SQL语句出发,笔者认为影响SQL性能不外乎以下四个重要原因:  (1)在大记录集上进行高成本操作,如使用了引起排序的谓词等。  (2)过多的I/O操作(含物理I/O与逻辑I/O),最典型的就是未建立恰当的索引,导致对查询表进行全表扫描。  (3)处理了太多的无用记录,如在多表连接时过滤条件位置不当导致中间结果集包含了太多的无用记录。  (4)未充分利用数据库提供的功能,如查询的并行化处理等。  第(4)个原因处理起来相对简单。论文将针对前三个原因论述如何提高SQL查询语句的性能。  3 SQL优化的一般步骤  SQL优化一般需经过发现问题、分析问题、提出解决措施、应用措施、测试性能几个步骤,如图1所示。“发现问题就是解决问题的一半”,因此在SQL调优过程中,定位问题SQL是非常重要的一步,一般可借助于ORACLE自带的性能优化工具如STATSPACK、TKPROF、AUTOTRACE等辅助用户进行,同时还应该重视动态性能视图如V$SQL、V$MYSTAT、V$SYSSTAT等的研究。  图1 SQL优化的一般步骤  4 SQL语句的优化  1 优化排序操作  排序的成本十分高昂,当在查询语句中使用了引起结果集排序的谓词时,SQL性能必然受到影响。  1 排序过程分析  当待排序数据集不是太大时,服务器在内存(排序区)完成排序操作,如果排序需要更多的内存空间,服务器将进行如下处理:  (1) 将数据分成多个小的集合,对每一集合进行排序。  (2) 服务器向磁盘申请临时空间,将排好序的中间结果写入临时段,再对另外的集合进行排序。  (3) 在所有的集合均排好序后,服务器再将它们进行合并得到最终的结果,如果排序区尺寸太小,合并无法一次完成时,将分多次进行。  从上述分析可知,排序是一种十分昂贵的操作,它消耗大量的CPU时间和内存,触发磁盘分页和交换操作,因此只要有可能,我们就应该在SQL语句中尽量避免排序操作。  2 SQL中引起排序的操作  SQL查询语句中引起排序的操作大致有:ORDER BY 和GROUP BY 从句;DISTINCT修饰符;UNION、INTERSECT、MINUS集合操作符;多表连接时的排序合并连接(SORT MERGE JOIN)等。  3 如何避免排序  1)建立恰当的索引  对经常进行排序和连接操作的字段建立索引。在建立索引后,当服务器向这些字段发出排序请求时,将直接引用索引而不进行排序操作;当进行等值连接查询操作时,若建立连接的字段未建立索引,服务器进行的是排序合并连接(SORT MERGE JOIN),连接操作的过程如下:  对进行连接的两个或多个表分别进行全扫描;  对每一个表中的行集分别进行全排序;  合并排序结果。  如果建立连接的字段已建立索引,服务器进行嵌套循环连接(NESTED LOOP JOINS),该连接方式不需要任何排序,其过程如下:  对驱动表进行全表扫描;  对返回的每一行利用连接字段值实施索引惟一扫描;  利用从索引扫描中返回的ROWID值在从表中定位记录;  合并主、从表中的匹配记录。  因此,建立索引可避免多数排序操作。  2)用UNIION ALL替换UNION  UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。大部分应用中是不会产生重复记录的,最常见的是过程表与历史表UNION 。因此,采用UNION ALL操作符替代UNION,因为UNION ALL操作只是简单的将两个结果合并后就返回。  2 优化I/O  过多的I/O操作会占用CPU时间、消耗大量内存和占用过多的栓锁,因此有必要对SQL的I/O进行优化。优化I/O的最有效方式就是用索引扫描代替全表扫描。  1 应用基于函数的索引  基于函数的索引(FUNCTION BASED INDEX,简记为FBI)提供了索引计算列并在查询中使用这些索引的能力。FBI的实质是对查询所需中间结果进行预处理。如果一个FBI与查询语句中的内嵌函数完全匹配,CBO在生成查询计划时,将自动启用索引范围扫描(INDEX RANGE SCAN)替换全表扫描(FULL TABLE SCAN)。考察下面的代码段并用AUTOTRACE观察创建FBI前后执行计划的变化。  select * from emp where upper(ename)=’SCOTT’  创建FBI前,很明显是全表扫描。  Execution Plan  ……  1 0 TABLE ACCESS (FULL) OF 'EMPLOYEES' (Cost=2 Card=1 Bytes=22)  idle>CREATE INDEX EMP_UPPER_FIRST_NAME ON EMPLOYEES(UPPER(FIRST_NAME));  索引已创建。  再次运行相同查询,  Execution Plan  ……  1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMPLOYEES' (Cost=1 Card=1 Bytes=22)  2 1 INDEX (RANGE SCAN) OF 'EMP_UPPER_FIRST_NAME' (NON-UNIQUE) (Cost=1 Card=1)  这一简单的例子充分说明了FBI在SQL查询优化中的作用。FBI所用的函数可以是用户自己创建的函数,该函数越复杂,基于该函数创建FBI对SQL查询性能的优化作用越明显。  2 应用物化视图和查询重写  物化视图是一个预计算结果集,其中通常包含聚集与多表连接等复杂操作。数据库自动维护物化视图,且随用户的要求进行刷新。查询重写机制就是用数据库中的替代对象(如物化视图)将用户提交的查询重写为完全不同但功能等价的查询。查询重写对用户透明,用户完全按常规编写访问数据库的查询语句,优化程序(CBO)自动决定是否对用户提交的查询进行重写。查询重写是提高查询性能的一种非常有效的方法,尤其是在数据仓库环境中针对汇总、多表连接以及其它高成本的操作方面。  下面以一个非常简单的例子来演示物化视图和查询重写在优化SQL查询性能方面的作用。  select deptno,dname,count(*)  from emp,dept  where deptno=deptno  group by deptno,dname  查询计划及主要统计数据如下:  执行计划:  -----------------------------------------  ……  2 1 HASH JOIN (Cost=5 Card=14 Bytes=224)  3 2 TABLE ACCESS (FULL) OF 'DEPT' (Cost=2 Card=4 Bytes=52)  4 2 TABLE ACCESS (FULL) OF 'EMP' (Cost=2 Card=14 Bytes=42)  主要统计数据:  -----------------------------------------  305 recursive calls  46 consistent gets  创建物化视图EMP_DEPT:  create materialized view emp_dept build immediate  refresh on demand  enable query rewrite  as  select deptno,dname,count(*)  from emp,dept  where deptno=deptno  group by deptno,dname  /  再次执行查询,执行计划及主要统计数据如下:  执行计划:  -------------------------------------  ……  1 0 TABLE ACCESS (FULL) OF 'EMP_DEPT' (Cost=2 Card=327 Bytes=11445)  主要统计数据:  ------------------------------------  79 recursive calls  28 consistent gets  可见,在建立物化视图之前,首先执行两个表的全表扫描,然后进行HASH连接,再进行分组排序和选择操作;而建立物化视图后,CBO自动将上述复杂操作转换为对物化视图EMP_DEPT的全扫描,相关的统计数据也有了很大的改善,递归调用(RECURSIVE CALLS)由305降到79,逻辑I/O(CONSISTENT GETS)由46降为28。  3 将频繁访问的小表读入CACHE  逻辑I/O总是快于物理I/O。如果数据库中存在被应用程序频繁访问的小表,可将这些表强行读入KEEP池,从而避免物理I/O的发生。  3 多表连接优化  最能体现查询复杂性的就是多表连接,多表连接操作往往要耗费大量的CPU时间和内存,因此多表连接查询性能优化往往是SQL优化的重点与难点。  1 消除外部连接  通过消除外部连接,不仅使得到的查询更易于读取,而且性能也经常可以得到改善。一般的思路是,有以下形式的查询:  SELECT …,OUTER_JOINED_TABLECOLUMN  FROM SOME_TABLE,OUTER_JOINED_TO_TABLE  WHERE …=OUTER_JOINED_TO_TABLE(+)  可转换为如下形式的查询:  SELECT …,(SELECT COLUMN FROM OUTER_ JOINED_TO_TABLE WHERE …)FROM SOME_TABLE;  2 谓词前推,优化中间结果  多表连接的性能低下多数是因为连接操作与过滤操作的次序不合理,大多数用户在编写多表连接查询时,总是先进行连接操作再应用过滤条件,这导致服务器做了太多的无用功。针对这类问题,其优化思路就是尽可能将过滤谓词前推,使不符合条件的记录提前被筛选掉,只对符合条件的少数记录进行连接处理,这样可成倍的提高SQL查询效能。  标准连接查询如下:  Select prod_name,sum(sale_quant),  sum(sale_quant),sum(sale_quant)  From product a,tele_sale b,online_sale c,store_sale d  Where prod_id=prod_id and prod_id=prod_id  and prod_id=prod_id And der_date>sysdate-90  Group by prod_id;  启用内嵌视图,且将条件der_date>sysdate-90前移,优化后代码如下:  Select prod_name,le_sale_sum,line_sale_sum,store_sale_sum From product a,  (select sum(sal_quant) tele_sale_sum from product,tele_sale  Where der_date>sysdate-90 and prod_id =tele_prod_id) b,  (select sum(sal_quant) online_sale_sum  from product,tele_sale  Where der_date>sysdate-90 and prod_id =online_prod_id) c,  (select sum(sal_quant) store_sale_sum  from product,store_sale  Where der_date>sysdate-90 and prod_id =store_prod_id) d,  Where prod_id=prod_id and  prod_id=prod_id and prod_id=prod_id;  5 结束语  SQL语言在数据库应用中占有非常重要的地位,其性能的优劣直接影响着整个信息系统的可用性。论文从影响SQL性能的最主要的三个方面入手,分析了如何优化SQL查询的I/O、避免高成本的排序操作和优化多表连接。需要强调的一点是,理解SQL语句所解决的问题比SQL调优本身更重要,因此SQL调优需要系统分析人员、开发人员和数据库管理员密切协作。  参考文献  [1]Thomas KEffective Oracle by Design:Design and Build High-performance Oracle Application[M],The McGral- Hill Companies,Inc,2003  [2]Kevin Loney,George Koch,Oracle 9i:The Complete Reference[M],The McGral-Hill Companies,Inc,2002  [3] Oracle9i SQL Reference release 2(2)[OL/M], http:///technology/  [4] Oracle9i Data Warehousing Guide release 2(2) [OL/M], http:///technology/  [5]Alexey Danchenkov,Donald Burleson,Oracle Tuning:The Definitive Reference[OL/M],Rampant Techpress,  [6] Oracle9i Database Concepts release 2(2) [OL/M], http:///technology/  [7] Oracle9i supplied plsql packages and types reference release 2(2) [OL/M], http:/// technology/

sql数据库论文3000字

116 评论(8)

chen_jian85

资料包括: 论文( 36页16360字) 文献综述 原文:在数据库应用系统开发之前,对开发数据库的基本概念应当了解,对数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。数据库技术在计算机软件邻域研究中一直是非常重要的主题,产生于60年代,30多年来数据库技术得到了迅速发展,并已形成较为完整的理论体系和一大批实用系统。并且,近年来,随着World Wide Web(WWW)的猛增及Internet技术的迅速发展,使得数据库技术之时成为最热门技术之一。目录:1导言……………………………………………………………………………………… 1数据库应用系统开发简介…………………………………………………… 1 数据库…………………………………………………………………… 1 用户数据…………………………………………………………… 2 元数据……………………………………………………………… 3 索引………………………………………………………………… 4 应用元数据………………………………………………………… 2 数据库管理系统………………………………………………………… 3 创建数据库……………………………………………………………… 1 数据库模式………………………………………………………… 2 创建表……………………………………………………………… 3 定义联系…………………………………………………………… 4 应用组件………………………………………………………………… 2 客户管理系统………………………………………………………………… 52 数据库理论基础 ……………………………………………………………………… 1 数据库系统设计及范式分析 ………………………………………………… 1数据库系统设计………………………………………………………………2数据库设计范式分析…………………………………………………………2 SQL语言介绍……………………………………………………………………1 SQL基础……………………………………………………………………2 SQL语句 …………………………………………………………………1DDL与DML………………………………………………………………2复杂操作实现…………………………………………………………143 Visual FoxPro 0简介………………………………………………………………1 Visual FoxPro 0的特点 ……………………………………………………2 Visual FoxPro 0的开发环境……………………………………………… 1 Visual FoxPro 0的用户界面………………………………………… 2 Visual FoxPro 的向导……………………………………………………3 Visual FoxPro生成器…………………………………………………… 4 Visual FoxPro设计器……………………………………………………194 客户管理系统设计与实现……………………………………………………………1系统主要功能………………………………………………………………2次要功能……………………………………………………………………3系统数据库…………………………………………………………………2系统结构…………………………………………………………………………1系统的主要流程……………………………………………………………1客户管理系统的主要流程……………………………………………2系统主要功能的详细流程……………………………………………3数据库描述………………………………………………………………………1主体数据库描述……………………………………………………………4系统的设计及实现………………………………………………………………1数据表结构…………………………………………………………………1客户管理系统各表结构………………………………………………2具体设计……………………………………………………………………1主模块…………………………………………………………………2详细设计………………………………………………………………305 全文总结与展望………………………………………………………………………345.1本文主要总结……………………………………………………………………345.2所续研究工作展望………………………………………………………………34致谢………………………………………………………………………………………35参考文献…………………………………………………………………………………36参考文献:1 郑若思,宁洪 数据库原理 北京:国防科技大学出版社,2 马恒 关系数据库理论 北京:清华大学出版社,3 蔡伟,刘立志,段海平等Visual FoxPro 应用开发实例 北京:人民邮电出版社,4 安玉庆 Visual FoxPro 0 编程实战 青岛:青岛出版社,5 方建平,宋阳,张勇等 Visual FoxPro 0 参考详解 北京:清华大学出版社会,6 方可燕 Visual FoxPro 实战与精能 北京:清华大学出版社,7 高春玲,张文学,白桂梅等 数据库原理与应用--Visual FoxPro 北京:电子工业出版社,8 毛一心VISUAL FOXPRO0项目案例导航北京:人民邮电出版社,9 许向荣,潘清,杨一平FOXPRO0开发实例北京: 科学出版社,10 清汉计算机工作室VISUAL FOXPRO0开发实例北京: 机械工业出版社,11 徐建华,赵永江VISUAL FOXPRO6基础教程北京:机械工业出版社,12 博通工作室即学即用VISUAL FOXPRO北京:人民邮电出版社,13 徐兰芳,丁忠俊VISUAL FOXPRO0编程实例技巧武汉:华中理工大学出版社,14 李春葆VISUAL FOXPRO0专业版基础类参考手册北京:机械工业出版社,15 田发伟,遥远,姬光,蔡瑞天VISUAL FOXPRO0应用指南北京:人民邮电出版社,16 黄少棠,杨贵强,黄瀚华VISUAL FOXPRO0学习教程北京:北京大学出版社,需要的朋友请点这里下载:
348 评论(14)

好的吧多

人们把客观存在的事物以数据的形式存储到计算机中,经历了对现实生活中事物特性的认识、概念化到计算机数据库里的具体表示的逐级抽象过程,即现实世界-概念世界-机器世界三个领域。有时也将概念世界称为信息世界;将机器世界称为存储或数据世界。 一、三个世界 1、现实世界 人们管理的对象存于现实世界中。现实世界的事物及事物之间存在着联系,这种联系是客观存在的,是由事物本身的性质决定的。例如学校的教学系统中有教师、学生、课程,教师为学生授课,学生选修课程并取得成绩。 2、概念世界 概念世界是现实世界在人们头脑中的反映,是对客观事物及其联系的一种抽象描述,从而产生概念模型。概念模型是现实世界到机器世界必然经过的中间层次。涉及到下面几个术语: 实体:我们把客观存在并且可以相互区别的事物称为实体。实体可以是实际事物,也可以是抽象事件。如一个职工、一场比赛等。 实体集:同一类实体的集合称为实体集。如全体职工。注意区分"型"与"值"的概念。如每个职工是职工实体"型"的一个具体"值"。 属性:描述实体的特性称为属性。如职工的职工号,姓名,性别,出生日期,职称等。 关键字:如果某个属性或属性组合的值能唯一地标识出实体集中的每一个实体,可以选作关键字。用作标识的关键字,也称为码。如"职工号"就可作为关键字。 联系:实体集之间的对应关系称为联系,它反映现实世界事物之间的相互关联。联系分为两种,一种是实体内部各属性之间的联系。另一种是实体之间的联系。 3、机器世界 存入计算机系统里的数据是将概念世界中的事物数据化的结果。为了准确地反映事物本身及事物之间的各种联系,数据库中的数据必须有一定的结构,这种结构用数据模型来表示。数据模型将概念世界中的实体,及实体间的联系进一步抽象成便于计算机处理的方式。 数据模型应满足三方面要求:一是能比较真实地模拟现实世界;二是容易为人所理解;三是便于在计算机上实现。数据结构、数据操作和完整性约束是构成数据模型的三要素。数据模型主要包括网状模型、层次模型、关系模型等,它是按计算机系统的观点对数据建模,用于DBMS的实现。 关系数据库采用关系模型作为数据的组织方式。 关系数据库因其严格的数学理论、使用简单灵活、数据独立性强等特点,而被公认为最有前途的一种数据库管理系统。它的发展十分迅速,目前已成为占据主导地位的数据库管理系统。自20世纪80年代以来,作为商品推出的数据库管理系统几乎都是关系型的,例如,Oracle,Sybase,Informix,Visual FoxPro等。 网络数据库也叫Web数据库。促进Internet发展的因素之一就是Web技术。由静态网页技术的HTML到动态网页技术的CGI、ASP、PHP、JSP等,Web技术经历了一个重要的变革过程。Web已经不再局限于仅仅由静态网页提供信息服务,而改变为动态的网页,可提供交互式的信息查询服务,使信息数据库服务成为了可能。Web数据库就是将数据库技术与Web技术融合在一起,使数据库系统成为Web的重要有机组成部分,从而实现数据库与网络技术的无缝结合。这一结合不仅把Web与数据库的所有优势集合在了一起,而且充分利用了大量已有数据库的信息资源。图1-1是Web数据库的基本结构图,它由数据库服务器(Database Server)、中间件(Middle Ware)、Web服务器(Web Server)、浏览器(Browser)4部分组成。 Web数据库的基本结构 它的工作过程可简单地描述成:用户通过浏览器端的操作界面以交互的方式经由Web服务器来访问数据库。用户向数据库提交的信息以及数据库返回给用户的信息都是以网页的形式显示。 1 Internet技术与相关协议 Internet技术在Web数据库技术中扮演着重要的角色。Internet(因特网)专指全球最大的、开放的、由众多网络相互连接而成的计算机网络,并通过各种协议在计算机网络中传递信息。TCP/IP协议是Internet上使用的两个最基本的协议。因此也可以说Internet是全球范围的基于分组交换原理和TCP/IP协议的计算机网络。它将信息进行分组后,以数据包为单位进行传输。Internet在进行信息传输时,主要完成两项任务。 (1)正确地将源信息文件分割成一个个数据包,并能在目的地将源信息文件的数据包再准确地重组起来。 (2)将数据包准确地送往目的地。 TCP/IP协议的作用就是为了完成上述两项任务,规范了网络上所有计算机之间数据传递的方式与数据格式,提供了数据打包和寻址的标准方法。 1.TCP/IP协议 TCP协议(Transmission Control Protocol,传输控制协议)规定了分割数据和重组数据所要遵循的规则和要进行的操作。TCP协议能保证数据发送的正确性,如果发现数据有损失,TCP将重新发送数据。 2.IP协议 在Internet上传送数据往往都是远距离的,因此在传输过程中要通过路由器一站一站的转接来实现。路由器是一种特殊的计算机,它会检测数据包的目的地主机地址,然后决定将该数据包送往何处。IP协议(Internet Protocol,网际协议)给Internet中的每一台计算机规定了一个地址,称为IP地址。IP地址的标准是由4部分组成(例如11),其中前两部分规定了当前使用网络的管理机构,第3部分规定了当前使用的网络地址,第4部分规定了当前使用的计算机地址。 Internet上提供的主要服务有E-mail、FTP、BBS、Telnet、WWW等。其中WWW(World Wide Web,万维网)由于其丰富的信息资源而成为Internet最为重要的服务。
302 评论(10)

HYQ0629

只能提供几个方面,不可能2000吧SQL 的简称,理解什么是SQLSQL的理论基础:包括范式、基本的约束、ERSQL的基本操作(也就是基本应用):DDL/DML/DCL 重点介绍DML,而select又是重点中的重点SQL的优化:可以简单介绍一下SQL的优化,这是高级应用了,介绍select就可以了实例:结合某种数据库(如SQL Server、mysql或oracle)进行一个简单的系统设计(如学生管理系统、教务管理系统等),并附上SQL代码,实现一些基本的查询(如成绩,选课)我觉得这是比较完善的了,其实实例才是硬道理真应用,你也可以结合实例来贯穿你的整篇文章,从设计到实现,这更具有说服力。
147 评论(8)

相关问答