彭 佩
摘要:本文对数据库应用系统的各个部分特别是数据库服务器、SQL语句、存储过程等的性能调整作了大量的分析和试验,提出了一些具体的性能调整方法和措施,并取得较好的应用效果。
关键词:SQL;数据库;性能优化
一、 基于SQLServer2000的数据库性能调整
1.系统规划
数据库服务器是整个数据库应用系统的核心,它的性能高低直接影响整个系统的性能。SQL Server2000数据库的许多方面都可以被优化或调整,以便给予系统更好的性能,诸如硬件、SQL Server配置、数据库设计、SQL语句、SQL索引、复制、备份与恢复及其他。
2.优化SQL语句
SQL优化的实质就是在结果正确的前提下,用优化器可以识别的语句,充份利用索引,减少表扫描的I/O次数,尽量避免表搜索的发生。其实SQL的性能优化是一个复杂的过程,上述这些只是在应用层次的一种体现,深入研究还会涉及数据库层的资源配置、网络层的流量控制以及操作系统层的总体设计。在这里就不展开了,在第五章将有专题讨论。
3.存储过程调整
SQL Server存储过程是用Transact-SQL语句PROCEDURE创建的,并可用ALTER PROCEDURE语句进行修改。存储过程定义包含两个主要组成部分:过程名称及其参数的说明,以及过程的主体所有设计优良的Microsoft SQL ServerTM 2000应用程序都应当使用存储过程。不论是否将应用程序的业务逻辑写入存储过程都应如此。
4.高性能备份与恢复
需要确定数据的可用性要求,以便选择适当的备份和还原策略。总体备份策略定义备份的类型和频率以及所需的硬件特性和速度。测试备份和恢复过程。测试有助于确保拥有从各种故障中恢复所需的备份,并且当真正的故障发生时可以快速平稳地执行恢复过程。
5.用户管理
工程设计企业传统的组织结构按专业及职责设置,是面向部门的层次管理结构。这种组织结构管理层次多,各个机构间协调复杂,造成了信息交流和传递困难,设计周期长等问题。
二、优化SQL语句和存储过程
数据库调整中一个很重要的方面就是应用程序的调整,关键在于SQL语句的优化和存储过程的应用。本章结合具体的项目实践,讨论了一些关于SQL语句的优化和存储过程的应用的方法和措施。
1.优化SQL语句
SQL优化的实质就是在结果正确的前提下,用优化器可以识别的语句,充份利用索引,减少表扫描的次数,尽量避免表搜索的发生。其实SQL的性能优化是一个复杂的过程,上述这些只是在应用层次的一种体现,深入研究还会涉及数据库层的资源配置、网络层的流量控制以及操作系统层的总体设计。
2.存储过程
存储过程(Stored Procedure)是一组编译在单个执行计划中的Transact一SQL语句。Microsoft SQLServerTM2000的存储过程可以通过输入参数接受输入,并能够以下面四种方式之一返回数据:输出参数,既可以返回数据(整型值或字符值等),也可以返回游标变量(游标是可以逐行检索的结果集);如果返回代码,始终是整型值;SE比CT语句的结果集,这些语句包含在该存储过程内或该存储过程所调用的任何其它存储过程内;可从存储过程外引用的全局游标。
3.B/S模式下的备份与恢复
B/S模式下的备份与恢复的实现步骤:
(1)编写存储过程
存储过程的编写需要遵循SQL语言语法,在SQLServer企业管理器中打开master数据库,打开存储过程,右键新建存储过程,会出现存储过程属性的SQL编辑器,然后按语法直接编写。下面显示文件备份的编写过程。
(2)JSP语句调用存储过程
为清楚说明JSP语句调用存储过程的实现过程,现将JSP语句按功能分解:
—实现与数据库连接功能
Driver DriverCallablel=(Driver)C1ass.forName(MM_Cmaster_ DRIVER). newInstance();
Connection ConnCallablel =DriverManager. getConnection (MM_Cmaster_ STRING, MM_Cmaster_ USERNAME,MM_Cmaster_PASSWORD);
—实现调用存储过程功能
CallableStatement Caliablel=ConnCallablel.prepareCall(“{?=call dbo.backup_diffrience(?,?)}”);
—实现存储过程中变量传递功能
Object Callablel_data;
Callablel.registerOutParameter(1,Types.LONGVARCHAR);
Callablel.setString(2, Callablel_bname);
Callablel.setString(3, Callablel_dir);
—实现存储过程执行和关闭功能
Callablel.execute();
ConnCallablel.close();
三、结论
文对基于SQL Server2000的数据库性能调整进行了较为全面、系统的研究,希望总结出数据库性能调整的一般性原则和方法,并取得了一些成果。
参考文献:
[1]袁鹏飞:SQLServer数据库应用开发技术人民邮电出版社1998. 5.
[2]赵 敏:基于SQL Server性能调整和测评方法计算机工程2000.5.
[3]Andrew S. Tanenbaum. Computer Networks. Prentice Hall Inc,1996.