首页 > 知识点讲解
       数据库性能
知识路径: > 计算机系统综合知识 > 数据库系统 > 数据库管理系统的类型、结构和性能评价 > 数据库的控制功能 > 
相关知识点:26个      
        数据库性能的调整是数据库管理员的日常工作之一。性能调整工作可以从逻辑上和物理上两个方面进行。
               SQL的性能优化
               SQL(Structured Query Language,结构化查询语言)语句是用户访问关系数据库中数据的唯一方法,通常在一个关系数据库上,服务器的SQL进程会使用该服务器60%~90%的资源,大部分数据库效率的问题都是由于SQL语句编写不善引起的,所以SQL语句的性能优化十分重要。
               为了编写出高效的SQL语句,首先应按照一定的具体规范来编写SQL语句,我们建议每一个DBA都应该收集和整理一份SQL编码规范。其次是在真实数据库上对这些SQL语句进行性能测试和跟踪并不断调整,达到最优后才正式上线运行。最后需要强调的是,随着数据量的变化和数据库版本升级后,往往会有部分SQL性能下降,所以对SQL的跟踪优化是DBA的一项持续不断的工作。
               数据库的性能优化
               DBS是一组程序作用在数据文件上对外提供服务,所以其本身的性能优化也十分重要,对其的优化工作主要是相应的参数调整,步骤一般如下:
               (1)通过监视DBS的内存对象,获得系统性能指标,发现系统的性能缺陷及原因。
               (2)针对导致系统性能缺陷的原因,进行相应的参数调整(如增加数据缓冲区的大小)。
               (3)跟踪参数调整后系统的各项性能指标,看是否达到预期要求,否则继续调整。
               以上3步反复循环迭代,持续进行,保证数据库本身运行状态的最优。
               例如,Oracle通常利用定时执行statspacke.snap包收集数据库的运行状态,然后利用程序spreport.sql对两个采集点之间的数据产生报表,以分析这段时间数据库的各种运行指标。Sybase数据库用sp_sysmon、sp_monitor、sp_configure命令来采集和分析一定时间段内数据库的各种运行指标。
               查询优化
               可以通过如下方法来优化查询:
               (1)把数据、日志、索引放到不同的I/O设备上,增加读取速度。数据量(尺寸)越大,提高I/O越重要。
               (2)纵向、横向分割表,减少表的尺寸。
               (3)根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好,不要对有限的几个值的列建单一索引。
               (4)用OR的子句可以分解成多个查询,并且通过UNION连接多个查询。它们的速度只与是否使用索引有关,如果查询需要用到联合索引,用UNION all执行的效率更高。
               (5)在查询SELECT语句中用WHERE子句限制返回的行数,避免表扫描。如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担,降低了性能。如果表很大,在表扫描的期间将表锁住,禁止其他的联接访问表,后果严重。
               (6)注意使用DISTINCT,在没有必要时不要用,它同UNION一样会使查询变慢。
               (7)在IN后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,减少判断的次数。
               (8)一般在GROUP BY和HAVING子句之前就能剔除多余的行,所以尽量不要用它们来做剔除行的工作。
               (9)尽量将数据的处理工作放在服务器上,减少网络的开销,如使用存储过程。存储过程是编译好、优化过、并且被组织到一个执行规划里、且存储在数据库中的SQL语句(存储过程是数据库服务器端的一段程序),是控制流语言的集合,速度当然快。存储过程有两种类型。一种类似于SELECT查询,用于检索数据,检索到的数据能够以数据集的形式返回给客户。另一种类似于INSERT或DELETE查询,它不返回数据,只是执行一个动作。有的服务器允许同一个存储过程既可以返回数据又可以执行动作。
               (10)不要在一句话里再三地使用相同的函数,浪费资源,将结果放在变量里再调用更快。
               另外,还可以针对大量只读查询操作进行优化,常见的方法有:
               (1)数据量小的数据,可以考虑不存储在数据库中,而是通过程序常量的方式解决。
               (2)需要存储在数据库中的数据,可以考虑采用物化视图(索引视图)。当DBA在视图上创建索引时,这个视图就被物化(执行)了,并且结果集被永久地保存在唯一聚簇索引中,保存方式与一个有聚簇索引的表的保存方式相同。物化视图减除了为引用视图的查询动态建立结果集的管理开销,优化人员可以在查询中使用视图索引,而不需要在FROM子句中直接指定视图。
               (3)数据存储时可以考虑适当的数据冗余,以减少数据库表之间的连接操作,提高查询效率。
               (4)针对数据的特点,采取特定的索引类型。例如位图索引等。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有