关于处理数据库优化设计

2020-12-29 11:57付文哲韩震司玉杰
电脑知识与技术 2020年32期
关键词:性能优化数据库

付文哲 韩震 司玉杰

摘要:科技的发展使得互联网技术在信息管理工作中的应用逐渐广泛,为了能够使数据库的运行效率大幅提升,减少系统运行中所消耗的资源,就需要从多方面入手,针对性地对数据库的运行给出优化方案,综合提升数据库的性能。本文主要对处理数据库的优化设计进行研究。

关键词:数据库;优化处理;性能优化

中图分类号:TP311      文献标识码:A

文章编号:1009-3044(2020)32-0028-02

在数据库建立完成后,随着时间的推移,数据库内的数据量会大幅度上升,数据库的运行效率难免会出现下降的情况,为了保证数据库的正常运行,避免數据库影响系统的正常使用,可以选择增加内存的方式,但该方法成本较高,故而一般会选择优化数据库来提升系统性能。

1 影响数据库运行速率的主要原因

1) 暂时性数据处理任务量过大

在数据库的运转过程中,备份、存储、命令执行、数据回迁、视图同步等各项工作在进行时,服务器的工作压力较大,此时I/O出现冲突,整个系统的运行速率下降。

2) CPU占用过高

CPU是数据库中的一个重要部分,当某一个应用或某一工作指令占据了大量的CPU时,数据库的其他工作指令会运行缓慢,使得数据库的性能下降。一般来说低效SQL语句、重解析SQL语句、锁冲突这些情况都会使得CPU的资源占用过高,引起数据库的性能下降。

3) 内存分配不恰当

如果系统的内存分配不合理,则Oracle用于记录最近历史数据的缓冲控件会减少,在操作较为频繁的情况下,不断地更换页面或交换存储内容,则系统的I/O工作压力增大,此时数据库的性能下降。

4) Oracle配置不合理

对Oracle来说,一套Oracle后台进程和系统的一个对应内存区域共同组成一个Oracle实例,如果Oracle的配置不合理,则系统的性能也会受到影响,导致数据库的性能下降。

5) 网速较慢

网速和系统的运行速率有较大的关联,如果网络的带宽较低,则整个系统的运行性能较差,如果网络的带宽非常低,还会对I/O负载量造成影响,网络I/O的负载量也就相应的增大,数据库在运行过程中的运转效率降低,响应时间增加。

2 通过SQL优化数据库性能

SQL优化指的是通过对数据库内的数据进行定位、执行、检查、分析、改写、再执行来达到减少系统的资源消耗,进而提升数据库性能目的的一种手段。SQL语句的执行情况直接决定了Oracle数据库的运行性能,SQL语句几乎占据了数据库80%的资源,这也说明了SQL语句优化的重要性,因此需要对SQL语句进行合理设计,通过提高SQL语句的执行效率来提升数据库的性能。在SQL优化的过程中,需要对select语句进行优化,使select语句占用最少的硬件资源,同时通过最快的响应速度来提升数据库的响应时间。在SQL优化的过程中,应该注意要高效利用索引这一工具,不可直接对大数据进行全盘扫描,同时也可以通过临时表来提升优化效果,此外,一句SQL语句并不一定是优化的最佳方案,过于复杂的SQL语句反而有弊无利,应该在不影响系统查找准确性的前提下,提升系统的响应效率。

以对SQL进行优化为例,第一种方法,可以将索引的组合顺序与用户所查询的顺序尽量向一致性进行排序,以此来完成SQL优化。第二种方法,在SQL查询时,避免使用“*”号,尽可能地使用一些确定的列名,例如避免使用“Select*From table”,可以使用“Select col1,col2,col3 from table”,通过更加准确的查询,来更加直接快速地确定所需的数据。通常在数据库中查询数据时,确定的列名可以使索引快速地对数据库的准确位置进行扫描,相对于全盘扫描来说提升了反应速度,如在查询时使用“*”进行搜索,则在搜索过程中会对无关紧要的数据区域进行查询,产生大量无用的数据传输,影响了网络速度,降低了查询效率。第三种方法,在查询时应该注意尽量减少复杂的连锁查询,复杂的连锁查询会使系统在查询时难以高效率地完成真正所需要的查询工作,影响数据库的性能。如果在产品中有较多的“or”,则可以将查询内容分为数个更加简单的单向查询,将数个查询内容用“union”进行连接,更有效地利用索引工具,进而提升数据库的响应速度。第四种方法,在查询复杂的SQL时,可以在最外层放置分页语句,以此来提升查询速率。

3 通过索引优化数据库性能

索引相当于是数据库的目录,通过索引能将查找数据的范围缩小,进而提升查找速率,因此数据库的索引是否能够被正确使用直接影响到数据库的性能,故而在使用过程中需要不断地定期对数据库的索引进行检查,删除不必要的索引,按需增加新的索引,或者对索引进行重构,以此来提升数据库的性能。添加新的索引后,只需通过对索引进行搜索就可以快速地获取相关的数据内容,因此需要定期添加新的索引。在扫描数据库时,为了提升扫描速率,应该确定扫描数据的具体位置,不可对全盘进行扫描,而这时就需要给大表添加新的索引,通过索引的位置记录来获得数据的位置记录,从而快速访问相关的数据,一般来说,如果在查询过程中只需要某一小段字符,则可以在对应的字符上建立新的索引,在再次访问时,只需查找索引记录就可返回数据内容,访问索引可以减少磁盘的读写次数,从而提升系统的反应速率,降低响应时间。而且这种方式还不需要对数据表进行查询,单单通过索引就可直接得到查询结果,因此操作较为简单。同样,如果大表中的历史记录较多,但记录所返回的次数较少,则这种情况下也可以通过索引来快速地完成查询指令,一般来说是通过检索条件来建立新的索引,在SQL查询时,可以通过新的索引来得到历史记录的地址,而且由于返回的次数较少,这也意味着在使用该种方式时逻辑读少,可以快速地完成数据访问工作。当然在添加索引后,应该尽量选择联合索引,联合索引比多个索引的效率更高。

以删除不必要的索引和对索引进行重构来优化数据库的性能为例,由于在系统运行的过程中,一些索引所对应的内容可能已经删除,或有一些索引与对应的数据并不符合,因此这些索引已经没有了对应的存在价值,相反还会浪费储存空间,降低系统的运行速率,甚至在某一些特定的环境下,这些没有价值的索引还会导致系统的解析效率下降,影响数据库的相关功能。因此可以对数据库进行30天的数据监控,在30天后根据监控的结果删除系统中不必要的无用索引。目前数据库的索引只可以进行索引插入和索引删除两种操作,因此在内容更新时,对索引进行更新并不是传统意义上的更新換代,而是将对应的旧记录的位置标记为删除,在新的位置插入新的索引,这就意味着在索引更新的过程中,旧的索引并没有被删除,而是以另一种方式所存在,同时新的索引不断增加,在不断地更新换代之后,系统中的索引关键字不断增多,然而其中被标记为删除的无用索引并不存在相应的价值,不仅占据了相应的内存,而且在对数据进行搜集时,大量的索引反而需要数据库对大量无用的索引进行扫描,降低数据库的处理效率。因此,如果系统的DML操作频繁,则需要定期对索引进行重构。技术人员可以每年两次对系统中的索引进行整理,搜集出其中无用的索引删除,如果有索引进行过更新,则将旧的索引删除,成立新的索引,以此来保证在降低内存的条件下完成索引的真正更新换代,释放无效索引所占据的内存,同时保持较少的索引量,提升数据库的数据处理效率。

4 通过数据库分区优化数据库性能

数据库分区指的是将表和索引划分为不同的区域,在搜索的过程中,通过明确数据所在的区域来提升数据库性能的一种方法。数据库分区能够将大表和索引划分为更方便管理的多个小区域,在数据处理的过程中,相对于整个大表和索引,小的区域能够更快捷地完成数据处理、数据分析工作,提升了数据库的性能。在将数据库划分成小的区域后,数据库所需的管理时间大幅度降低,同时数据库的处理能力也会有效提升,存在故障的数据区域会自动被屏蔽,使得数据库的性能有效提升。数据库分区能够增强数据库的可用性,如果数据库中的某一个表的分区出现了某种故障,在这种情况下该表的其他区域数据可以继续使用,避免了某一种故障影响大量的数据,提升了数据库的应用便捷性。同样这也使得数据库的维护更为方便,如果某一表中出现了故障,则这一故障只会使得这一分区的数据不可继续使用,在维修时,只需对这一分区的数据进行维修,降低了维修难度。数据库分区可以通过分级储存来提升数据库的性能,不同数据的使用频率不同,高频率的使用数据放在I/O的高端存储或闪存上,使得在需要时能够快速获取相关数据,低频率的使用数据放在I/O的低端存储上,以此来高效地利用系统的I/O性能,提升数据库的响应速度。此外,数据库分区最显著的优点就是在对分区对象进行查询时,只需搜索对应的分区即可快速得到相关的数据,有效提升了数据的检索速度。常见的数据库分区方式有列表分区和范围分区两种方式。

以对数据库分区方式进行研究来提升数据库的性能为例,可以选择Windows server2003 x64的操作系统,选择8GB内存、CPU为AMD  P8384 2.7GHz×2、Oracle 10.2.0.1的配置,在100M共享宽带的环境下进行测试,测试的数据库为默认配置,在测试之前没有对数字库进行优化,同样在每一次测试之前都会将数据库清空缓存并重启,因此,测试结果不存在数据缓存所造成的影响,保证了数据的科学性。在测试中发现对于相同的数据量、相同分区个数、每一个分区的数据量大致相同的情况下,未分区性能<范围分区性能<列表分区性能,由此可见,数据库分区尤其是列表分区,能够大幅提升数据库的处理速度;数据量越高,列表分区的优势越明显。在测试过程中通过SQL分页来对记录进行查询,读取到了15条记录。分区字段上配备有全局索引,而其他字段上无相应的索引。由测试可以得出结论,数据库分区能够有效提升数据库的性能,而列表分区比范围分区的效果更好,且待处理的数据量越多,则列表分区的效果越明显。

5 总结

本文根据数据库的常见运行问题分析了影响数据库运行速率的主要原因,并根据这些原因给出了相关的解决措施,认为可以通过SQL优化、索引优化和数据库分析来提升数据库的性能,本文所提出的数据库优化方法适用于大多数的数据库,因此希望能够通过本文的相关内容推进我国数据处理技术的发展。

参考文献:

[1] 谌林,郑泓楠.分布式数据库查询处理和优化算法[J].中外企业家,2015(15):145.

[2] 黄卓洲.浅谈SQL数据库优化技术在信息管理系统中的应用[J].中国新通信,2020(2):104.

[3] 吴尚,张靖,徐道磊.Oracle数据库性能的优化设计思路研究[J].数字技术与应用,2019(12):167,169.

[4] 田程程,周宏伟,王滕.Oracle数据库系统的性能优化研究[J].电子制作,2019(24):45-46,56.

【通联编辑:李雅琪】

猜你喜欢
性能优化数据库
SQL Server数据库性能优化的几点分析