论文部分内容阅读
摘 要 随着人们生活节奏的加快和数据库信息量的扩大,对于查询效率提出了更高的要求。Oralce数据库是目前应用最为广泛的数据库,提高其查询效率对于促进系统运行有着重要意义。本文就根据SQL查询优化的原理,从磁盘I/O访问、内存大小等几个方面对Oralce数据库SQL查询优化进行了分析。
关键词 Oralce数据库;性能优化;SQL查询优化
中图分类号:TP391 文献标识码:A 文章编号:1671-7597(2015)03-0269-02
在Oralce数据库SQL查询中,其实质是通过访问磁盘I/O来获取所需要的数据,在此过程中,还会受到数据库系统CPU使用效率、数据库命中率以及吞吐量等几个方面的影响。而对Oralce数据库的SQL查询优化,其目的就是尽可能减少磁盘I/O的访问量和资源竞争,进而提高查询相应效率,以实现更快的得到所需信息的目标。
1 Oralce数据库SQL查询优化原理
1.1 避免影响SQL性能因素
在Oralce数据库SQL查询中,由于可能会受到系统导入不准确、设置的初始参数不合理和统计数据模式不合适等因素的干扰,都会对SQL的性能造成不良影响,导致出现优化程序判断失误、索引扫描响应出现偏差、过滤条件设置不当导致多个表格连接时中间结果出现大量的无用记录、数据库的查询并行化处理利用效率较低等问题。因此,在优化中,需要充分对这些因素进行考虑,最大程度的保证相关参数、系统等设置的准确性。
1.2 降低磁盘I/O访问量
磁盘I/O是影响数据库响应速度的重要因素,其会降低响应速度的问题有磁盘之间的互相竞争、I/O的读取次数过多以对数据库各部门的分配管理不当等问题。磁盘竞争多是由于在对数据库查询过程中,相应的进程会访问重做日志文件和数据文件,这两种文件在同一磁盘中会发生竞争。所以,在Oralce数据库优化时,需要在此问题上进行改进[1]。
1.3 数据库内存管理
数据库内存的大小会对数据查询进程运行造成一定的影响,其多会受到各项初始化参数的影响。以数据库工作区SGA为例,它与Oralce进程结合组成一个数据库,并对其内数据进行管理,对用户查询进行应答,SGA主要由数据缓存区、日志缓存区和共享池三部分组成,这些内存区域的大小会受其初始文件initSID.ora的初始化参数影响,进而对其性能造成影响。因此,在对数据库查询进行优化时,还需要加强对数据内存的管理。
2 Oralce数据库SQL查询优化的措施
2.1 优化数据库
2.1.1 对数据关系规范化进行合理调整
Oralce数据库中的数据关系规范化为SQL查询制定了相应的规则,减少了逻辑和物理I/O访问的次数,避免了过多的数据冗余问题,提高了数据增、删、改的效率。但是,如果数据被完全规范,其查询性能并不是最好的,这是由于数据之间表连接操作特点而造成的。因此,在对数据关系规范化进行调整时,需要根据实际应用的需求,合理地将非规范化约束进行保留,将冗余的数据字段与不全部依赖主键的表相联系,来实现减少表连接次数,提高查询速度的目的。
2.1.2 利用Connection Pool机制
在数据库查询时,最占用CPU的是数据库连接过程,此过程会导致查询用户需要等待较长的时间,对此,可以采用Connection Pool机制的方式,也就是将当前的连接进行那个复制,来时用户直接得到相应的数据库连接,避免重新建立数据库连接的问题,来达到提高系统相应速度的目的。
2.2 对磁盘I/O进行优化
为了避免由于磁盘竞争引起的系统响应时间过长,可以将数据文件和重做日志文件分别重新安排,比如将表数据文件分配到多个不同的磁盘中,来平衡系统的I/O,或者把日志、索引、数据等放置于不同的I/O设备中,来减少I/O的访问读取次数。利用这种改进方式,可以实现磁盘I/O的并行访问,降低I/O的读取次数,进而达到提高查询优化的目标。
2.3 对内存进行优化调整
根据影响数据库内存的因素,在对其进行优化调整时,可以分别从数据缓冲区、日志缓冲区和共享池三个方面着手。优化调整操作需要先利用DBA(数据管理员)权限来打开数据库,并输入和执行SQL>select * from v$ sga来得到SGA的设置信息,进而根据实际情况做出合理的调整。
2.3.1 数据缓冲区的优化调整
在用户查询数据过程中,数据库服务器的工作进程是先从磁盘文件中读取数据,再将数据同步复制到数据缓冲区,然后从缓冲区将相关数据反馈给用户,由此可知,数据缓冲区的功能是数据中转站,其大小会直接影响到数据存取的速度。在确定SQL语句调整合理后,缓冲区内存配置的合理性可以利用命中率来进行判定,命中率的计算方法如图1所示,此方法得到的Hit Ratio值为99.59094[2]。
因此,如果缓冲区的命中率低于98%时,就需要对其配置进行增大调整,具体方法是将intSID.ora文件下的db_block_size的参数调大,比如数据库默认为2KB,可以将其调整为8KB,这样就能够通过更少的I/O次数来完成对数据库的访问。
2.3.2 日志缓冲区的优化调整
日志缓冲区的功能是通过内存与内存间的操作来提高数据库操作速度,其储存的是数据库的修改信息,大小取决于log_buffer的值,此值可以通过SQL>select * from v$ sgastat where name =‘log_buffer’的方法来查询,查询值即为SGA中日志缓冲区实际大小。
日志缓冲区大小的合理与否可以通过如图2所示方法进行确定,如果查询得到的结果大于1%,应该对日志缓冲区进行增大。
2.3.3 共享池的优化调整
共享池的大小是由shared_pool_size参数控制的,如果过小而会降低其性能,进而占据大量的CPU,给数据库查询造成阻碍。数据库主要是由库高速缓存和数据字典高速缓存组成,其衡量指标也是命中率,两者命中率查询方法如图3所示,当两者的命中率小于95%时,则应该增大共享池的大小。
3 结束语
Oralce数据库SQL查询优化对于提高数据库应用系统的工作效率有着重要意义。在对Oralce数据库进行QL查询优化,需要从影响其查询性能的因素出发,通过合理地调整数据关系规范、磁盘I/O和内存大小,来达到提高数据查询效率的目标。
参考文献
[1]张学义,王观玉,黄隽,等.基于Oralce数据库SQL查询优化研究[J].制造业自动化,2011(2):116-118,121.
[2]周志德.Oralce数据库的SQL查询优化研究[J].计算机与数字工程,2010(11):173-178.
关键词 Oralce数据库;性能优化;SQL查询优化
中图分类号:TP391 文献标识码:A 文章编号:1671-7597(2015)03-0269-02
在Oralce数据库SQL查询中,其实质是通过访问磁盘I/O来获取所需要的数据,在此过程中,还会受到数据库系统CPU使用效率、数据库命中率以及吞吐量等几个方面的影响。而对Oralce数据库的SQL查询优化,其目的就是尽可能减少磁盘I/O的访问量和资源竞争,进而提高查询相应效率,以实现更快的得到所需信息的目标。
1 Oralce数据库SQL查询优化原理
1.1 避免影响SQL性能因素
在Oralce数据库SQL查询中,由于可能会受到系统导入不准确、设置的初始参数不合理和统计数据模式不合适等因素的干扰,都会对SQL的性能造成不良影响,导致出现优化程序判断失误、索引扫描响应出现偏差、过滤条件设置不当导致多个表格连接时中间结果出现大量的无用记录、数据库的查询并行化处理利用效率较低等问题。因此,在优化中,需要充分对这些因素进行考虑,最大程度的保证相关参数、系统等设置的准确性。
1.2 降低磁盘I/O访问量
磁盘I/O是影响数据库响应速度的重要因素,其会降低响应速度的问题有磁盘之间的互相竞争、I/O的读取次数过多以对数据库各部门的分配管理不当等问题。磁盘竞争多是由于在对数据库查询过程中,相应的进程会访问重做日志文件和数据文件,这两种文件在同一磁盘中会发生竞争。所以,在Oralce数据库优化时,需要在此问题上进行改进[1]。
1.3 数据库内存管理
数据库内存的大小会对数据查询进程运行造成一定的影响,其多会受到各项初始化参数的影响。以数据库工作区SGA为例,它与Oralce进程结合组成一个数据库,并对其内数据进行管理,对用户查询进行应答,SGA主要由数据缓存区、日志缓存区和共享池三部分组成,这些内存区域的大小会受其初始文件initSID.ora的初始化参数影响,进而对其性能造成影响。因此,在对数据库查询进行优化时,还需要加强对数据内存的管理。
2 Oralce数据库SQL查询优化的措施
2.1 优化数据库
2.1.1 对数据关系规范化进行合理调整
Oralce数据库中的数据关系规范化为SQL查询制定了相应的规则,减少了逻辑和物理I/O访问的次数,避免了过多的数据冗余问题,提高了数据增、删、改的效率。但是,如果数据被完全规范,其查询性能并不是最好的,这是由于数据之间表连接操作特点而造成的。因此,在对数据关系规范化进行调整时,需要根据实际应用的需求,合理地将非规范化约束进行保留,将冗余的数据字段与不全部依赖主键的表相联系,来实现减少表连接次数,提高查询速度的目的。
2.1.2 利用Connection Pool机制
在数据库查询时,最占用CPU的是数据库连接过程,此过程会导致查询用户需要等待较长的时间,对此,可以采用Connection Pool机制的方式,也就是将当前的连接进行那个复制,来时用户直接得到相应的数据库连接,避免重新建立数据库连接的问题,来达到提高系统相应速度的目的。
2.2 对磁盘I/O进行优化
为了避免由于磁盘竞争引起的系统响应时间过长,可以将数据文件和重做日志文件分别重新安排,比如将表数据文件分配到多个不同的磁盘中,来平衡系统的I/O,或者把日志、索引、数据等放置于不同的I/O设备中,来减少I/O的访问读取次数。利用这种改进方式,可以实现磁盘I/O的并行访问,降低I/O的读取次数,进而达到提高查询优化的目标。
2.3 对内存进行优化调整
根据影响数据库内存的因素,在对其进行优化调整时,可以分别从数据缓冲区、日志缓冲区和共享池三个方面着手。优化调整操作需要先利用DBA(数据管理员)权限来打开数据库,并输入和执行SQL>select * from v$ sga来得到SGA的设置信息,进而根据实际情况做出合理的调整。
2.3.1 数据缓冲区的优化调整
在用户查询数据过程中,数据库服务器的工作进程是先从磁盘文件中读取数据,再将数据同步复制到数据缓冲区,然后从缓冲区将相关数据反馈给用户,由此可知,数据缓冲区的功能是数据中转站,其大小会直接影响到数据存取的速度。在确定SQL语句调整合理后,缓冲区内存配置的合理性可以利用命中率来进行判定,命中率的计算方法如图1所示,此方法得到的Hit Ratio值为99.59094[2]。
因此,如果缓冲区的命中率低于98%时,就需要对其配置进行增大调整,具体方法是将intSID.ora文件下的db_block_size的参数调大,比如数据库默认为2KB,可以将其调整为8KB,这样就能够通过更少的I/O次数来完成对数据库的访问。
2.3.2 日志缓冲区的优化调整
日志缓冲区的功能是通过内存与内存间的操作来提高数据库操作速度,其储存的是数据库的修改信息,大小取决于log_buffer的值,此值可以通过SQL>select * from v$ sgastat where name =‘log_buffer’的方法来查询,查询值即为SGA中日志缓冲区实际大小。
日志缓冲区大小的合理与否可以通过如图2所示方法进行确定,如果查询得到的结果大于1%,应该对日志缓冲区进行增大。
2.3.3 共享池的优化调整
共享池的大小是由shared_pool_size参数控制的,如果过小而会降低其性能,进而占据大量的CPU,给数据库查询造成阻碍。数据库主要是由库高速缓存和数据字典高速缓存组成,其衡量指标也是命中率,两者命中率查询方法如图3所示,当两者的命中率小于95%时,则应该增大共享池的大小。
3 结束语
Oralce数据库SQL查询优化对于提高数据库应用系统的工作效率有着重要意义。在对Oralce数据库进行QL查询优化,需要从影响其查询性能的因素出发,通过合理地调整数据关系规范、磁盘I/O和内存大小,来达到提高数据查询效率的目标。
参考文献
[1]张学义,王观玉,黄隽,等.基于Oralce数据库SQL查询优化研究[J].制造业自动化,2011(2):116-118,121.
[2]周志德.Oralce数据库的SQL查询优化研究[J].计算机与数字工程,2010(11):173-178.