SQL SERVER数据库性能调整与优化

SQL SERVER数据库性能调整与优化
SQL SERVER数据库性能调整与优化

摘要:微软的sql server数据库系统,因其各种优点在软件系统市场上占有比较大的比例,但是数据库在使用过程中也会出现多种可以导致服务器运行速度变慢或降低数据访问效率的事件发生。文章从多个方面讲述了sql server数据库系统调整和优化策略,可以有效提高数据库的查询速度。

关键字:sql server;应用程序;b/s;数据复制

中图分类号:tp311 文献标识码:a 文章编号:1009-3044(2016)15-0012-02

基于微软的sql server数据库系统,是目前很多软件所使用的数据库,其功能强大,而且兼容性能较好,适用于大多数的软件开发系统。但是,任何一个数据库系统在操作较长一段时间后,都可能存在一定的性能问题,这个性能问题包括多个方面,主要涉及数据库的内存、操作系统、参数设置、操作应用程序及硬件等多个方面。因此,就像操作系统一样,在一个数据库系统运行一段时间后,对其进行优化对整个软件系统的正常运行起着非常重要的作用,可以有效促进软件系统的稳定性、可用性和高效性,节约系统开销,解决系统瓶颈。

1 性能调整与优化概述

性能调整是指的对系统的相关参数、应用程序、软硬件系统进行优化,从而可以有效改变系统性能的一种活动。对数据库系统的性能优化及调整主要包括对软硬件配置、操作系统及数据库管理系统的配置进行优化,还包括对访问这些配置的应用程序的分析与了解。

对数据库性能是否优秀的判定标准主要是看这个数据库各个性能指标,一个数据库的性能指标主要包含以下几个部分:事务处理所占用的系统资源、事件的响应时间以及cpu的时间量。性能并不是一成不变的,而是随着使用的时间和环境的变化而变化。数据库系统的性能受使用应用程序、本身的体系结构和硬件设备性能及连接数目及资源等多个方面的影响。

所谓性能调整,就是通过优化提高系统的高效性,消除系统使用瓶颈。一个系统是否高效,主要是看他的瓶颈,因为这个是系统性能限制的主要决定因素,可能是软件,也可能是硬件部分。如果系统的瓶颈限制过大,则对数据库系统的访问和存储及更新都有很大影响,减少系统瓶颈,可以将一个系统性能最大程度的发挥。为了有效去除系统瓶颈,对性能进行调整,必须采取一定的步骤和方法去调整所有和性能相关的组件,包括应用调整和sqlserver。

2 应用调整

对数据库的性能优化来说,最有可能导致数据库性能产生变化的就是应用软件的影响。应用调整相对于硬件来说更容易做到监控和修改,也更容易显示出效果来。应用的调整和优化也可以影响到数据系统的后续步骤的调整,有效地减小系统开支,使普通的应用程序不至于占用太多的系统资源。应用调整一般来说是对sql server性能调整的第一步,也是关键的一步,主要包括应用程序调整、页面应用调整、数据库查询语句调整等多个因素。

1)sql语句优化

数据库性能优化中,标准查询语句(sql)的优化可以有效提高数据查询、更新、插入的执行效率。低效率的数据库查询语句,往往会占用过多的资源并访问过多的数据库,从而使系统的响应时间变长,严重影响系统的性能。通过优化sql语句,改变数据库查询方法或途径,可以有效提高系统的性能。数据库系统的应用最多的就是将数据库的数据显示出来,这离不开数据库的查询语句,这也是影响系统性能最关键的一个步骤。微软的sql server本身提供了数据库的查询和优化方法,对常用的数据库查询语句进行分析,可以找到最佳的查询语句,从而可以减少输入/输出次数,提高执行效率。但是微软提供的查询优化器很难能够完全解决查询语句的优化,比如语义方面的问题等。

2)b/s 模式优化

目前很多软件的开发模式都采用了基于b/s的模式,在这种模式下,用户端无须在安装多余的软件,服务器将后台处理的数据通过协议传输到客户端。这种做法实际上减轻了前端

客户机的工作量,而将更的计算负载交给了数据库服务器,所以在这种模式下对数据库进行优化可以取得不错的效果,一般情况下采取以下的优化策略。

运算负载与网络分配:

在实际应用过程中,数据传输是不均衡的,有些网络节点传输的数据多,有些网络节点传输的数据少。对于持续进行大量数据传输的网络节点来说,他需要对数据库系统经常性访问,可以考虑将其使用的网络与其他网络分割开来,这样就不会影响其他的用户访问。对于有大量数据进行传输的应用来说,可以适当增加网络包大小,以减少网络传输次数。

3)对内存的有效管理

数据在计算机中处理,并不是在数据实际存储的空间进行处理的,而是将数据调入到内存中进行处理,这是因为内存的速度要远大于外存储设备的存取速度。提高数据存取性能的最直接的方法就是增大物理内存,但是目前内存的大小还是有比较大的限制,所以如何合理利用内存更有效的处理数据成了内存有效管理的最有效的方法。在数据库中高速缓存可以分成两种,一种是数据调整缓存,一种是过程高速缓存。数据高速缓存主要早用来存储数据、日志、索引有数据库对象,而过程高速缓存主要用来存储查询计划,触发器等。高速缓冲存储器是存在于主存与cpu之间的一级存储器,由静态存储芯片(sram)组成,容量比较小但速度比主存高得多,接近于cpu的速度。正常情况下高速度缓存应该占数据库内存的20%,但是这个值应该随着系统或数据传输的要求而不断调整,对于要求较高的应用程序或服务可以适当增加其高速缓存的比例。

可以将经常使用的数据库或数据表固定到数据调整缓存上,这样可以大大提高数据的查询和处理速度。

4)充分利用临时数据库

在数据使用过程中,为了提高数据库的利用效率,会对查询产生的结果数据进行第二次使用,这个查询的结果数据往往被存储为临时数据库,这个临时数据表可以被多个用户所共享使用,如果对临时数据进行充分利用,可以大大提高数据库的查询效率。通过以下步骤对临时数据库进入处理,可以提高其性能。

临时数据库的容量是可以定义的,扩大临时数据库的容量可以有效增加数据处理量。

可以将临时数据库保存下来,存储在独立的物理介质上,从而可以单独调用。

如果临时数据库经常被访问,可以考虑将其放面高速缓冲区,以减少数据对磁盘的访问次数,提高数据执行效率。

3 sql server调整

sql server调整与硬件调整是紧密相关的,是对数据库服务器的性能调整。通过修改sql server的配置参数(configuration parameter), sql server调整包括改变它分配资源的方法以及它的工作方式。有些配置参数与资源的使用有关,有些则无关。那些与资源使用有关的参数紧密地依赖于系统中可用的硬件资源。这些参数必须基于系统中可用的硬件资源的类型与数量进行修改。例如,一个具有多处理器的系统,如对称多处理器((smp)系统,使用多个sql server线程(进程)的效果要比使用单处理器的系统工作得更好。具有许多可用内存的系统应该调整sql server,以充分利用这些附加的内存。应该修改输入/输出((i/o)参数,以充分利用系统中所拥有的i/o系统类型。sql server调整与硬件调整包括为需求的工作量提供足够的系统资源。总的说来,sql server调整涉及服务器硬件调整、数据库优化设计、sql server配置参数调整等内容。

数据复制优化:

当今世界数据的传输量越来越大,而且应用程序的分布式计算程度越来越大,所以数据传送给用户过程的网络就往往成了传送的瓶颈。在数据传输中,数据库管理员对网络带宽或网络传输的管理做不到严格控制,所以只能对数据库本身进行优化来减少数据传输量。减少

网络的传输流量并不是减少数据的传送量,而是减小数据包数量大小。在数据库查询中,对远程数据库的查询有的时候会经过几个服务器的数据传输,应该尽量减小从一个数据库到另一个数据库的传输流量,不同的数据的复制选项会有效减少网络之间的数据传输量。

如图1所示,这是一个分布式的数据库环境,数据分别存储在不同的位置,当客户终端要发生数据访问时,便会有数据从一个数据库链接流向另外一个数据库。当前的数据库存储形式,特别是移动数据库的存储,都是完全支持分布式的数据库,数据库的访问不像以前那样在一个服务器把对数据的操作全部完成。对数据库之间数据流动采取的是数据复制的形式,事务处理往往在服务器和移动终端两个方面进行。

在数据处理中,如果所有的数据都是标准的数据结构,都是统一的数据格式,则数据处理起来就方便很多,可以通过多个数据库的跳转直接访问,但是目前的数据特别是动态数据,很多都是非标准的数据,在数据库存储和访问非常冗长的数据的时候,往往要采数据复制的方式来缩短用户访问数据的有效路径。数据复制无需通过网络来完成数据库的查询功能,只要把远程的数据复制到本地再来完成对数据的操作。

大数据库优化(SQLServer)

SQL SERVER性能优化综述 近期因工作需要,希望比较全面的总结下SQL SERVER数据库性能优化相关的注意事项,在 网上搜索了一下,发现很多文章,有的都列出了上百条,但是仔细看发现,有很多似是而非或 者过时(可能对SQL SERVER6.5以前的版本或者ORACLE是适用的)的信息,只好自己根据以 前的经验和测试结果进行总结了。 我始终认为,一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优的任务,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意,进行有效工作才能达到的。所以我希望按照软件生命周期的不同阶段来总结数据库性能优化相关的注意事项。 一、分析阶段 一般来说,在系统分析阶段往往有太多需要关注的地方,系统各种功能性、可用性、可靠性、安全性需求往往吸引了我们大部分的注意力,但是,我们必须注意,性能是很重要的非功能 性需求,必须根据系统的特点确定其实时性需求、响应时间的需求、硬件的配置等。最好能 有各种需求的量化的指标。 另一方面,在分析阶段应该根据各种需求区分出系统的类型,大的方面,区分是OLTP(联机事务处理系统)和OLAP(联机分析处理系统)。 二、设计阶段 设计阶段可以说是以后系统性能的关键阶段,在这个阶段,有一个关系到以后几乎所有性能 调优的过程—数据库设计。 在数据库设计完成后,可以进行初步的索引设计,好的索引设计可以指导编码阶段写出高效 率的代码,为整个系统的性能打下良好的基础。 以下是性能要求设计阶段需要注意的: 1、数据库逻辑设计的规范化 数据库逻辑设计的规范化就是我们一般所说的范式,我们可以这样来简单理解范式: 第1规范:没有重复的组或多值的列,这是数据库设计的最低要求。 第2规范: 每个非关键字段必须依赖于主关键字,不能依赖于一个组合式主关键字的某些组 成部分。消除部分依赖,大部分情况下,数据库设计都应该达到第二范式。 第3规范: 一个非关键字段不能依赖于另一个非关键字段。消除传递依赖,达到第三范式应该是系统中大部分表的要求,除非一些特殊作用的表。 更高的范式要求这里就不再作介绍了,个人认为,如果全部达到第二范式,大部分达到第三

SQLServer数据库备份与恢复

SQLServer数据库备份与恢复 学院:工程学院专业:机械设计制造及其自动化班级:01 姓名:张丹学号:1522111 【实验内容】 通过SQL Server 自带的备份功能备份数据库 利用SQL Server自带的还原功能还原数据库 【实验原理】 数据库的建立和使用极大的方便了人们对数据的管理和应用,数据的稳定性和可恢复至关重要,因此要定期对数据库的数据进行备份。 【实验环境】 Windows 实验台 SQL Server 2000 【实验步骤】 打开Windows实验台,运行Windows 2003系统;运行SQL Server 2000的“查询分析器”和“企业管理器”。 SQL Server 数据库备份 (1)打开企业管理器,展开服务器组,然后展开服务器。 (2)展开数据库,选中所要备份的数据库,单击鼠标右键,依次选择“所有 任务”,“备份数据库”。 (3)在弹出的对话框中,依次修改:“名称”、“备份方式”、“目的”、“重写方 式”,最后点“确定”。 (4)开始备份。 (5)最后备份完成。 SQL Server 数据库还原 (1)打开企业管理器,展开服务器组,然后展开服务器。 (2)展开数据库,选中所要还原的数据库,单击鼠标右键,依次选择“所有 任务”,“还原数据库”。 (3)在弹出的对话框中,依次修改:“还原后的数据名”、“要还原的备份文件”。

(4)然后选择“选项”标签卡,选中“在现有数据库上强制还原”多选项。 (5)点击“确定”按钮开始还原。 (6)最后还原完成,如下图所示。 【实验总结】 该实验较复杂,对数据库的备份与还原的掌握与运用十分实用。

SQLserver数据库课程设计范例

1 概述 1.1课题简介 书店书目书种繁多,来源多样,购买者众多,图书信息、供应商信息、客户信息、销售信息庞大,不易管理。因此,很有必要创建一个小型书店管理系统,以便于书店对图书的管理。1.2设计目的 应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。 数据库应用课程实践:实践和巩固在课堂教学中学习有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。 数据库原理软件设计实践:实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。 1.3设计内容 运用基于E-R 模型的数据库设计方法和关系规范化理论做指导完成从系统的分析到设计直至系统的最终实现,开发小型书店管理系统,完成小型书店管理系统的全部功能。 首先做好需求分析,并完成数据流图和数据字典。 其次做概念分析,利用实体联系的方法将需求分析的用户需求抽象为信息结构,得到E-R 图。然后就是逻辑结构设计,将E-R 图转换为计算机系统所支持的逻辑模型 2 需求分析 2.1功能分析 首先,建立一些基本表(尽可能满足3N),对大部分基本信息组合、存储;其次通过建立视图实现对冗余数据的有必要保留(查询并计算基本表属性得到新的作为视图属性)并实现对以下基本信息的显示。 图书信息:图书名称、订购数量、订购时间、订购单价、金额、出版社名称、作者名称;供应商名称等; 供应商信息:供应商名称、地址、电话,联系人; 客户信息:客户编号、名称、年龄、性别、累计购书金额等; 销售信息:时间、销售名称、数量、销售单价、客户编号、客户名称、金额等。 在此基础上进行以下目标查询,由于有些查询常用且较复杂,为了简化其应用,所以将它们定义

浅谈优化SQLServer数据库服务器内存配置的策略

浅谈优化SQLServer数据库服务器内存配置的策略 浅谈优化SQLServer数据库服务器内存配置的策略 作者:季广胜 言 农业银行总行1998年以来正式推广了新版网络版综合业务统计信息系统,该系统是基于WindowsNT4.0平台,采用客户/服务器模式,以Microsoft SQL Server为基础建立起来的大型数据库应用程序,系统界面友好、操作简便,计算、分析、检索功能非常强大,为保证农业银行系统及时进行纵向和横向业务数据采集、按照不同要求生成统计报表,进行全面业务活动分析提供了强有力的保障。但在这套程序的推广、维护中笔者发现系统有时运行速度较慢,特别是在Win95客户端操作时尤为严重,经过排除网线连接等硬件可能带来的影响后上述问题仍然存在。笔者经过仔细摸索,发现系统对硬、软件的要求较高,为充分发挥设计效能,达到最佳运作效果,需要对计算机硬、软件系统进行较为完备的性能测试与最佳配置,特别是内存配置的好坏对系统的运行速度具有决定性的作用。下面,笔者就如何优化SQLServer数据库服务器的内存配置提出一些认识和看法。 一、有关内存的基本概念 1 物理内存与虚拟内存 WindowsNT使用两类内存:物理内存与虚拟内存。

物理内存:作为RAM芯片安装在计算机内部的存储器。 虚拟内存:用于模拟RAM芯片功能的磁盘(硬盘)空间,其实质是通过将内存中当前没有使用的部分内容临时存储到磁盘上,使系统可以使用到比机器物理内存更多的内存。 2 分页和分页文件 WindowsNT系统通过使用磁盘空间使得对内存的需求得到部分缓解,从而使用到比物理内存更多内存的技术就称为“交换”或分页,也就是通常所说的虚拟内存技术。通常Windows NT 4.0系统安装时将在引导驱动器上设置一个大小为16MB的交换(分页)文件(pagefile.sys)。 二、优化Windows NT 4.0系统内存配置 在大多数情况下,为了充分发挥Windows NT 4.0系统效能,内存的作用比起处理器的处理能力更具有影响力,特别是在客户/服务器模式环境下更是如此,因为通常在这种环境下并不十分强调处理器的能力,相反却十分注重是否采用足够的内存来满足各个客户的应用需要。此外,为了获得容错功能和保护应用程序,保证应用程序高速运行、充分发挥设计功能都需要有足够多的内存,特别是工业绘图设计和各种工程应用程序更需要占用大量的内存来进行复杂的计算。 物理内存(RAM)方便快速的优点显而易见,但由于其价格昂贵,也就不可能做到多多益善了,因此通过合理优化内存配置、扩充虚拟

SQLserver数据库管理系统需求分析

SQLserver数据库管理系统需求分析 ——成绩管理分析 一、概述 二、SQLserver简介及知识介绍 三、数据库管理系统知识 四、需求分析—成绩管理 一、概述 成绩管理系统可以实现对成绩的管理,在此系统里可以查询、添加、删除学生的成绩,方便用户的管理。学生成绩管理系统是应对学生人数增多、信息量增大的问题,实现管理的现代化、网络化,逐步摆脱当前学生成绩管理系统的人工管理方式,提高成绩管理效率而开发的。希望该程序能够解决学生信息存储、学生成绩查询、录入还有课程查询等一系列功能,并提供了对各功能模块的查询和更新功能,且这两种功能基本上是通过存储过程来实现的,其中学生成绩查询和学生信息查询是成绩管理系统的重点。 二、SQLserver简介及知识介绍 1、简介 美国Microsoft公司推出的一种关系型数据库系统。SQLServer是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。 其主要特点如下: (1)高性能设计,可充分利用WindowsNT的优势。 (2)系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。

(3)强壮的事务处理功能,采用各种方法保证数据的完整性。 (4)支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。 SQLServer以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。 2、SQLserver的发展 SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle,Sybase,Microsoft SQL Server,Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select,Insert,Update,Delete,Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。 SQL Server 是一个关系数据库管理系统。它最初是由Microsoft Sybase 和Ashton-Tate 三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft 与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server 移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server 在UNIX操作系统上的应用。 SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。 3、SQL Server 2008的新功能及知识介绍 (一)、可信任的

SqlServer数据库同步方案详解

SqlServer数据库同步是项目中常用到的环节,若一个项目中的数据同时存在于不同的数据库服务器中,而这些数据库需要被多个不同的网域调用时,配置SqlServer数据库同步是个比较好的解决方案。SqlServer数据库同步的配置比较烦锁,下面对其配置详细步骤进行介绍: 一、数据复制前提条件 1. 数据库故障还原模型必需为完全还原模型。 2. 所有被同步的数据表都必须要用主键。 3. 发布服务器、分发服务器和订阅服务器必须使用计算机名称来进行SQLSERVER服务器的注册。 4. SQLSERVER必需启动代理服务,且代理服务必需以本地计算机的帐号运行。 二、解决前提条件实施步骤 1. 将数据库故障还原模型调整为完全还原模型。具体步骤如下: 打开SQLSERVER企业管理器à选择对应的数据库à单击右键选择属性à选择”选项”à 故障还原模型选择完全还原模型。 2. 所有被同步的数据表都必须要用主键。(主要指事务复制)如果没有主键的数据表,增加一个字段名称为id,类型为int 型,标识为自增1的字段。 3. 发布服务器、分发服务器和订阅服务器必须使用计算机名称来进行SQLSERVER服务器的注册。 在企业管理器里面注册的服务器,如果需要用作发布服务器、分发服务器和订阅服务器,都必需以服务器名称进行注册。不得使用IP地址以及别名进行注册,比如LOCAL, “.”以及LOCALHOST等。

如果非同一网段或者远程服务器,需要将其对应关系加到本地系统网络配置文件中。文件的具体位置在%systemroot%\system32\drivers\etc\hosts 配置方式: 用记事本打开hosts文件,在文件的最下方添加IP地址和主机名的对应关系。如图: SQLSERVER必需启动代理服务,且代理服务必需以本地计算机的帐号运行。 启动SQLSERVER代理的方法:我的电脑à单击右键”管理”à服务à SQLSERVERAGENT 将其设为自动启动。如图:

SQLServer语句优化

SQLServer语句优化 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。 需要两个过程,先找到目录中的结果,然后再翻到您所需要的页码。我们把这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。 下面的表总结了何时使用聚集索引或非聚集索引(很重要): 动作描述使用聚集索引使用非聚集索引 列经常被分组排序应应 返回某范围内的数据应不应 一个或极少不同值不应不应 小数目的不同值应不应 大数目的不同值不应应 频繁更新的列不应应 外键列应应 主键列应应 频繁修改索引列不应应 事实上,我们可以通过前面聚集索引和非聚集索引的定义的例子来理解上表。如:返回某范围内的数据一项。比如您的某个表有一个时间列,恰好您把聚合索引建立在了该列,这时您查询2004年1月1日至2004年10月1日之间的全部数据时,这个速度就将是很快的,因为您的这本字典正文是按日期进行排序的,聚类索引只需要找到要检索的所有数据中的开头和结尾数据即可;而不像非聚集索引,必须先查到目录中查到每一项数据对应的页码,然后再根据页码查到具体内容。 结合实际,谈索引使用的误区 理论的目的是应用。虽然我们刚才列出了何时应使用聚集索引或非聚集索引,但在实践中以上规则却很容易被忽视或不能根据实际情况进行综合分析。下面我们将根据在实践中遇到的实际问题来谈一下索引使用的误区,以便于大家掌握索引建立的方法。 1、主键就是聚集索引 这种想法笔者认为是极端错误的,是对聚集索引的一种浪费。虽然SQL SERVER默认是在主键上建立聚集索引的。 通常,我们会在每个表中都建立一个ID列,以区分每条数据,并且这个ID列是自动增大的,步长一般为1。我们的这个办公自动化的实例中的列Gid就是如此。此时,如果我们将这个列设为主键,SQL SERVER会将此列默认为聚集索引。这样做有好处,就是可以让您的数据在数据库中按照ID进行物理排序,但笔者认为这样做意义不大。 显而易见,聚集索引的优势是很明显的,而每个表中只能有一个聚集索引的规则,这使得聚集索引变得更加珍贵。 从我们前面谈到的聚集索引的定义我们可以看出,使用聚集索引的最大好处就是能够根据查询要求,迅速缩小查询范围,避免全表扫描。在实际应用中,因为ID号是自动生成的,我们并不知道每条记录的ID号,所以我们很难在实践中用ID号来进行查询。这就使让ID号这个主键作为聚集索引成为一种资源浪费。其次,让每个ID号都不同的字段作为聚集索引也不符合“大数目的不同值情况下不应建立聚合索引”规则;当然,这种情况只是针对用户经常修改记录内容,特别是索引项的时候会

SQLServer数据库的备份和还原详解

SQLServer数据库的备份和还原详解 1. 基本概念: mdf文件:SqlServer数据库的主数据文件 ldf文件:SqlServer数据库的日志文件 SQL Server管理的每个数据库都对应一个mdf文件和一个ldf文件。当SQL Server服务处于开启时,这些文件是无法删除的。 用SQL Server 企业管理器,单击某个数据库,选择右键菜单中的“属性",从弹出对话框的“数据文件”和“事务日志”标签页中可以查看这个数据库对应的mdf文件路径和ldf文件路径。 2. 用SQL Server 企业管理器备份和还原数据库: 例如,备份数据库到可移动存储介质,然后还原到另一台机器上,步骤如下: 备份: 单击要备份的数据库,从右键菜单选择“所有任务->备份数据库”。 选择“完全备份”,删除“备份到”列表框中的现有内容,然后“添加”;弹出“选择备份目的”对话框,“文件名”就是你要得到的备份文件的存放路径。选好后确定,这时“备份到”列表框中出现你选择的目的文件路径。 因为没有重名文件,“追加”或“重写”选项的效果是一样的,不用管。选中它,确定,等待备份完成。完成后在你指定的路径下将看到你备份的文件,注意该文件默认没有后缀名。 备份文件还有很大的压缩空间,一般一个40多M的备份文件用winRAR压缩后只有4M左右,作为邮箱附件也没有问题。 还原: 将备份文件放到一个便于管理的文件夹下,例如你的数据库叫“test”,可以建立一个叫“e:\db_bak\test\”的文件夹。 从SQL Server 企业管理器单击“数据库”,选择“新建数据库...”,起名“test”,确定。看到该数据库出现在数据库列表中,里面只有一些系统tables。注意新建数据库默认的mdf文件和ldf文件都会被放在SQL Server安装目录下的子目录“MSSQL\data\”中,文件名与数据库名称相同。 单击该数据库,从右键列表中选择“所有任务->还原数据库”。弹出“还原数据库”对话框。 选择还原方式:“从设备”,单击“选择设备”弹出“选择还原设备”对话框。选择“还原自磁盘”。

数据库课程设计《SQLServer图书馆管理系统》实例讲解教学内容

数据库系统概论课程设计 图书馆数据库管理系统 小组成员: *** *** ***

QQ: 目录 序言............................................................................... 错误!未定义书签。 一、图书馆管理系统E-R 图 .................................... 错误!未定义书签。 二、图书馆管理系统功能实现示意图....................... 错误!未定义书签。 三、图书馆管理系统功能图例................................... 错误!未定义书签。 3.1 读者借阅图书.................................................. 错误!未定义书签。 3.2 读者归还图书.................................................. 错误!未定义书签。 3.3 读者续借图书.................................................. 错误!未定义书签。 3.4 读者查询借阅图书情况.................................. 错误!未定义书签。 3.5 读者检索图书信息.......................................... 错误!未定义书签。 四、图书馆管理系统附加功能................................... 错误!未定义书签。 4.1 往学生表中插入列"系部",其值等于学号中代表系部的位的值, 再插入列"专业号",其值等于学号中代表专业的位的值错误! 未定义书签。 4.2 查询每个学生对书本的借阅数量.................. 错误!未定义书签。 4.3 查询各个专业的学生借阅书本的数量.......... 错误!未定义书签。 五、图书馆管理系统数据库、数据表源代码........... 错误!未定义书签。 5.1 图书馆管理系统"数据库"源代码 .................. 错误!未定义书签。 5.2 图书馆管理系统"数据表"源代码 .................. 错误!未定义书签。 六、图书馆管理系统存储过程源代码....................... 错误!未定义书签。 6.1 读者借阅图书存储过程.................................. 错误!未定义书签。 6.2 读者还书存储过程.......................................... 错误!未定义书签。 6.3读者续借图书存储过程................................... 错误!未定义书签。 6.4 读者查询借阅图书情况存储过程.................. 错误!未定义书签。 6.5 读者检索的图书信息存储过程...................... 错误!未定义书签。

SQLserver数据库优化

SQLserver数据库优化 在使用索引字段作为条件时,如果该索引是联合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用。iv. 如果临时表的数据量较大,需要建立索引,那么应该将创建 查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。 9、返回了不必要的行和列 10、查询语句不好,没有优化 可以通过如下方法来优化查询: 1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb 应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要. 2、纵向、横向分割表,减少表的尺寸(sp_spaceuse) 3、升级硬件 4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段 5、提高网速; 6、扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。配置虚拟

内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。运行Microsoft SQL Server? 2000 时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的1.5 倍。如果另外安装了全文检索功能,并打算运行Microsoft 搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的 3 倍。将SQL Server max server memory 服务器配置选项配置为物理内存的1.5 倍(虚拟内存大小设置的一半)。 7、增加服务器CPU个数;但是必须明白并行处理串行处理更需要资源例如内存。使用并行还是串行程是MsSQL自动评估选择的。单个任务分解成多个任务,就可以在处理器上运行。例如耽搁查询的排序、连接、扫描和GROUP BY字句同时执行,SQL SERVER根据系统的负载情况决定最优的并行等级,复杂的需要消耗大量的CPU的查询最适合并行处理。但是更新操作Update,Insert,Delete还不能并行处理。 8、如果是使用like进行查询的话,简单的使用index是不行的,但是全文索引,耗空间。like 'a%' 使用索引like '%a' 不使用索引用like '%a%' 查询时,查询耗时和字段值总长度成正比,所以不能用CHAR类型,而是V ARCHAR。对于字段的值很长的建全文索引。 9、DB Server 和APPLication Server 分离;OLTP和OLAP分离 10、分布式分区视图可用于实现数据库服务器联合体。联合体是一组分开管理的服务器,但它们相互协作分担系统的处理负荷。这种通过分区数据形成数据库服务器联合体的机制能够扩大一组服务器,以支持大型的多层Web 站点的处理需要。有关更多信息,参见设计联合数据库服务器。(参照SQL帮助文件'分区视图') a、在实现分区视图之前,必须先水平分区表 b、在创建成员表后,在每个成员服务器上定义一个分布式分区视图,并且每个视图具有相同的名称。这样,引用分布式分区视图名的查询可以在任何一个成员服务器上运行。系统操作如同每个成员服务器上都有一个原始表的复本一样,但其实每个服务器上只有一个成员表和一个分布式分区视图。数据的位置对应用程序是透明的。 11、重建索引DBCC REINDEX ,DBCC INDEXDEFRAG,收缩数据和日志DBCC SHRINKDB,DBCC SHRINKFILE. 设置自动收缩日志.对于大的数据库不要设置数据库自动增长,它会降低服务器的性能。在T-sql的写法上有很大的讲究,下面列出常见的要点:首先,DBMS处理查询计划的过程是这样的: 1、查询语句的词法、语法检查 2、将语句提交给DBMS的查询优化器 3、优化器做代数优化和存取路径的优化 4、由预编译模块生成查询规划 5、然后在合适的时间提交给系统处理执行

SqlServer数据库优化方案

第一部分SQL SERVER数据库优化方案 微软公司的SQL SERVER 是一个功能完备的数据库管理系统,它提供了完整的关系数据库创建、开发和管理功能。现社会信息技术的快速发展,对数据库技术的要求也越来越高,SQL SERVER数据库在信息化的过程中得到了广泛的应用。 第一章数据库系统概述 从20世纪60年代开始到现在,数据库技术经过了30多年的发展。在这30多年的历程中,在数据库技术的理论研究和系统开发上取得了辉煌的成就,确立了数据技术在现代计算机系统中不可或缺的地位。成为现代信息科学与技术的重要组成部分以及计算机数据处理和信息管理系统的核心。 1.1 基本概念 与数据库技术密切相关的基本概念包括:数据、数据库、数据库管理系统和数据库系统四大概念。 1.数据(Data) 数据是对客观事物的一种描述,是由能被计算机识别与处理的数值、字符等符号构成的集合,即数据是指描述事物的符号记录。 广义地说,数据是一种物理符号的序列,用于记录事物的情况,是对客观事物及其属性进行的一种抽象化及符号化的描述。数据的概念应包括数据的内容和形式两个方面。数据的内容是指所描述的客观事物的具体特性,也就是通常所说的数据的“值”;数据的形式则是指数据内容所存储的具体形式,即数据的“类型”。故此,数据可以用数据类型和值来表示。 2.数据库(Data Base,DB) 页脚内容1

数据库是指长期存储在计算机内部、有组织的、可共享的数据集合,即在计算机系统中按一定的数据模型组织、存储和使用的相关联的数据集合成为数据库。 数据库中的数据按照一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性、易扩展性、集中性和共享性,以文件的形式存储在存储介质上的。数据库中的数据由数据库管理系统进行统一管理和控制,用户对数据库进行的各种数据操作都是通过数据库管理系统实现。 3.数据库管理系统(Data Base Management System,DBMS) 数据库管理系统是数据库系统的核心,是为数据库的建立、使用和维护而配置的软件,是位于操作系统与用户之间的一层数据管理软件。主要功能是对数据库进行定义、操作、控制和管理。 1)数据定义 数据的定义包括:定义构成数据库结构的外模式、模式和内模式,定义各个外模式和模式之间的映射,定义模式与内模式之间的映射,定义有关的约束条件。 2)数据处理 对数据的处理操作主要包括对数据库数据的检索、插入、修改和删除等基本操作。 3)安全管理 对数据库的安全管理主要体现在:对数据库进行并发控制、安全性检查、完整性约束条件的检查和执行、数据库的内部维护(如索引、数据字典的自动维护)等。并且能够管理和监督用户的权限,防止拥护有任何破坏或者恶意的企图。 4)数据的组织、存储和管理 负责分类地组织、存储和管理数据库数据,确定以何种文件结构和存取方式物理地组织数据,如何实现数据之间的联系,以便提高存储空间利用以及提高随机查找、顺序查找、增加、删除和查改 页脚内容2

MS_SQL_Server_数据库性能优化方法总结

1.列出数据库服务器、Web服务器的基本的硬件配置,如CPU、内存等。 2.检查数据库服务器是否真正启用了AWE内存。 (1) 启用AWE:数据库服务器检查C:\boot.ini文件,需要配置"/PAE"(*重启电脑才能生效),如下: [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout /fastdetect /PAE (2) 开启sql server 服务用户的,内存中锁定页面权限 (*重启电脑才能生效)在“服务管理”中查看 SQL SERVER 服务登录账户,默认是本地系统帐户(System)。然后在运行 gpedit.msc ,选择计算机配置->windows 设置->安全设置->本地策略->用户权限分配->内存中锁定页面。添加SQL SERVER服务的登录用户到里面去。 (3)启用数据库AWE内存,以服务器8G内存为例,一般设置如下,最小2G,最大6G(重启SQL SERVER服务即可): (4)跟踪数据库性能“Total Server Memory ”的使用情况,看看数据库真正使 用的内存,越接近为数据库分配的最大内存越好。 或使用如下语句,查询数据库的内存使用情况: use master go select * from sysperfinfo where counter_name like '%Total Server Memory(KB)%' go 3.Web服务器监控项:

SQLSERVER 2005版数据库还原及设置方法(全)

数据库还原及设置方法 1数据库还原 1.1 打开SQL2005 首先安装SQL2000或2005,这里以SQL2005为案例进行介绍。找到SQL2005的安装程序,点击“SQL Server Management Studio”,如下图1所示。 图1 在打开的SQL2005初始界面中(如图2所示),【服务器类型】选择“数据库引擎”,【服务器名称】选择计算机名,【身份验证】选择“Windows 身份验证”,选择完毕后点击【连接】按钮,进入SQL,如图3所示。

图2 图3 1.2 还原数据库 展开SQL2005左侧窗口中的结构树,选中【数据库】节点,然后再上面单击右键,选择【还原数据库】如图4所示。选中【还原数据库】菜单按钮后,点击左键,打开该功能,弹出如图5所示界面。在【还原数据库】界面中的右侧面板中的【还原的目标】—【目标数据库】中输入,新的数据库名称,如proecheck、ugcheck等。 数据库名称输入完毕后,在【还原的源】中选择【源设备】选项,点击其后

面的按钮,弹出如图6所示的【指定备份】窗口。 在【指定备份】窗口中点击【添加】按钮,弹出如图7所示的添加数据还原文件的窗口,在弹出的窗口中【文件类型】选择“所有文件”,然后找到你的数据备份文件进行还原。选中数据库备份文件后,点击【确定】按钮,回到图6的界面,再点击【确定按钮】,返回图5界面,在返回的图5界面中【选择用于还原的备份集】列表中增加了备份数据的信息,如图8所示。 选中图8【选择用于还原的备份集】列表中的数据项,点击界面左侧【选择页】中的【选项】,如图9所示。在图9中,查看【还原选项】—【将数据还原为】列表中.mdf和.ldf的文件路径是否正确,即本机上是否包含了这两个路径。如果没有包含,请在计算机上设置某一文件夹来存储这两个文件。该存储路径确认后,点击界面中的【确定】按钮,完成数据还原工作。 图4

SqlserverSQL性能优化经验

Sqlserver SQL性能优化经验 1.选择最有效率的表名顺序(只在基于规则的优化器中有效) SQLSERVER的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表driving table)将被最先处理,在FROM子句中包含多个表的情况下,必须选择记录条数最少的表作为基础表,当SQLSERVER处理多个表时,会运用排序及合并的方式连接它们, 首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行排序;然后扫描第二个表(FROM子句中最后第二个表);最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并 例如: 表TAB1 16,384 条记录表TAB2 5 条记录,选择TAB2作为基础表(最好的方法) select count(*) from tab1,tab2 执行时间0.96秒,选择TAB2作为基础表(不佳的方法) select count(*) from tab2,tab1 执行时间26.09秒; 如果有3个以上的表连接查询,那就需要选择交叉表(intersection table)作为基础表,交叉表是指那个被其他表所引用的表 例如: EMP表描述了LOCATION表和CATEGORY表的交集 SELECT * FROM LOCATION L, CATEGORY C, EMP E WHERE E.EMP_NO BETWEEN 1000 AND 2000 AND E.CAT_NO = C.CAT_NO AND E.LOCN = L.LOCN 将比下列SQL更有效率 SELECT * FROM EMP E , LOCATION L , CATEGORY C WHERE E.CAT_NO = C.CAT_NO AND E.LOCN = L.LOCN AND E.EMP_NO BETWEEN 1000 AND 2000

批处理(bat)实现SQLServer数据库备份与还原

批处理(bat)实现SQLServer数据库备份与还原

-- SQLServer2000数据库系统清理用户数据库日志和备份用户数据库数据脚本 declare @dumpfile varchar(50) declare @msg varchar(70) select @dumpfile ='d:\backup\north'+datename(dw,getdate())+'.bak' select @msg=convert(char(26),getdate(),9)+'-----正在清理日志......' print @msg backup tran northwind with truncate_only if(@@ERROR<> 0 ) begin select @msg=convert(char(26),getdate(),9)+'-----清理日志失败或出现异常......' print @msg end else begin select @msg=convert(char(26),getdate(),9)+'-----清理日志完毕......' print @msg end select @msg=convert(char(26),getdate(),9)+'-----开始备份northwind数据库.....' print @msg backup database northwind to disk=@dumpfile if(@@ERROR<> 0 ) begin select @msg=convert(char(26),getdate(),9)+'-----备份数据失败或出现异常' print @msg end else begin select @msg=convert(char(26),getdate(),9)+'-----数据库备份完毕' print @msg end @net start "mssqlserver" @isql -Usa -Psa -i d:\backup\sqlserverbackup.sql -o d:\backup\sqlserverbackup.out @echo ……正在备份中…… @pause --2.数据库还原脚本sqlserverrestore.sql 1

Sqlserver查询性能分析

Sqlserver查询性能分析(执行结果分析) 1、方法 在查询窗口中输入以下命令 dbcc dropcleanbuffers --注释:清除数据 dbcc freeproccache --注释:清除缓存 这是为了每次查询时,不会因为重复查询对结果有干扰,接着在窗口中输入以下命令。 Set statistics io on --注释:开启系统资源使用统计 Set statistics time on --注释:开启执行时间统计 然后在窗口中输入查询命令 如:SELECT TOP 1000000 * FROM [SearchInfo] 在消息框中就会出现如下结果 SQL Server parse and compile time: CPU time = 0 ms, elapsed time = 0 ms. (999999 row(s) affected) Table 'SearchInfo'. Scan count 1, logical reads 17890, physical reads 29, read-ahead reads 17309, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. SQL Server Execution Times: CPU time = 2153 ms, elapsed time = 22354 ms. 2、参数 SQL Server parse and compile time 这是指sql server解析语句的时间。(999999 row(s) affected)查询到的数据量,这个你知道咯,只要你的目的是明确的,那么查询到的数据量应该是不变的,如果改变,那么你的逻辑是不一致的对不对! Table 'SearchInfo'. Scan count 1, logical reads 17890, physical reads 29, read-ahead reads 17309, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 这一串表示什么呢, 表示数据表'SearchInfo',扫描1次(Scan count)在逻辑区读取了17890次(logical reads)在物理区读取了29次(physical reads)提前读取17309次(read-ahead reads)lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. 100万条数据全都是0,你懂的,忽略它吧 那这串数据中没被忽略的哪些有用呢,表的扫描次数Scan count有用的,查询次数的多少表示这个资源你用了多少次,逻辑区读取次数非常有用,我们知道,SQL Server在可以对任何数据进行操作前,必须首先把数据读取到其数据缓冲区中。此外,我们也知道SQL Server 何时会从数据缓冲区中读取数据,并把数据读取到大小为8K字节的页中。Logical Reads是指SQL Server为得到查询中的结果而必须从数据缓冲区读取的页数。在执行查询时,SQL Server不会读取比实际需求多或少的数据,因此,当在相同的数据集上执行同一个查询,得到的Logical Reads的数字总是相同的。 物理区读取咱忽略它吧,为什么呀? SQL Server在执行查询时所需要的物理区读取次数不可能通过性能调节而减少的。减少物理读的次数是DBA的一项重要工作,但它涉及到整个服务器性能的调节,而不仅仅是查询性能的调节。在进行查询性能调节时,我们不能控制数据缓冲区的大小或服务器的忙碌程

SqlServer数据库的备份和恢复操作图解

SqlServer数据库的备份和恢复操作图解 备份数据库 1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server -->SQL Server组-->双击打开你的服务器-->双击打开数据库目录(如图1-1)。 图1-1 2、选择你的数据库名称(如数据库MyData)--> 然后点上面菜单中的工具--> 选择备份数据库(如图1-2)。

图1-2 3、备份选项选择完全备份,目的中的备份到如果原来有路径和名称则选中名称点删除,然后点添加,如果原来没有路径和名称则直接选择添加,接着指定路径和文件名,指定后点确定返回备份窗口,接着点确定进行备份(如图1-3)。 图1-3

还原(恢复)数据库 1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组--> 双击打开你的服务器-->鼠标右键点击‘数据库’-->新建数据库(数据库名称可自行取)(如图1-4)。 图1-4 2、点击新建好的数据库名称(如数据库mydb)-->然后点上面菜单中的工具-->选择恢复数据库(如图1-5)。

图1-5 3、在弹出来的窗口中的还原选项中选择从设备-->点选择设备-->点添加-->然后选择你的备份文件名-->添加后点确定返回,这时候设备栏应该出现您刚才选择的数据库备份文件名,备份号默认为1(如果您对同一个文件做过多次备份,可以点击备份号旁边的查看内容,在复选框中选择最新的一次备份后点确定)-->然后点击上方常规旁边的选项按钮(如图1-6)。 图1-6 4、在出现的窗口中选择在现有数据库上强制还原,以及在恢复完成状态中

相关文档
最新文档