网站系统数据库优化技术

时间:2022-06-11 08:22:45

网站系统数据库优化技术

摘要:优化网站应用系统,结合当前网站访问数据库的特点,使用存储过程处理查询,在网站首页面或类似的页面中,多个类似的栏目需要多次访问数据库时,利用存储过程查询一次读取全部数据,分栏目在内存处理分别呈现,减少网络流量与数据库操作次数。在大批量插入数据与更新数据时优化系统操作数据库的连接次数,实现批量操作,在内存中处理好数据再批量更新与增加数据,大大提高了系统的工作效率。

关键词:数据库优化;存储过程;查询优化;批量操作

中图分类号:TP311.13文献标识码:A文章编号:1009-3044(2011)30-7360-03

Database Optimization for Web System

ZHANG Shi-hua, LI Jian-jun, CAO Gui-hong, LUO Min

(Network Information Center, Hunan Institute of Engineering, Xiangtan 411104, China)

Abstract: Optimized website application system, combining the characteristics of current website access database, use stored procedure to inquire database in homepage or similar pages, multiple similar columns require multiple access database in common program, using a stored procedure inquires read all the data in memory processing, reduce network traffic respectively with present database operation times. In mass data inserting and updating, realize batch operation to optimize system operation and database connection times, handle data update and increase in memory, finally, update batch data to database, greatly improving the system efficiency.

Key words: database optimized; stored procedure; query optimization; batch operation

随着网络的普及及应用的拓展,数据库应用系统网络化也日益应用广泛,基于Web数据库系统的应用系统遍布网络,国内外研究机构、学者提出来许多数据库性能调整的理论、模型和应用系统,有的研究机构提出了一种基于Web的数据库系统设计,运行性能调优的方法。包括关系数据库配置优化、应用模型设计优化和编程优化等等。通过内存、分段、磁盘参数和时间相关参数的设置,调整好关系数据库管理系统的运行环境[1]。在程序设计时,通过减少应用系统与数据库的连接和断开操作,建立和使用多种索引,采用存储过程并优化SQL语句可以优化应用系统性能。数据库应用性能的优化通常可以通过对网络、硬件、操作系统、数据库参数和应用程序算法的设计优化来进行,有研究表明:对网络、硬件、操作系统、数据库参数进行优化获得的性能提升,全部加起来只占数据库应用系统性能提升的40%左右,而60%系统性能提升则来自对应用程序的优化[2-4],也有研究提到应用系统的开发应强调功能的完整性、系统结构的清晰并具有良好的可扩展性和可维护性,而不是要追求系统性能为主要目的,但同时兼顾快速的系统响应速度是系统设计的主要目标。针对基于B/S模式的网站数据库应用系统,特别是对于一些特殊的专用的WEB数据库应用系统的优化与应用策略还没有形成一整套通用的方案。

数据库可以通过对网络查询、系统硬件、数据库设计参数和应用程序算法设计的优化来进行优化。据统计,对网络、硬件和数据库参数进行优化只能提升数据库系统40%左右性能,而对应用程序的算法及编程优化则能对数据库系统性能可以提升60%以上。

1 数据库优化途径

首先,数据库结构设计是应用程序设计的应用基础,其性能好坏直接影响应用程序的性能与功能扩展。数据库中的表是最基本的数据存储单位,理论中一般按照第三范式的标准进行规范化。但是,有时将一个表拆分为多个相关表,查询时需要多表连接,这就增加了连接的复杂度,降低了查询速度。所以,有时要通过适当反规范化合并表,保留冗余列并增加派生列等来分别提高单次应用查询的速度。

在数据库中建立索引是加快查询速度最有效的措施。在数据库设计中根据需要针对基本表上最有可能查询的属性或多列建立索引。系统在存取数据时会自动选择合适的索引作为存取路径,以加快存取速度。一个基本表可以针对不同的属性建立多个索引。但建立多个索引时也应注意:索引并不是越多越好,索引的维护会降低数据库的运行效率[5]。

建立索引应注意以下几点:

1) 主键作为WHERE子句的条件,应建立主索引;

2) 适当地在经常用到的查询列上创建非聚集索引;

3) 连接频率高的列,在作为外键的列上建立索引,不需要连接的字段则不生成索引;

4) 在频繁进行范围查询、排序或分组的列上建立索引;

5) 值范围窄的索引具有比较高的效率。

2 应用程序性能优化

应用系统处理海量数据,传统处理方法存在的问题对每一个要处理的操作,直接对目标表执行对应的SQL操作(或存储过程),使用的参数化SQL或通过DataSet与DataAdapter来间接处理。这样每个用户批量提交数据时,需要执行与数据记录数量相等的SQL操作,虽然数据库进行了优化,单次执行SQL的效率并不低,但由于一次执行的指令多,随着目标数据容量的增加,效率会逐步降低,最终不可忍受,极端情况会导致进程崩溃。SQL语句的优劣影响应用系统的运行速度上差别可以达到2个数量级及以上[6],所以编写出的SQL语句质量是提高系统的可用性的关键因素。以下是优化SQL语句的几个原则:

1) 数据类型要统一。例如float和int,char和varchar,binary和varbinary是不完全兼容的,数据类型的不兼容无法使用预先定义好的索引。

2) 尽量不要在WHERE条件里使用非聚合表达式。非聚合表达式不能利用索引,会导致查询速度大大下降。

3) 尽量避免在WHERE子句中使用函数或表达式。因为若WHERE子句中使用函数或表达式,分布统计信息时优化器就不能使用。

4) 尽量少用或不用LEFT JOIN和NULL。LEFT JOIN消耗资源,因为它包含与NULL(不存在)数据匹配的数据。因此在构造查询语句时尽量避免使用LEFT JOIN和NULL。

5) 尽量避免使用非打头字母搜索在索引过的字符数据中搜索。

6) 避免对大型表进行全表检索。

上一篇:中医院校计算机基础课程改革初探 下一篇:在Excel中实现含累加式单元格的求和统计功能