当前位置:首页 » 编程语言 » sqlserveroltp
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sqlserveroltp

发布时间: 2023-01-04 13:29:33

sqlserver和oracle主要有什么区别

1,oracle支持多种操作系统,sql server只支持windows。
2,oracle给dba更多的灵活性,可以根据实际情况调整参数,使你的应用的性能最佳,因而带来一个缺点是很难上手;sql server则相反,当然很容易上手。
体系结构
oracle的文件体系结构为:
数据文件 .dbf(真实数据)
日志文件 .rdo
控制文件 .ctl
参数文件 .ora
sql server的文件体系结构为:
.mdf (数据字典)
.ndf (数据文件)
.ldf (日志文件)
www.2cto.com
oracle存储结构:
在oracle里有两个块参数pctfree(填充因子)和pctused(复用因子),可控制块确定块本身何时有,何时没有足够的空间接受新信息(对块的存储情况的分析机制)
这样可降低数据行连接与行迁移的可能性。块的大小可设置(oltp块和dss块)
在oracle中,将连续的块组成区,可动态分配区(区的分配可以是等额的也可以是自增长的)可减少空间分配次数
在oraclel里表可以分为多个段,段由多个区组成,每个段可指定分配在哪个表空间里(段的类型分为:数据段、索引段、回滚段、临时段、cash段。oracle里还可对表进行分区,可按照用户定义的业务规则、条件或规范,物理的分开磁盘上的数据。
这样大大降低了磁盘争用的可能性。
oracle有七个基本表空间:
·system表空间(存放数据字典和数据管理自身所需的信息)
·rbs回滚表空间
·temp临时表空间
·tools交互式表空间
·users用户默认表空间
·indx索引表空间
·dbsys福数据表空间
不同的数据分别放在不同的表空间(数据字典与真实数据分开存放),在oracle里基表(存储系统参数信息)是加密存储,任何人都无法访问。只能通过用户可视视图查看。

sql server 存储结构
以页为最小分配单位,每个页为8k(不可控制,缺乏对页的存储情况的分析机制),可将8个连续的页的组成一个‘扩展’,以进一步减少分配时所耗用的资源。(分配缺乏灵活性),在sql server里数据以表的方式存放,而表是存放在数据库里。
sql server有五个基本数据库: www.2cto.com
·master(数据字典)
·mode(存放样版)
·tempdb(临时数据库)
·msdb(存放调度信息和日志信息)
·pubs(示例数据库)
真实数据与数据字典存放在一起。对系统参数信息无安全机制。

oracle登入管理:
·system/manager (初始帐户)
·sys/change_on_nstall
·install/oracle(安装帐户)
·scott/tiger(示例数据库,测试用)
在oracle里默认只有三个系统用户,oracle是通过用户登入。

sql server登入管理:
·sql server身份验证
·windows 身份验证
在sql server里是通过windows用户帐户或是用sql server身份验证连接数据库的。

sql不是一种语言,而是对oracle数据库传输指令的一种方式。
sql中null既不是字符也不是数字,它是缺省数据。oracle提供了nvl函数来解决。
oracle中的字符串连接为 string1‖string2 ,sql中为string1+string2.
集合操作:在sql中只有union(并操作),oracle中包含minus(差操作)、interect(交操作)、union(并操作)。

索引:sql的索引分为聚集索引和非聚集索引,还包括全文索引;
oracle的索引包括:b+树索引,bitmap位图索引,函数索引,反序索引,
主键索引,散列索引,本地索引。 www.2cto.com
oracle的数据类型比较复杂,有基本数据类型,衍生型,列对象型,表对象型,结构体型;

sql中的数据比较简单,只有一些简单的基本数据类型无法提供事务操作。
在sql中如果一个事务从开始执行到结束时了错了,它就会回滚到开始之前;
在oracle中它采用的是定点回滚,就是该事务函数化和精确错误定位,用savepoint标记保存点,用rollback标记回滚错误的保存点。
在sql中循环只有while一种这用起来不灵活,在oracle中有多种循环(loop循环、while循环、for循环)。
在sql中游标的使用比较复杂,不能同时打开一个以上的游标,因为它只有一个全局变量@@fast_statues而且声明游标也麻烦,关闭游标时也不清除内存的;oracle中游标是以提高速度全部统一的单项游标,可以允许多用户异步读取,而且声明比较简单,就一句declare cursor游标名 is select 语句就可以了。
容错机制:sql中的错误机制比较复杂,没有提供错误描述;oracle中容错类型有三种,一个是预定义错误,一个是非预定义错误,一个是用户自定义,其中在自定义错误中它有两个是在sql中不有的,那就是sqlcode 错误号、sqlerrm错误描述。

文件体系结构:sql中有.mdf(主要数据文件)、.ndf(扩展文件,可以有多个)、
.ldf(日志文件,可以有多个,存放在联机重做日志数据,这里的日志文件有一个缺点就是如果日志文件已填小巧玲珑的话,sql将自动停止运行并等待人工干预,所以要经常监控日志的情况保证系统的稳定运行)。oracle中有.dbf(主要数据文件)、.rdo(日志文件,用来做灾难性的数据备份)、.ctl(控制文件,将数据库的物理文件映射到了数据字典中的逻辑表空间和连机重做日志文件上去,确保数据的一致性)、.ora(参数文件)。

sql只能是本机备份本机的数据库,无法联机备份,而且备份压缩很低,占用了大量空间;oracle提供了7种备份机制,具有联机备份功能,有志门的备份机子。
oracle的日志默认有3个,先写入1号日志,满了后再写入2号日志,2号满了再写入3号日志,3号满了后oracle将自动备分1号日志的内容,然后清空后写入新的日志信息,且oracle的日志有多路复用功能,我们可以为日志创建多个镜像,把相同的日志信息同时写入多个日志文件中,这样可以防止磁盘损坏造成的数据丢失。
sql server对每个数据库只能分配一个日志文件。且当日志填满后,日志将停止工作,等待人工干预,而无法自动重用。 www.2cto.com
oracle的控制文件记录了数据库文件的物理位置和有效性,在每次打开oracle系统都将自动对数据进行验证,查看其有效性,防止数据的丢失,这体现了oracle对数据管理的严密性。
sql server无此安全机制,只用在使用到了数据库的信息后,系统才去查找数据是否存在。
oracle的参数文件init.ora是可调的,既我们可以根据数据库的规模调整oracle对系统资源的使用情况,以达到最合理的资源分配,让oracle达到最佳的性能。

sql server的配置参数是内定的不可调整,它对系统资源的分配是固定的,不受拥护控制,因此无法同时处理大量用户的需求,这限制了它只能作为中,小型数据库。
oracle以块为最小存储单位,以区为单位分配空间,用户可以根据需要自己定义块的大小,且区可以按等额或递增进行分配,这可以大大减少系统的i/o操作提高数据库的性能。
sql server中以页为单位或使用扩展类型以8页为一单位进行空间分配而无法人工干预,当遇到频繁存储或大数据量存储时,系统将频繁进行i/o操作使工作效率低下。
oracle中的sql语句书写规范且提供了完整的函数和数据类型。oracle提供了健全的错误机制,用户可以轻松的获得错误位置和错误原因而加以修改。用户还可以自己定义所须的错误类型,用以检查逻辑错误。oracle中对数据类型的转换和游标的定义也十分方便。因此,我们对代码的书写和维护也比sql server方便许多。
sql server使用类c语言,不易维护和查看代码。sql server包含的数据类型太少,无法定义结构体,数组,对象。sql server无法定义流程机制,类型转换也极不方便,sql server中对游标定义十分复杂,且当用户定义的多个游标同时打开时系统却只有一个游标变量,这是sql server中一个严重的缺陷。

oracle中用户可以根据数据需要在创建块时定义填充因子(空闲空间的百分比)和复用因子(当块的存储数据所占的空间下降到这个百分比之下时,块才重新标记为可用)。用户可以根据记录变化频率和数据量的大小设置合适的填充因子和空闲因子。

sql server只有填充因子,而它的定义与oracle刚好相反,它定义的是剩余可用空间的百分比。而sql server中没有复用因子,当页中数据低于填充因子,但剩余的空间已经不可能再插入新的数据,但页还是标记为可用的,当系统要写入新数据都要访问这个页而浪费时间,这种页称为废页,将使系统插入新数据时浪费大量时间查找可用的页。

oracle在创建表时用户可以精确定义数据存放的表空间,甚至可以把一张表分开存放在多个表空间中,这样可以将数据量庞大的表按某些字段分开存放,这将给查询带来极高的效率。
www.2cto.com
随着信息技术的飞速发展,数据处理不仅在数量上要求越来越大,而且在质量上也要求越来越高。

操作系统的稳定对数据库来说是十分紧要的,在数据库可操作平台上,oracle可在所有主流平台上运行,oracle数据库采用开放的策略目标,它使得客户可以选择一种最适合他们特定需要的解决方案。客户可以利用很多种第三方应用程序、工具。对开发商来说是很大的支持。而sql server却只能在windows上运行了,这个就显得比较单调了,但sql sever在window平台上的表现,和windows操作系统的整体结合程度,使用方便性,和microsoft开发平台的整合性都比oracle强的很多。但windows操作系统的稳定性及可靠性大家是有目共睹的,再说microsoft公司的策略目标是将客户都锁定到windows平台的环境当中,只有随着windows性能的改善,sql server才能进一步提高。从操作平台这点上oracle是完全优胜于sql server的了。
从资料上可以看到,oracle的安全认证获得最高认证级别的iso标准认证,而sql server并没有获得什么安全认证。这方面证明了oracle的安全性是高于sql server的。

购买一个产品,首先考虑的当然是产品的性能了,当考虑性能的同时当然少不了究竟要花多少钱在这产品也是个很关键的问题。要建立并运行一个数据库系统。不仅仅包含最初购置软件、硬件的费用,还包含了培训及以后维护的费用。orcale数据库的价格是远比sql server数据库要高,为什么oracle数据库比sql server数据库价格上要高出那么多,一方面oracle的初始花费相对较高,特别是在考虑工具软件的时候,oracle很多工具软件需要另外购买,与microsoft提供免费的sql server工具软件相比,oracle更显价格的不菲。但由于sql server只能在windows下运行的原因,普遍认为sql server数据库的可靠性是比较差的。oracle的性能优势体现在他的多用户上,而sql server的性能优势在多用户上就显得力不从心了。

操作上sql server明显要比orcale简单,如果你用过java和dotnet的开发平台,区别的基本就是oracle和sql server不同,oracle的界面基本是基于java的,大部分的工具是dos界面的,甚至sqlplus也是, sql server是跟vb一样,全图形界面,很少见到dos窗口。sql server中的企业管理器给用户提供一个全图形界面的集成管理控制台来集中管理多个服务器。oracle也有自己的企业管理器,而且它的性能在某些方面甚至超过了sql server的企业管理器,但它安装较为困难。
orcale数据库和sql server数据库那个更快?其实是一个很难答的问题,因为存在许多不定因素,包括处理类型、数据分布以及硬件基础设施等。
sql server 2000是一个具备完全web支持的数据库产品,提供了可扩展标记语言核心支持以及internet上和防火墙外进行查询的能力,具有可伸缩性、灵活性、扩充性好,而且价格便宜等特点,而oracle则有着可靠安全性,速度比sql server快上百倍,但其价格在实施中却比sql server它高出了几百倍。
其实各行业考虑选择那种数据库,是由数据库的特点以及根据自己的业务需求和基础设施综合考虑来决定的。

② 在SQLServer中使用索引的技巧

在SQL Server中 为了查询性能的优化 有时我们就需要对数据表通过建立索引的方式 目的主要是根据查询要求 迅速缩小查询范围 避免全表扫描

索引有两种类型 分别是聚集索引(clustered index 也称聚类索引 簇集索引)和非聚集索引(nonclustered index 也称非聚类索引 非簇集索引)

聚集索引在一个表中只能有一个 默认情况下在主键建立的时候创建 它是规定数据在表中的物理存储顺序 我们也可以取消主键的聚集索引 所以必须考虑数据库可能用到的查询类型以及使用的最为频繁的查询类型 对其最常用的一个字段或者多个字段建立聚集索引或者组合的聚集索引 它就是SQL Server会在物理上按升序(默认)或者降序重排数据列 这样就可以迅速的找到被查询的数据

非聚集索主要是数据存储在一个地方 索引存储在另一个地方 索引带有指针指向数据的存储位置 索引中的项目按索引键值的顺序存储 而表中的信息按另一种顺序存储 可以在一个表格中使用高达 个非聚集的索引 在查询的过程中先对非聚集索引进行搜索 找到数据值在表中的位置 然后从该位置直接检索数据 这使非聚集索引成为精确匹配查询的最佳方法 因为索引包含描述查询所搜索的数据值在表中的精确位置的条目

所以我们在选择创建聚集索引的时候要注意以下几个方面

) 对表建立主键时 就会为主键自动添加了聚集索引 如自动编号字段 而我们没有必要把聚集索引浪费在主键上 除非你只按主键查询 所以会把聚集索引设置在按条件查询频率最高的那个字段或者组合的字段

) 索引的建立要根据实际应用的需求来进行 并非是在任何字段上建立索引就能提高查询速度 聚集索引建立遵循下面几个原则

包含大量非重复值的列

使用下列运算符返回一个范围值的查询 BEEEN > >= < 和 <=

被连续访问的列

返回大型结果集的查询

经常被使用联接或 GROUP BY 子句的查询访问的列;一般来说 这些是外键列 对ORDER BY 或 GROUP BY 子句中指定的列进行索引 可以使 SQL Server 不必对数据进行排序 因为这些行已经排序 这样可以提高查询性能

OLTP 类型的应用程序 这些程序要求进行非常快速的单行查找(一般通过主键) 应在主键上创建聚集索引

举例来说 银行交易日志中对交易日期建立聚合索引 数据物理上按顺序存于数据页上 重复值也排列在一起 因而在范围查找时 可以先找到这个范围的起末点 且只在这个范围内扫描数据页 避免了大范围扫描 提高了查询速度 而如果我们对员工的基本信息表中性别的字段列上建立聚集索引 就完全没有必要 因为内容里只涉及到 男 与 女 两个不同值

) 在聚集索引中按常用的组合字段建立索引 形成复合索引 一般在为表建立多个主键的时候就会产生 如果一个表中的数据在查询时有多个字段总是同时出现则这些字段就可以作为复合索引 这样能形成索引覆盖 提高where语句的查询效率

)索引对查询有一这的优化 但由于改变一个表的内容 将会引起索引的变化 频繁的对数据操作如insert update delete语句将导致系统花费较大的代价进行索引更新 引起整体性能的下降 一般来讲 在对查询性能的要求高于对数据维护性能要求时 应该尽量使用索引 有时在这种操作数据库比较频繁的某些极端情况下 可先删除索引 再对数据库表更新大量数据 最后再重建索引 新建立的索引总是比较好用

索引在使用了长久的时候 就会产生很多的碎片 查询的性能就会受到影响 这时候有两种方法解决 一是利用DBCC INDEXDEFRAG整理索引碎片 还有就是利用DBCC DBREINDEX重建索引

DBCC INDEXDEFRAG 命令是联机操作 所以索引只有在该命令正在运行时才可用 而且可以在不丢失已完成工作的情况下中断该操作 这种方法的缺点是在重新组织数据方面没有聚集索引的除去/重新创建操作有效

重新创建聚集索引将对数据进行重新组织 其结果是使数据页填满 填满程度可以使用 FILLFACTOR 选项进行配置 这种方法的缺点是索引在除去/重新创建周期内为脱机状态 并且操作属原子级 如果中断索引创建 则不会重新创建该索引

我们来看看索引重建使用的方法

语法 DBCC DBREINDEX ( [ TableName [ index_name [ fillfactor ] ] ] )

参数 TableName

是要重建其指定的索引的表名 数据库 所有者和表名必须符合标识符的规则 有关更多信息 请参见使用标识符 如果提供 database 或 owner 部分 则必须使用单引号 ( )

将整个 database owner table_name 括起来 如果只指定 table_name 则不需要单引号

index_name 是要重建的索引名 索引名必须符合标识符的规则 如果未指定 index_name 或指定为 就要对表的所有索引进行重建

fillfactor 是创建索引时每个索引页上要用于存储数据的空间百分比 fillfactor替换起始填充因子以作为索引或任何其它重建的非聚集索引(因为已重建聚集索引)的新默认值 如果 fillfactor 为 DBCC DBREINDEX 在创建索引时将使用指定的起始fillfactor

我们在查询分析器中输入如下的命令

DBCC DBREINDEX ( MyTable )

lishixin/Article/program/SQLServer/201311/22210

③ 怎样查出SQLServer的性能瓶颈

SQLServer性能监控

这套性能优化的清单将至少准科学的帮助你找出你的SQLServer任何明显的性能问题。说是这样说,SQLServer的性能调优仍然是很困难的。我试图用这套清单去找出“容易”的sqlserver性能问题,困难的留待稍后。我这样做是因为很容易将容易和困难的的性能调优问题搞混。通过列出一个“容易”的性能调优范围,就很容易的将这些问题解决,一旦解决了这些容易的问题,那么你就能集中去解决更困难的问题。

使用这个SQLServer性能调优清单的一个好处是,它将不仅仅告诉你目前最容易解决的性能问题是什么,而且还帮助你正确的去解决。在某种程度上,你可以选择不同的顺序进行。换句话说,你可以故意做出特殊的决定而不是按照清单通常的顺序进行。某种意义上说你是对的,不是所有的性能调优建议都适合所有的情形。另外,你的决定是基于你的资源限制,例如没有足够的钱去买满足负荷的硬件。如果真是那样的话,你就别无选择了。还有,你的决定可能基于一些政治原因,那是你不得不作出的改变。不管怎样,你需要知道你能做什么,使用这个性能调优清单找出你能改变的范围并做出相应的改变提升你的SQLServer的性能。

一般来说,你将在你的每一个SQL服务器上执行这个清单。如果遇到清单中的一些问题,这会花掉你一些时间。我建议你从目前性能问题最多的的服务器开始,然后当你有时间的时候按照自己的思路去解决其他服务器。

一旦你完成了,可仍然有很多事情要去做。记住,这些只是一些容易的。一旦你完成了这些容易的,接下来你需要花时间去解决更困难问题。这个是另一篇文章要解决的问题了。

怎样进行你的SQLServer性能调优呢?

为了使其变得容易,我把它们分成了以下几个部分:
? 使用性能监视器找出硬件瓶颈
? SQLServer硬件性能监控列表
? 操作系统性能监控列表
? SQLServer2000配置性能监控列表
? 数据库配置设置性能监控列表
? 索引性能监控列表
? 应用程序和T-SQL性能监控列表
? SQLServer数据库作业性能监控列表
? 使用Profiler找出低效的查询
? 怎样最好的实现SQLServer性能监控
管理你的SQLServe性能的最好方法是首先回顾上面每一部分的内容,把它们打印出来。然后完成每一部分的内容,写下你收集到的结果。你也可以按照你喜欢的顺序进行。上面的步骤仅仅列出了我执行的顺序,因为那样通常能达到一个比较好的效果。

性能监控列表
计数器名称 均值 最小值 最大值
Memory: Pages/sec
Memory: Available Bytes
Physical Disk: % Disk time
Physical Disk: Avg. Disk Queue Length
Processor: % Processor Time
System: Processor Queue Length
SQL Server Buffer: Buffer Cache Hit Ratio
SQL Server General: User Connections

在上表输入你的结果.

使用性能监视器找出SQLServer硬件瓶颈

开始SQLServer性能调优的最佳地方就是从性能监视器(系统监视器)开始。通过一个24小时的周期对一些关键的计数器进行监控,你将对你SQLServer服务器的硬件瓶颈了如指掌。

一般来说,使用性能监视器去创建一个一些关键的计数器的24小时周期的监控日志。当你决定创建这个日志的时候,你需要选择一个典型的24小时的周期,例如,选择一个典型的比较忙的日期,而不是周日或节假日。

一旦你将这些捕获的数据形成日志后,在性能监视器的图形界面下会显示计数器的推荐值。你在上表中记下均值、最小值、峰值。做完这些后,用你的结果跟下面的分析比较。通过你的结果和下面的建议值进行比较,你将能快速的找到你的SQLServe正在经历的潜在的硬件瓶颈。

关键性能计数器说明

下面是不同关键性能计数器的一个讨论,它们的建议值和为了帮助解决硬件瓶颈问题的一些选项。注意我已经限制了性能监视器需要监视的一些关键计数器。我这么做是因为在本文我们的目的是为了容易的找到显而易见的性能问题,许多其他的性能监视器计数器你能在本网站其他地方找到。

Memory: Pages/sec

这个计数器记录的是每秒钟内存和磁盘之间交换的页面数。交换更多的页面、超过你服务器承受的更多的I/O,将轮流降低你SQLserver的性能。你的目的就是尽量将页面减少到最小,而不是消除它。

如果你的服务器上SQLServer是最主要的应用程序,那么这个值的理想范围是0~20之间。可能很多时候你看到的值都会超过20。这个值一般要保持在每秒的平均页数在20以下。

如果这个值平均总是超过20,其中最大的一个可能是内存瓶颈问题,需要增加内存。通常来说,更多的内存意味着需要执行的页面更少。
在大多数情况下,服务器决定SQLServer使用的适当内存的大小,页面将平均小于20。给SQLServer适当的内存意味着服务器的缓存命中率(Buffer Hit Cache Ratio 这个稍后会讲到)达到99%或者更高。如果在一个24小时的周期里你的sqlserver的缓存命中率达到99%或者更高,但是在这个期间你的页面数总是超过20,这意味着你或许运行了其他的程序。如果是这样的情况,建议你移除这些程序,使SQLServer是你的服务器的最主要的程序。

如果你的sqlserver服务器没有运行其他程序,并且在一个24小时的周期里页面数总是超过20,这说明你应该修改你对SQLServer的内存设置了。将其设置为“动态配置SQLServer的内存”,并且最大内存设置得高一些。为了达到最优,SQLServer将尽可能的获得多的内存以完成自己的工作,而不是去和其他的程序争夺内存。

Memory: Available Bytes

另一个检查SQLServer是否有足够的物理内存的方法是检查Memory Object: Available Bytes计数器。 这个值至少大于5M,否则需要添加更多的物理内存。在一个专门的SQLServer服务器上,SQLServer试图维持4-10M的自由物理内存,其余的物理内存被操作系统和SQLServer使用。当可用的物理内存接近5M或者更低时,SQLServer最可能因为缺少内存而遇到性能瓶颈。遇此情况,你需要增加物理内存以减少服务器的负荷,或者给SQLServer配置一个合适的内存。

Physical Disk: % Disk Time

这个计数器度量磁盘阵列繁忙程度(不是逻辑分区或磁盘阵列上独立的磁盘)。它提供一个对磁盘阵列繁忙程度相对较好的度量。原则上计数器% Disk Time的值应该小于55%。如果持续超过55%(在你24小时的监控周期里大约超过10分钟),说明你的SQLServer有I/O瓶颈。如果你只是偶尔看到,也不必太担心。但是,如果经常发生的话(也就是说,一个小时出现好几次),就应该着手寻找增加服务器I/O性能或者减少服务器负荷的解决之道了。一般是为磁盘阵列增加磁盘,或者更好更快的磁盘,或者给控制器卡增加缓存,或者使用不同版本的RAID,或者更换更快的控制器。

在NT4.0上使用该计数器之前,确认在NT命令提示符下输入diskperf -y,重启服务器,以便手动打开。在NT4.0下第一次必须将该计数器打开,Windows2000默认是打开的。

Physical Disk: Avg. Disk Queue Length

除了观察物理磁盘的% Disk Time计数器外,还可以用Avg. Disk Queue Length计数器。磁盘阵列中的各个磁盘的该值如果超过2(在你24小时的监控周期里大约超过10分钟),那么你的磁盘阵列存在I/O瓶颈问题。象计数器% Disk Time一样,如果只是偶尔看到,也不必太担心。但是,如果经常发生的话,就应该着手寻找增加服务器I/O性能的解决之道了。如前所述。

你需要计算这个值,因为性能监视器不知道你的磁盘阵列中有多少物理磁盘。例如,如果你有一个6个物理磁盘组成的磁盘阵列,它的Avg.
Disk Queue Length值为10,那么实际每个磁盘的值为1.66(10/6=1.66),它们都在建议值2以内。

在NT4.0上使用该计数器之前,确认在NT命令提示符下输入diskperf -y,重启服务器,以便手动打开。在NT4.0下第一次必须将该计数器打开,Windows2000默认是打开的。

一起使用这两个计数器将帮助你找出I/O瓶颈。例如,如果% Disk Time的值超过55%,Avg. Disk Queue Length计数器值超过2,服务器则存在I/O瓶颈。

Processor: % Processor Time

处理器对象: % Processor Time计数器对每一个CPU可用,并针对每一个CPU进行检测。同样对于所有的CPU也可用。这是一个观察CPU利用率的关键计数器。如果% Total Processor Time计数器的值持续超过80%(在你24小时的监控周期里大约超过10分钟),说明CPU存在瓶颈问题。如果只是偶尔发生,并且你认为对你的服务器影响不大,那没问题。如果经常发生,你应该减少服务器的负载,更换更高频率的CPU,或者增加CPU的数量或者增加CPU的2级缓存(L2 cache)。

System: Processor Queue Length

根据% Processor Time计数器,你可以监控Processor Queue Length计数器。每个CPU的该值如果持续超过2(在你24小时的监控周期里大约超过10分钟),那么你的CPU存在瓶颈问题。例如,如果你的服务器有4个CPU,Processor Queue Length计数器的值总共不应超过8。

如果Processor Queue Length计数器的值有规律的超过建议的最大值,但是CPU利用率相对不是很高,那么考虑减少SQLServer的"max worker threads"的配置值。Processor Queue Length计数器的值高的可能原因是有太多的工作线程等待处理。通过减少"maximum worker threads"的值,强迫线程池踢掉某些线程,从而使线程池得到最大的利用。

一起使用计数器Processor Queue Length和计数器% Total Process Time,你可以找到CPU瓶颈,如果都显示超过它们的建议值,可以确信存在CPU瓶颈问题。

SQL Server Buffer: Buffer Cache Hit Ratio

SQL Server Buffer中的计数器Buffer Cache Hit Ratio用来指出SQLServer从缓存中而不是磁盘中获得数据的频率。在一个OLTP程序中,该比率应该超过90%,理想值是超过99%。如果你的buffer cache hit ratio低于90%,你需要立即增加内存。如果该比率在90%和99%之间,你应该认真考虑购买更多的内存了。如果接近99%,你的SQLServer性能是比较快的了。某些情况下,如果你的数据库非常大,你不可能达到99%,即使你在服务器上配置了最大的内存。你所能做的就是尽可能的添加内存。

在OLAP程序中,由于其本身的工作原理,该比率大大减少。不管怎样,更多的内存总是能提高SQLServer的性能。

SQL Server General: User Connections

既然sqlserver的使用人数会影响它的性能,你就需要专注于sqlserver的General Statistics Object: User Connections计数器。它显示sqlserver目前连接的数量,而不是用户数。
如果该计数器超过255,那么你需要将sqlserver的"Maximum Worker Threads" 的配置值设置得比缺省值255高。如果连接的数量超过可用的线程数,那么sqlserver将共享线程,这样会影响性能。"Maximum Worker Threads"需要设置得比你服务器曾经达到的最大连接数更高。

④ sqlserver2005 执行功能和分析功能的区别

执行功能和分析功能的区别
一般不这样说,
常说 oltp 或者 olap
在常用“生产过程”(指普通的商业环境中)用oltp,要求每单位时间能处理的事情要多,(说白了,就是单位时间内”修改数据次数“要多),普通家用机配置,这个数大约就是每秒200次,多了就的用专门的服务器了。
在“分析系统”过程中,数据往往是批量导入,或自动,或手动,对数据库查询要多,修改要少,这样整个数据库的结构设就会和生产数据库大不相同。
而且查询时间有可能很长,和生产库也不同,(生产数据库一般查询超时30秒,超时间了,肯定扔出)。

⑤ sql server 2008 reporting services有什么用

Sql server 2008 Reporting Services是微软的数据库报表设计工具,其作用是利用Reporting Services,用户能够高效地开发数据报表。

Sql server 2008 Reporting Services集成在微软的商业智能开发工具:SQL Server Business Intelligence Development Studio之中,这个工具其实就是大家熟悉的Visual Studio。

(5)sqlserveroltp扩展阅读:

Reporting Services为用户提供了各种数据模板。 基于数据模板,用户可以构建各种样式的报表,包括常用的表格,矩阵和图表。

此外,Reporting Services支持的数据源大致分为两种类型:

(1)OLTP,是基于SQL语句的数据源,使用关系数据库为报表提供数据。

(2)OLAP,基于数据仓库的数据源,使用多维数据集为报表提供数据。

⑥ 如何测试sqlserver性能

对于DBA来讲,我们都会做新服务器的性能测试。我会从TPC的基准测试入手,使用HammerDB做整体性能评估(前身是HammerOra),跟厂商数据对比。再使用DiskSpd针对性的测试磁盘IO性能指标(前身是SQLIO),再到SQLIOSIM测试存储的完整性,再到ostress并发压力测试,对于数据库服务器迁移,我们还会收集和回放Profiler Trace,并收集期间关键性能计数器做对比。
下面我着重谈谈使用HammerDB的TPC-C来做SQL Server基准测试。
自己写负载测试代码很困难
为了模拟数据库的负载,你想要有多个应用程序用户和混合数据读写的语句。你不想总是对单一行更新相同的值,或者只是重复插入假的值。
自己动手使用Powershell、C#等语言写负载测试脚本也不是不可能,只是太消耗时间,你需要创建或者恢复数据库,并做对应的测试。
免费而简单的压测SQL Server:使用HammerDB模拟OLTP数据库负载
HammerDB是一个免费、开源的工具,允许你针对SQL Server、Oracle、MySQL和PostgreSQL等运行TPC-C和TPC-H基准测试。你可以使用HammerDB来针对一个数据库生成脚本并导入测试。HammerDB也允许你配置一个测试运行的长度,定义暖机阶段,对于每个运行的虚拟用户的数量。
首先,HammerDB有一个自动化队列,让你将多个运行在不同级别的虚拟用户整合到一个队列--你可以以此获得在什么级别下虚拟用户性能平稳的结果曲线。你也可以用它来模拟用于示范或研究目的的不同负载。
用于SQL Server上的HammerDB的优缺点
HammerDB是一个免费工具,它也极易访问和快速的启动基准测试和模拟负载的方法。它的自动程序特性也是的运行工作负载相当自动。
主要缺点是它有一个学习曲线。用户界面不是很直观,需要花费时间去习惯。再你使用这个工具一段时间之后,将会更加容易。
HammerDB也不是运行每一个基准测试。它不运行TPC-E基准,例如,SQL Server更热衷于当前更具发展的OLTP基准TPC-E。如果你用HammerDB运行一个TPC-C基准,你应该理解它不能直接与供应商提供的TPC-C基准结果相比较。但是,它是免费的、快速的、易用的。
基准测试使用案例
基准测试负载不能精确模拟你的应用程序的特点。每个负载是唯一的,在不同的系统有不同的瓶颈。对于很多使用案例,使用预定义的基准测试仍然是非常有效的,包括以下性能的比较:
多个环境(例如:旧的物理服务器,新的虚拟环境)
使用各种因素的不同及时点(例如:使用共享存储和共享主机资源的虚拟机的性能)
在配置改变前后的点
当然,对一个数据库服务器运行基准测试可以影响其他SQL Server数据库或者相同主机上其他虚拟机的性能,在生产环境你确保有完善的测试计划。
对于自学和研究来说,有预配置的负载非常棒。
开始使用基准测试
你可以从阅读HammerDB官方文档的“SQL Server OLTP Load Testing Guide”开始。

⑦ oracle和sqlserver的速度谁快

小机上还是 ORACLE快。

普通PC,要看配置和应用的类型。

OLTP的 ,INFORMIX最快
OLAP的 ,SYBASE IQ最快

所以说,要看应用的类型了,但是目前来讲,O和S都不是最快的。但,是用的最广的

⑧ 怎样查出SQLServer的性能瓶颈

硬件性能瓶颈 内存 内存对SQL Server性能的影响胜过任何其他硬件。因此,对SQL Server系统的内存使用情况进行定期监视以确保内存的可用百分比高于20%是很有必要的。如果用户遭遇性能问题,同时可用内存百分比低于20%,那么此问题一定是内存分配不足导致的。这要求技术人员密切关注显示平均页面预期寿命的性能计数器,并确保平均页面预期寿命总是高于300秒(5分钟)。一旦放生少于此标准的情况,就说明要么是糟糕的索引设计导致了磁盘输入/输出(I/O)的增加,要么就是对内存的利用效率很低,或者是实际的内存不足。技术人员需要监视SQL Server系统上的分页率,并确保它们常规为1000页每秒。检查PerfMon object MSSQL Buffer Manager(性能监视对象MSSQL缓冲管理器)和Memory Performance Counters(内存性能计数器)。 同样,还要监视计数器,即PerfMon object SQL Server Memory Manager Counters中的Memory Grants Pending。此计数器显示的是每秒钟等待工作负载分配的进程总数。一般来讲,小型OLTP事务不需要大内存分配。

⑨ 我想了解SqlServer 的标准版,企业版,个人版等他们有什么区别

对于新接触SQL数据库的人来说,类似这几个问题的有关于SQL版本的问题可以说不少,但又懒得去仔细研究。问题虽然简单,可是影响却不小……
版本区别
SQL Server 2000有四个版本:企业版/标准版/个人版/开发版
企业版和标准版需要安装在服务器操作系统上,如Windows NT Server / Windows 2000 Server / Windows 2003 Server 等。
个人版需要安装在个人操作系统上,如Windows98 / Windows 2000 Professional / Windows XP Home / Windows XP Professional 等。
开发版可以安装在任何微软的操作系统上。
SQL Server 2000 企业版
作为生产数据库服务器使用。支持 SQL Server 2000 中的所有可用功能,并可根据支持最大的 Web 站点和企业联机事务处理 (OLTP) 及数据仓库系统所需的性能水平进行伸缩。
SQL Server 2000 标准版
作为小工作组或部门的数据库服务器使用。
SQL Server 2000 个人版
供移动的用户使用,这些用户有时从网络上断开,但所运行的应用程序需要 SQL Server 数据存储。在客户端计算机上运行需要本地 SQL Server 数据存储的独立应用程序时也使用个人版。
SQL Server 2000 开发版
供程序员用来开发将 SQL Server 2000 用作数据存储的应用程序。虽然开发版支持企业版的所有功能,使开发人员能够编写和测试可使用这些功能的应用程序,但是只能将开发版作为开发和测试系统使用,不能作为生产服务器使用。
SQL Server 2000 Windows CE 版
使用 Microsoft® SQL Server 2000™ Windows® CE 版 (SQL Server CE) 在 Windows CE 设备上进行数据存储。能用任何版本的 SQL Server 2000 复制数据,以使 Windows CE 数据与主数据库保持同步。
SQL Server 2000 企业评估版
可从 Web 上免费下载的功能完整的版本。仅用于评估 SQL Server 功能;下载 120 天后该版本将停止运行。
除了这些版本的 SQL Server 2000 之外,SQL Server 2000 Desktop Engine 组件允许应用程序开发人员用他们的应用程序分发 SQL Server 2000 关系数据库引擎的复本。因为 SQL Server 2000 Desktop Engine 中的数据库引擎的功能与 SQL Server 各版本中的数据库引擎相似,所以 Desktop Engine 数据库的大小不能超过 2 GB。
版本兼容性:
下面是这几个版本的简单对比:
SQL Server 包括企业版,标准版,个人版,开发版,桌面引擎(MSDE),评估版,CE版。
1. 评估版用于评估,CE版用于Windows CE, 就不多说了。
2. 从功能上,企业版和开发版是一对,标准版和个人版是一对。企业版和开发版主要用于大用户,可以支持更多的CPU,内存,可以支持集群(Cluster),日志传输(log shipping),并行DBCC, 并行创建索引,索引视图等高级功能。
3. 从安装上看,企业版和标准版是一对,个人版,开发版和桌面引擎是一组,企业版和标准版只能安装在Windows的Server版(NT, 2000, 2003)上, 个人版,开发版和桌面引擎可以安装在更多的系统(包括NT Workstation, 2000 professional, XP 等。98只能安装个人版或桌面引擎,但桌面引擎得数据库不能超过2G)。
4. 投入运行时使用企业版,标准版或桌面引擎,(个人版,开发版分别用于对应标准版,企业版的开发)。
关于标准版和企业版两者之间的差别,主要体现在:
1.是否支持MSCS群集
2.是否支持全文索引
3.是否支持分布式分区视图
4.是否支持日志传送
5.是否支持索引视图的CPU利用
企业版提供最高的可用性,稳定性和并发 个人版和MSDE中硬性填入某些代码使得并发用户在五个以上之后性能大打折扣。
标准版:
数据库引擎功能缺少故障转移群集(最多四个节点)、支持SQL Server企业管理器中的故障转移、日志传送、并行DBCC、并行CREATE INDEX、增强的预读和扫描、索引视图、联合数据库服务器、支持系统区域网络 (SAN)、支持语言设置的图形实用工具,对于AnalysisServices缺少用户定义OLAP分区、分区向导、链接OLAP多维数据集、ROLAP 维度支持、支持HTTP Internet、计算单元、回写到维度、支持超大型维度、实时 OLAP、分布式分区多维数据集,win2000下最大只支持4个CPU的SMP,NT下最大只支持8个CPU(企业版)
买10个授权是不可以上20个用户的(一般是限制并发用户数,连接数决定于OS)
企业版:
作为生产数据库服务器使用。支持SQL SERVER 2000中的所有可用功能,并根据支持最大的Web站点和企业联机事务处理(OLTP及数据仓库系统所需要的性能水平进行伸缩。