(计算机应用技术专业论文)网络安全审计系统中超大型数据库的性能优化.pdf_第1页
(计算机应用技术专业论文)网络安全审计系统中超大型数据库的性能优化.pdf_第2页
(计算机应用技术专业论文)网络安全审计系统中超大型数据库的性能优化.pdf_第3页
(计算机应用技术专业论文)网络安全审计系统中超大型数据库的性能优化.pdf_第4页
(计算机应用技术专业论文)网络安全审计系统中超大型数据库的性能优化.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(计算机应用技术专业论文)网络安全审计系统中超大型数据库的性能优化.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中南民族大学硕士学位论文 - i - 摘 要 随着信息社会的不断发展,各种大型企业需要保存的业务信息越来越多,使 得数据库的规模也变得越来越大。数据库规模的不断变大,将会导致数据库系统 性能的急剧下降,使得数据库维护的成本不断上升,甚至造成周期性的停机。为 了避免或最大程度地减小这些情况的发生,需要采用一些技术或策略对超大型数 据库的性能进行优化。 对超大型数据库的性能进行优化,需要充分了解数据库管理系统底层实现机 制,全面分析数据库应用系统的性能瓶颈问题,从中找出能够使性能提升最多的 方面,并采取适当的优化策略集中进行处理和优化。本文在研究了影响数据库性 能的各个方面的基础上,提出一种超大型数据库性能问题的解决方案,并将其应 用于网络安全审计系统中。 本文将数据库应用系统分割为数据库结构设计、数据库访问接口、基于动态 分区的访问接口以及应用程序四个相对独立的模块,并对每个模块分别进行优 化。这种分割降低了应用程序开发的复杂度,增强了数据库应用系统的健壮性, 提高了代码的复用率。 其中,基于动态分区的访问接口及其优化是本文的重点,也是难点。该接口 主要实现数据库动态表分区以及对动态表分区的联合访问(如数据库查询和统 计)等等,对其进行优化设计不仅能够极大地改善超大型数据库应用系统的性 能,还可以为第三方用户提供基于动态分区的通用访问接口。 本文最后通过大数据量的性能测试验证了方案的可行性,并提出了一些需要 改进的地方以及今后进一步的工作。 关键词:超大型数据库;性能优化;连接池;动态分区 网络安全审计系统中超大型数据库的性能优化 - ii - abstract with the constant development of the information society, there is more and more business information that various large-scale enterprises need keeping, make its databases scale larger and larger too. the becoming large unceasingly of database scale, will cause the sudden drop of the performance of the database system, the cost making the database maintained is rising constantly, even lead to periodic shutting down. in order to avoid or reduce the occurrence of these situations to the greatest extent, needs to use some strategies to optimize the performance of the ultra large- scale database. optimizing the performance of the ultra large-scale database, needs to understand the realization mechanism of database management system fully, analyzes the performance bottleneck of the database application system in an all-round way, finds out the most aspects of promoting performance from it, adopts the appropriate optimization tactics and concentrates on dealing with and optimizing. this text propose one settlement for the performance problem of the ultra large-scale database on the basis of studying all aspects of influencing database performance, and carries on the realization to it in a network security auditing system. this text mainly divides the database application system into four relatively independent modules that are made up of the structural design of the database, the access interface of the database manage system, the access interface based on the database dynamic partitioning as well as the application, and optimizes each module separately. this kind of division reduced the complexity of developing the application procedure, strengthened the database application system vigorous and healthy, enhanced the duplicate using rate of the code. among them, the access interface that is based on the database dynamic partitioning is the key point of this thesis, also is the difficulty. this interface mainly realizes the database dynamic partitioning as well as accesses these dynamic partitioning (for example database query and statistics) and so on, carries on the optimized design to it not only to be able enormously to improve the performance of the ultra-large type database application system, but also may provide common access interface for the partys user based on the dynamic partitioning. this thesis finally has confirmed the settlement feasibility through performance test of the great quantity of data, and proposed some need improved places as well as 中南民族大学硕士学位论文 - iii - further work in the future. keywords: very large database; connection pool; dynamic partition; performance optimization 中南民族大学中南民族大学 学位论文原创性声明学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取 得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其 他个人或集体已经发表或撰写的成果作品。 对本文的研究做出重要贡献的个 人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果 由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学 校保留并向国家有关部门或机构送交论文的复印件和电子版, 允许论文被查 阅和借阅。 本人授权中南民族大学可以将本学位论文的全部或部分内容编入 有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本 学位论文。 本学位论文属于 1、保密,在_年解密后适用本授权书。 2、不保密。 (请在以上相应方框内打“” ) 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 中南民族大学硕士学位论文 - 1 - 第 1 章 绪 论 1.1 研究背景 目前国内 internet 发展迅速,人们越来越多地利用联网方式快速便捷地与外 界交流信息,国家许多政府机关和企事业单位也逐渐拥有了自己的内部网络,并 利用与 internet 的连接和外界进行通讯。互联网一方面为人们的工作和生活提供 了便利,另一方面也为管理带来了不便。大型的网络系统往往包含有很多敏感或 涉密信息,如果这些信息被有意或无意中泄漏出去,将会产生严重的后果。另外 由于与 internet 的互连,不可避免地使一些不良信息流入。为防止与追查网上机 密信息的泄漏行为,并防止不良信息的流入,可以在网络系统与 internet 的连接 处对进出网络的信息流实施内容安全审计。 对于计算机网络来说,所谓安全审计,就是识别与防止网络攻击行为、追查 网络泄密行为。具体包括两方面的内容,一是采用网络监控与入侵防范系统,识 别网络各种违规操作与攻击行为,即时响应(如报警)并进行阻断;二是对信息 内容的审计,可以防止内部机密或敏感信息的非法泄漏。 基于内容的安全审计是一个安全的网络必须支持的功能特性,它能够处理多 种网络协议,包括 http、ftp、smtp、pop3 等等;通过审计系统可以审查是 谁在什么时间、做了什么操作等等,避免公司员工在工作期间通过 internet 做一 些与本职工作无关的事情,提高工作效率,而且可以避免内部人员利用互联网的 便利,把公司的商业机密和科研成果传播出去;通过实时监控网络流量,发现问 题可以及时报警和切断连接,并保留相关日志。此外,网络安全审计系统还可以 作为安全执法部门侦查网上犯罪的一种技术手段,控制一些人利用互联网传播不 良信息,它还能起到一定的威慑作用,帮助国家执法部门维护社会的稳定和安 宁。同时,系统事件的记录能够更迅速和系统地识别问题,并且它是后面阶段事 故处理的重要依据,为网络犯罪行为及泄密行为提供取证基础。另外,通过对安 全事件的不断收集与积累并且加以分析,有选择性地对其中的某些站点或用户进 行审计跟踪,以便对发现或可能产生的破坏性行为提供有力的证据。 基于内容的网络安全审计系统,为了进行事后统计分析和提供证据,必须将 用户指定范围内所有采集到的数据信息存入数据库以及相对应的文件中。能够保 存较长时间范围内的历史数据信息对于网络安全审计系统来说是非常重要的,其 时间范围的选择应该满足各种最终用户的需求,至少应达到国家安全产品的级 别,通常情况下需要保存最近三个月的历史数据信息。 网络安全审计系统中超大型数据库的性能优化 - 2 - 另外,目前网络安全审计系统定位于 100m1000m 以上的高端网络用户, 其数据存储和处理规模非常巨大,对这些大量历史数据的快速处理也是一个非常 复杂的问题。 在实际的电信网络环境中,流量最大的是 http 协议,大约占总流量的 13.833%。在前期对 http 协议的测试过程中,平均每个包的大小为大约 800 字 节,按下面假设,可以估算 http 协议每天的会话数目。 (1) 假设每个 http 协议有 15 个包,即每个会话 15*800=12k。 (2) 按照 http 协议占总流量的 15%来计算。 (3) 在 1g 的网络中,每天工作时间大约 10 个小时,这时网络满负荷运 载,其他时间假设网络中没有流量。 从上面的数据可以计算出每天 http 协议流量为 1g*60*60*10*0.15/8= 675g,每天 http 协议的会话数目为 675g/12k=56.25m。 因此,1g 的电信网络中一天内 http 会话数目在 5800 万条左右,再加上网 络安全审计系统监控的其他协议(如 ftp、smtp 和 pop3 等) ,每天会话总数 大约为 6000 万条。每一条会话信息对应于一个数据文件和数据库中的一条数据 记录,这样网络安全审计系统每天大约会增加 6000 万个数据文件和数据记录, 其中数据文件存放数据流形式的会话信息,数据记录为该数据流的摘要信息,专 门用于数据的查询统计和检索等。如果每条数据记录的数据信息为 1.2k,那么 三个月的数据信息将达到 1.2k*56.25m*90=6t。如果每个数据文件平均字节长 度为 10k,那么三个月所有文件将会达到 10k*57m*90=50t 左右,当然这个容 量大小还不包括其对应的还原文件的字节长度。 从上面的数据可以看出,基于内容的网络安全审计系统其数据库规模非常 大。数据库规模的不断变大,将会导致数据库系统性能的急剧下降,使得数据库 维护的成本不断上升,甚至造成周期性的停机。为了避免或最大程度地减小这些 情况的发生,需要采用一些策略对网络安全审计系统的性能进行优化。 1.2 研究目标与内容 企业级的应用程序都需要从数据库中快速存取大量的数据信息,所有的这种 与数据库交互的过程都需要对数据库进行访问。 应用程序对数据库的访问往往不能按照您想要的方式进行响应,它要么不返 回数据,要么耗费的时间长得出奇,远远超过用户的期望值。如果它降低了数据 库应用程序的速度,使得用户等待的时间过长,用户就会很不满意,也不会听你 解释为什么会耗费这么长时间,这就是数据库性能问题。 在数据量愈来愈大,并行访问的用户愈来愈多的情况下,有效地提高数据库 中南民族大学硕士学位论文 - 3 - 系统的吞吐量和减少事务的响应时间是超大型数据库系统发展的关键所在。在企 业级的实际解决方案中,应用的合理与否在很大程度上决定了数据库性能的好 坏。要做到应用合理,数据库设计和查询及其性能优化是需要着重考虑的地方。 本文研究的目标主要是通过对超大型数据库的性能进行优化来改善各种超大 型数据库的访问速度,提高超大型数据库系统的运行性能和效率。 目前很多正在运行的超大型数据库系统,由于早期数据库设计的非规范性以 及未考虑到后期的扩展,造成系统性能低下以及不易扩展和升级等诸多问题。 为了改善各种超大型数据库的访问速度,提高超大型数据库系统的运行性能 和效率,需要对超大型数据库的性能优化进行深入的研究,全面分析系统的性能 瓶颈问题,从中找出能够使性能提升最多的主要方面,并对主要问题集中进行处 理和优化。 本文在研究了影响数据库性能的各个方面的基础上,提出一种解决超大型数 据库性能问题的方案,并将其应用于网络安全审计系统中,最后通过大数据量的 性能测试验证该方案的可行性。 1.3 国内外研究现状 目前国内外各商业公司或企业都对其内部网络信息的安全非常重视,极力防 范其机密商业信息通过网络向外传播,各安全公司都相继推出各自的安全审计产 品。在国外,ca 公司的 sessionwall 是基于安全审计的典型产品。在国内,天融 信、复旦光华、天玥、中软和其他一些厂商也推出了基于内容的安全审计产品。 早期的这些产品基本上一般都是基于 c/s 架构和支持 10m100m 的中低端网络 环境,支持 1000m 以上的高端网络环境非常少见。而且这些产品只支持中小型 的数据量,其数据库设计和系统实现都比较简单,不用考虑超大型数据库的性能 问题。目前一些大的公司或企业通常都将产品定位于 b/s 的架构,毕竟基于 b/s 架构的系统易于部署、维护和升级。基于 b/s 架构、支持中高端网络环境、追 求高性能,是未来安全审计产品的发展趋势。 此外,国外的一些公司提供了超大型数据库系统的解决方案,其中以微软和 sybase 公司为代表。微软公司在 sql server 2005 中提出了支持企业级的智能化 解决方案,对数据分区进行优化管理,还封装了数据挖掘功能。sybase 公司也 提出了自己的超大型数据库系统的解决方案,在其解决方案中也使用了表分区技 术。 表分区按照实现的方式不同可以分为静态和动态两种。所谓静态表分区就是 在数据库初始化的时候按照预定格式一次性生成所有分区。而动态表分区则是应 用程序根据一定的规则动态创建所需分区,并对这些分区进行动态管理和维护。 网络安全审计系统中超大型数据库的性能优化 - 4 - 采用静态表分区技术的应用程序实现比较简单,但是可扩展性较差。采用动态表 分区技术的应用程序实现要复杂一些,但是开发出来的应用程序可扩展性较好, 能够根据不同的需求进行扩展。 静态表分区是目前超大型数据库系统解决方案中普遍采用的一种技术,到目 前为止,还未见一种比较完善的基于动态分区的解决方案。另外,将基于动态分 区的超大型数据库系统性能问题的解决方案应用到网络安全领域还有许多问题值 得研究。 1.4 论文创新部分 本文的创新之处在于: (1) 提出一种基于动态分区的超大型数据库性能问题的解决方案,并将 其应用于网络安全审计系统中; (2) 能够为第三方用户提供独立于数据库设计的基于动态分区的通用访 问接口。该接口经过优化处理,能够较大地改善超大型数据库系统的性能,主要 包括数据库动态表分区以及对动态表分区的联合访问(如数据库查询统计)等。 1.5 本文的组织 本文共分为五个部分: 第一部分,绪论。概述论文的研究背景、研究目标与内容、国内外研究现状 和本文的组织。 第二部分,数据库性能优化概论。本章主要概述性能优化的基本概念、目 标、方法以及性能优化的主要内容,为论文下一步工作的开展奠定基础。 第三部分,数据库设计和优化。本章概述超大型数据库性能优化中一个重要 方面数据库设计和优化,主要包括逻辑数据库和物理数据库的设计和优化。 第四部分,数据库访问技术及优化。本章首先对 visual c+开发平台下比较 常用的数据库访问技术进行比较和分析,最后确定采用 ado 作为网络安全审计 系统访问数据库的接口,并对 ado 接口进行封装和优化,为系统的实现提供访 问数据库的底层接口。 第五部分,系统实现和优化。本章首先提出一种解决超大型数据库性能问题 的方案,然后将其应用于网络安全审计系统中,最后通过对影响数据库系统性能 的主要方面进行优化并通过大数据量的性能测试验证方案的可行性。 结论部分,对本文的工作进行了总结与展望。列出了论文中较有特点的工作 和存在的不足,给出了下一步的研究方向。 中南民族大学硕士学位论文 - 5 - 第 2 章 数据库性能优化概论 2.1 性能优化概述 数据库性能优化就是通过采用一定的方法或策略来改善数据库系统的运行性 能和效率的过程 12。 对于所有的数据库应用程序来说,不管数据库和应用程序设计得有多么的完 美,程序编码质量有多高,其整个系统的性能总是会有进一步改善的可能。有很 多方法可以采用,如增强服务器的物理性能,修改服务器的参数配置以及修改物 理数据库的结构等等。 为了尽可能提高数据库的性能,必须在准确地估计并发用户的数量、应用程 序的读写要求以及应用和数据的规模后,全面分析系统的性能瓶颈问题(例如处 理器数量和速度、内存容量、网络或磁盘 i/o 等) ,从中找出能够使性能提升最 多的方面,并采取适当的优化策略集中进行处理和优化。 在采用某些方法或策略对数据库性能进行优化的过程中,有时候需要以牺牲 硬件资源为代价来提高系统的性能,有时需要以牺牲局部性能的改善而换取整个 系统性能的极大提高。在特殊的情况下,应该权衡某些相互冲突的优化策略,从 而最大程度上提高系统的性能。 另外,在系统设计的初期充分地考虑性能问题对于整个系统性能的提高起着 至关重要的作用。对性能问题的考虑不应该局限与某个开发周期,也不是在最后 系统实现阶段才考虑,而应该贯穿于系统开发阶段的全过程。 通 常 数 据 库 性 能 优 化 是 在 一 个 特 定 的 数 据 库 管 理 系 统 ( database management system,dbms)支持下进行的,即以现有的 dbms 为基础。结合 目前的实际情况,本文中所有对数据库管理系统的优化操作都是以 sql server 2000(支持所有版本)为基础。 2.2 性能优化的目标 数据库系统性能的好坏可以根据系统对用户操作请求的响应时间以及数据库 吞吐量来衡量。响应时间就是用户提交查询操作到查询结果集中的首行以可视形 式返回给用户的这段时间。系统响应时间越短则表明系统性能越好,如果系统响 应时间大大超过了用户的期望值则表明系统性能非常差。吞吐量是数据库服务器 在给定时间内处理查询语句数目的度量值,该值越大表明性能越好。随着用户数 网络安全审计系统中超大型数据库的性能优化 - 6 - 目的不断增加,大量用户并发的操作增加了对有限数据库服务器资源的竞争,进 而导致响应时间的增加和总体吞吐量的减少。因此控制在同一时间并发访问系统 的用户数量,可以减少系统的响应时间,增加数据库服务器吞吐量,从而提高系 统的性能。 性能优化的目的是通过最大程度降低网络的负载,减少磁盘的 i/o 量和 cpu 的使用率,从而将用户操作请求的响应时间降低到最小并且最大限度地提 高整个数据库服务器的吞吐量,以获得最佳性能。为此,需要在充分了解数据库 管理系统底层实现机制的基础上,全面分析数据库系统的规模和需求,正确设计 数据库的逻辑结构和物理结构,合理设计和优化数据库查询,并评估和协商解决 数据库使用冲突(如联机事务处理与决策支持)的平衡措施。 性能优化的主要目标是消除影响系统性能的瓶颈。瓶颈(bottleneck)是限 制系统性能的重要因素,它是由于对系统资源过多需求所造成的。瓶颈可能是硬 件也可能是软件,或许它们都是。产生瓶颈的原因具体包括如下几个方面: (1) 系统资源不足,需要添加或升级组件,如内存资源不足等; (2) 同一类型的资源工作负荷不均匀,如一个磁盘被独占享用等; (3) 系统资源配置不正确,如虚拟内存设置过小等; (4) 系统资源出现故障,如磁盘驱动器损坏或信息丢失等。 基本上所有的系统都存在瓶颈,只不过是程度上的不同罢了。在识别瓶颈的 时候需要关注以下四个方面: (1) 内存 分配的内存不足将会使得只有少量的数据能够驻留在高速缓存中,而大量的 数据需要从硬盘驱动器中连续地读取,从而造成过多的数据页交换,影响系统的 性能。 (2) cpu 处理器使用 当一个进程需要处理器的循环数超过可获得的循环数时,就产生了处理器瓶 颈。持续的 cpu 高使用率可能表明需要升级或者添加处理器。 (3) 磁盘 i/o 性能 磁盘 i/o 性能是导致系统瓶颈最常见的原因,较低的磁盘 i/o 速度将导致数 据库吞吐量的降低,进而影响系统性能。 (4) 用户数 非合理地配置并发用户的数目会降低性能的性能。大量的并发用户使用数据 库应用程序将会增加数据库服务器的负荷,影响数据库服务器的处理速度。 中南民族大学硕士学位论文 - 7 - 2.3 性能优化的主要内容 性能优化主要包括对硬件配置、系统(操作系统与数据库管理系统)配置, 以及运行在这些配置基础之上的应用的优化。 2.3.1 硬件配置 硬件配置主要是为了满足特定业务系统的性能要求提供足够的硬件资源,而 不是让它成为系统性能的瓶颈。因此,在进行系统设计之前,必须给业务系统进 行定位,看其到底是支持中小型、大型还是超大型的应用,是支持大量的并发用 户还是少量的甚至是单个的用户等等,从而适当估计满足业务系统所需要各种资 源的最低配置。 为了改善数据库系统性能,我们需要对影响系统性能的硬件资源进行扩充和 优化配置,这些资源包括内存、cpu、i/o 资源或者所有这些资源的组合。 在通常情况下,数据库的规模越大,其系统对硬件的要求就越高。另外,对 系统硬件的要求还与并发用户/会话的数目、事务吞吐量和数据库应用程序的类 型(联机事务处理与决策支持两种类型)等因素有关。例如,学校图书馆的这类 很少进行数据更新的数据库要比相同规模的经常进行数据更新的数据库对硬件的 要求要低的多。除了对硬盘驱动器的存储要求之外,对于超大型的数据库还需要 更多的内存、更快的处理器,使得更多的数据能够在内存中高速缓存,进而使得 超大数据量的数据库查询能够得到快速处理。 在大型的数据库应用中,高性能的硬件资源是非常重要的,它是系统运行的 物质基础,只有足够的硬件资源才能最大限度地发挥系统的性能。对于所有的大 型的数据库应用来说,i/o 资源的性能是硬件配置和优化的核心。随着信息技术 快速的发展,磁盘硬件的性能也随着不但提高,各种高性能大容量存储的技术也 相继出现,如磁盘阵列和存储区域网络等,这些技术的应用使得数据库及应用程 序的性能得到极大提高。 2.3.2 系统配置 系统配置主要包括对操作系统以及 sql server 2000 数据库管理系统的参数 配置。 1、 sql server 2000 参数配置 sql server 配置优化是通过修改 sql server 的配置参数来实现的。如果配 置参数与硬件资源的使用有关,则这些参数必须基于系统中可用的硬件资源的类 型与数量进行修改,只有这样才能提高数据库服务器的性能。例如,一个计算机 系统具有多个 cpu 处理器,那么在这台机器上使用多个 sql server 线程(进 程)以及在并发查询时使用的所有的 cpu 资源的效果要比使用单个 cpu 处理器 网络安全审计系统中超大型数据库的性能优化 - 8 - 系统的性能要好的多。 适当配置 sql server 的最小和最大服务器内存参数是非常重要的。在默认 的情况,如果在短时间内有大量的并发用户频繁地对数据库进行操作(数据查询 统计、提交和更新等) ,这样将会使 sql server 占用的内存不断上升,数据库的 性能明显下降,甚至可能会造成系统虚拟内存不足和应用程序的崩溃。还有,如 果在计算机上运行多个 sql server 实例时,则可能需要控制分配给 sql server 的内存量。在这些情况下,我们可以通过适当设置 min server memory 3和 max server memory 3参数来控制 sql server 实例可以使用的内存量,从而达到性能 上的优化。 其中 min server memory 参数用于保证 sql server 实例可以使用的最小内存 量。sql server 启动时并不会立即分配该参数所指定的内存量。当内存的使用量 达到该参数的指定值之后,sql server 将无法从已经分配的缓冲池中释放内存, 除非减少该参数的数值。 max server memory 参数用于限制 sql server 实例可以使用的最大内存量。 该参数防止 sql server 实例使用过多的内存量,从而导致系统资源不足,无法 正常运行其他应用程序。sql server 启动时并不会立即分配该参数所指定的内存 量,它的内存使用量随着服务器事务吞吐量的不断增加而持续增长,直到达到该 参数中所指定的值为止。sql server 实例无法使用超过该值的内存量,除非增加 该参数的数值。 默认情况下,sql server 根据系统可用的物理内存数量动态调整其的内存使 用量。当 sql server 动态使用内存时,它要求系统定期检测可用的物理内存数 量,并根据服务器事务量确定是增大还是收缩其高速缓冲存储器,以使得系统的 可用物理内存数量始终保持在 4m 到 10m 之间,从而尽可能充分利用系统内存 资源,避免高速缓存与磁盘驱动器的频繁换页操作 34。 2、 操作系统参数配置 任何数据库系统都必须运行在一些或某个特定的系统平台上,有时为了获得 一些性能上的改善,需要对操作系统的某些参数配置进行修改。可以对数据库服 务器上的 windows nt 或 windows 2000 选项进行如下设置以提高系统性能。 (1) 最大化吞吐量 sql server 安装程序自动配置 windows nt 或 windows 2000 以使得多层数 据库系统的吞吐量达到最大,从而使服务器可以同时处理更多的连接或会话。 (2) 配置虚拟内存 windows nt 或 windows 2000 的虚拟内存大小应基于计算机上并发运行的 服务进行配置。在默认情况下,sql server 2000 总是力求使计算机的虚拟内存 分配量保持在比物理内存少 4m 到 10m 的水平上,因此可以考虑将操作系统的 中南民族大学硕士学位论文 - 9 - 虚拟内存大小设置为计算机物理内存的 1.5 倍左右来提高数据库的性能。 (3) 配置服务器任务调度优先级 如果应用程序从本地客户端(与数据库服务器在同一台机器上运行的客户 端)连接到 sql server,可以通过设置服务器以相同的优先级运行前台和后台应 用程序,使得在后台运行的 sql server 能够获得与在前台运行的其它应用程序 相同的处理器时间分片。sql server 安装程序默认设置服务器上 windows nt 和 windows 2000 的 background services 参数为 none 来达到上述目的。还可以将服 务器任务调度参数设置为 maximum(windows nt 默认值)或者 applications (windows 2000 默认值) ,用来为前台应用程序提供最大的处理器时间分片。 2.3.3 应用优化 应用优化是最能提高性能的部分,主要包括对数据库设计、分布式数据库设 计、应用程序设计、数据库查询等的优化。 (1) 数据库设计 主要通过对数据库设计进行优化使之成为提高系统总体性能的最有效途径。 数据库设计优化包括对逻辑数据库架构(如表和约束)和物理数据库特性(如磁 盘系统、对象位置和索引)进行优化。对于超大型的数据库性能优化来说,数据 库的设计和优化是比较重要的部分,而且内容比较复杂,其主要的内容将在下一 章节进行详细的说明。 (2) 分布式数据库 分布式数据库是由分布在计算机网络中的多个逻辑相关的数据库组成的集 合。它主要通过使用数据水平分区技术,将多层系统数据处理的负载平均分布在 多个数据库服务器上,从而尽可能提高数据库服务器的性能,使其达到大型 web 站点或超大型数据库系统等所需要的高性能级别。对于任何超大型的数据 库系统来说,采用分布式数据库或数据库服务器集群能够更好地改善数据库系统 的性能,但是代价比较高,实现比较复杂。 (3) 应用程序设计 应用程序设计在数据库系统性能方面起着关键性的作用。因为应用程序决定 了对数据库操作的类型,决定了如何或何时提交数据库操作以及如何处理操作结 果,所有这些对数据库的操作又影响了数据库服务器上的锁类型和持续时间、磁 盘 i/o 量、网络负载以及 cpu 处理负荷等,从而影响整个数据库系统的性能。 应用程序设计优化包括对事务边界、锁定、游标、存储过程、批处理和数据 库访问接口(查询统计、数据库维护等)等的优化。 良好的应用程序设计将会使得 sql server 能够支持成千上万的并发用户的 操作请求,进而提高整个数据库系统的性能。 网络安全审计系统中超大型数据库的性能优化 - 10 - 应用程序的设计准则具体包括: (1) 消除过多的网络流量 当在网络中执行大量数据库访问操作时,网络本身也可能成为系统性能的瓶 颈。如果在客户端和服务器之间传输大量的数据,网络的性能会受到一定的负面 影响。客户端和数据库之间的网络传输通常是数据库应用程序性能较差的首要原 因,通过使用存储过程可以将网络流量降低到最小。比如 set nocount 可以 禁用 sql server 在执行一个存储过程中多个 sql 语句时返回的行数信息,从而 大量减少了网络流量,显著改善数据库系统的性能。 (2) 允许取消正在执行的 sql 查询 可以通过设置数据库查询的连接超时控制数据库查询时间,而不是让数据库 查询无限期的运行下去,进而浪费大量的系统资源。具体设置可以封装在 ado 的类中,也可以视操作情况自行设定。 (3) 使事务更加简短 应用程序通常将大的批处理作业作为一个事务执行。一旦事务开始执行, dbms 必须控制很多的资源直至事务结束,以保护事务的 acid(原子性、一致 性、隔离性和持久性)特性。因此,尽可能快的提交事务意味着尽快释放锁资 源,所以使得事务保持简短非常重要。 (4) 使用存储过程 存储过程对数据库应用程序的性能影响很大,所有设计优良的 sql server 应用程序都应当使用存储过程。存储过程可以将普通的应用逻辑从数据库应用程 序中分离出来,只要存储过程的参数和返回值类型不变,就不用修改应用逻辑, 而只修改存储过程就足够了。另外,存储过程是一组能够编译成为单独执行计划 的 sql 语句,它能够接收参数输入并返回操作结果,并且可以被应用程序重复 调用,将其放在数据库服务器端直接执行可以极大的降低网络流量。编译进存储 过程的 sql 语句在执行时可省去大量的处理,从而也提高了执行速度和系统的 性能。 2.4 性能优化的方法 在进行性能优化时,系统的内存资源是非常值得关注的一个硬件资源,因为 数据库服务器的整体性能与数据库系统内存缓冲区的管理是紧密相关的。对于任 何系统,其访问内存缓冲区中的数据的速度远远比访问在磁盘中相同的数据要快 得多。如果数据库的 i/o 量可以被减小到数据和索引页设置所要求的最小值,则 这些页可以在内存缓冲区中驻留较长得时间。过多的脏数据和索引信息被载入到 缓冲区中将会迅速地把有价值的数据置换出缓冲区。因此,性能优化的重点在于 中南民族大学硕士学位论文 - 11 - 减少磁盘 i/o,从而使缓冲区得到最佳的利用。 常见的比较有效的性能优化方法包括: (1) 创建良好的索引 创建和维护良好的索引以及对索引进行优化是所有数据库查询拥有最小 i/o 量的关键所在。 (2) 提高磁盘子系统的性能 磁盘子系统必须为数据库服务器提供足够的 i/o 处理能力,能够满足各种大 型业务系统的需求,而不应成为系统性能的瓶颈。 (3) 应用程序和查询优化 应用程序需要快速地处理很多并发用户同时提交的大数据量的数据库查询 操作,与此同时,数据库服务器也要快速处理应用程序提交的成百上千的大数据 量的查询。 因此,对应用程序和查询进行优化变得尤为重要。通常在数据库服务器上 执行的 sql 语句是由应用程序决定的,所以应用程序开发人员必须充分了解数 据库系统底层的结构和实现机制以及如何利用索引来减少磁盘 i/o 量并且能够显 著地改善查询的性能。 2.5 本章小结 本章从性能优化的基本目标出发,分析了影响业务系统性能的各个方面,为 论文的展开作了铺垫。值得注意的是,在采取优化策略提高业务系统某方面性能 的同时也可能会降低其他方面的性能。因此在实际应用中,应根据具体情况对这 些策略进行权衡。 网络安全审计系统中超大型数据库的性能优化 - 12 - 第 3 章 数据库设计和优化 3.1 数据库设计概述 数据库设计是指对于一个给定的应用环境,结合应用系统的设计构造最优的 数据库模式,建立合理的数据库结构,使之能够有效地存储数据,满足各种用户 的应用需求 5。数据库设计的目的就是要构造一个最优的数据模式,以及以数据 库为基础的应用程序。 数据库设计主要包括逻辑设计和物理设计两个部分。逻辑数据库设计考虑的 是使用数据库组件(如表和约束)建立数据模型。而物理数据库设计将逻辑设计 映射到物理设备上,并充分利用可用的软硬件功能使得应用程序能够尽可能快地 访问数据库。准确地设计数据库以建立数据模型在数据库应用的过程中是至关重 要的,因为在系统设计初期完成数据库的设计,如果在中后期再对其设计进行更 改将花费大量的时间,而且要更改这些组件十分困难。 3.2 逻辑数据库设计和优化 在关系数据库模型中,逻辑数据库是一组相关的规范化的基本表。数据库的 逻辑设计(包括各种表和表之间的关系)是优化关系数据库的核心部分。优秀的 逻辑数据库设计,将会使得数据库及其应用程序具有更好的性能,而且为数据库 和应用程序的进一步优化打下坚实的基础。低质量的设计将会影响整个系统的性 能,会给后期系统的扩展带来负面的影响。 3.2.1 逻辑数据库设计规范化 规范化的数据库逻辑设计将单个文件内的具有很多列的宽数据分解成关系数 据库内的两个或更多的具有较少列的窄表。包含有大量窄表(列较少的表)是规 范化数据库的明显特征。通常情况下,合理的规范化将提高数据库系统的性能并 减少因数据不一致引起错误的可能性。 使用规范化数据库具有以下优点: (1) 由于数据表中的列数相对较少,使得数据库系统可以更快速的对表进 行排序和建立索引等操作; (2) 每个表中包含相对少量的索引,这样可以提高执行 insert、 delete 和 update 语句的速度; (3) 数据库中每个表只能有一个聚集索引,而创建聚集索引可以极大提高 中南民族大学硕士学位论文 - 13 - 数据库系统的性能。因此,将一个大数据量的表分解为多个小数据量的表,使得 多个聚集索引的使用成为可能。 由于一系列的规范化,使得在提高了数据库及其应用程序性能的同时也增加 了在数据查询检索时使用表的数目以及表间连接关系的复杂性,大量的表以及表 间复杂的连接关系会极大的降低服务器的性能,因此在进行系统设计时要综合考 虑这两个方面的因素。 在通常情况下合理的规范化是不包括频繁运行表间连接关系超过四个以上的 查询。但是,并不是所有的数据库设计需要全部遵循规范化。比如在开发周期的 某个时间,突然发现早期的这种逻辑数据库的设计存在一定的缺陷,而想要对整 个系统进行全部重新的设计,这在现实中是不可行的。为此,我们可以将那些包 含有大数据量信息的表有选择性地进行规范化处理,将它分解成多个包含相对少 量数据信息的表,与此相对应的是,我们在应用程序中通过存储过程,或者是通 过创建这些表的一个视图,或者是定义一个标准的接口来对这些数据进行访问, 则对这种逻辑数据库设计的更改可能不会导致应用程序的重新设计。本人在数据 库的逻辑设计和应用程序设计及实现就是采用这种灵活的方式。 3.2.2 逻辑数据库设计优化 逻辑数据库的设计必须保证数据库能够快速地执行所有事务,因此需要找出 数据库中包含大数据量的表以及数据库经常需要执行的比较复杂的事务,在对这 些表进行设计时,应特别关注设计的性能问题。 提高性能的逻辑数据库设计包括: (1) 对包含成百上千万条数据信息的表进行报表汇总时,可以向该表添加 包含预聚合数据的一列或多列,以提高大数量数据报表时数据库的性能。 (2) 字段类型应使用与度量值数据一致的最小数据类型。比如能使用 smallint 类型就不使用 int 类型。在超大规模的数据库中,如果每条记录减少两 个字节,合计起来也能明显减少表的大小以及数据操作所需要的时间。 (3) 数据库查询的性能与数据集字段的类型也有一定的关系。比如 ip 地 址用 numeric 类型比使用字符类型拥有更好的查询性能。 (4) 数据库过度规范化造成的大量的表以及表之间复杂的连接关系会降低 数据处理的性能。因此,适当降低数据库规范化程度以简化大量复杂的处理可以 提高数据库系统的性能。 3.3 物理数据库设计和优化 数据库物理设计就是对一个给定的逻辑数据模型选取一个最适合应用环境的 物理结构(包括存储结构和存取方法)的过程 5。 网络安全审计系统中超大型数据库的性能优化 - 14 - 存储引擎(i/o 资源)是任何关系数据库的核心部分。关系数据库的存储引 擎在数据库的物理设计中占有很重要的地位,其中包括确定磁盘硬件的类型、数 据的存放位置和索引结构等,还包括设置数据库系统的配置参数等。 3.3.1 使用 raid 类型的硬件 raid(redundant array of inexpensive disks,廉价磁盘冗余阵列) 6是一种 存储技术,是由多个磁盘驱动器(一个阵列)组成的磁盘系统,可提供更高的性能 和更大的存储容量。 硬件 raid 控制器将所有数据划分为一些数据片(或称为条) ,并将这些数 据片分布在所有参与 raid 阵列的磁盘驱动器上。按这种方式划分数据,将会使 得 i/o 活动被平均分配到所有参与 raid 阵列的物理硬盘驱动器上,从而提高磁 盘的 i/o 性能。 如果需要使用大量的磁盘空间,推荐使用 raid 5 而不是 raid 10。raid 10 虽然比 raid 5 要快,但是需要使用更多的物理驱动器,成本较高。raid 5 提供更高的可靠性和更快的恢复能力。当处理超大规模数据库的时候,在可能由 于数据库服务器缺乏可用的连接,使得所有的硬盘驱动器不可能连接到数据库服 务器的情况下,可以考虑使用 san(storage area network,存储区域网络) 7 以获得更好的性能。另外,光纤信道与 scsi 相比在性能方面更加可取,并且控 制器的缓存越大越好。 在系统实施过程中,可能会遇到很多特别的问题,特别需要关注的就是磁盘 文件系统的类型。 3.3.2 使用文件组放置数据 通过 sql 语句可以在数据库的特定文件组上而不是在默认文件组上创建表 或索引,这样的好处就是可以将文件组作为一个单元来备份或者恢复 8。另外, 还可以通过在特定的磁盘或 raid 设备上创建文件组,从而控制数据库中表或 索引的实际物理存放位置。如果一个文件组由在多个物理驱动器上展开的多个文 件组成,而且每个物理驱动器都有自己的磁盘控制器,则对表中数据的查询将在 这些物理驱动器中展开,有利于提高使用多个文件进行并行数据访问时的吞吐 量,从而提高数据库查询的性能。 例如,先向指定的数据库中添加一个扩展文件组 filegroup,在两个硬盘驱 动器上分别创建一个数据文件 dataa.md

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论