SQLSERVER2005 参数设置三(转sql2005技术内幕)

上一篇 / 下一篇  2009-02-11 11:06:05 / 个人分类:性能测试

自动(AUTO)选项51Testing软件测试网 ^;FdMP$aQ

自动选项会影响SQL Server可能自动采取的行动。所有这些选项都是布尔(Boolean)选项,其取值或者是ON,或者是OFF

6AtbrU6h7M7?o0

n  AUTO_CLOSE 如果这个选项设置为ON时,那么当一个数据库的最后一个用户退出时,该数据库会被正常关闭,并因此释放所有的资源。所有的文件句柄都会被关闭,所有在内存中的结构都会被删除以便该数据库不再使用任何内存。当一个用户尝试重新使用该数据库时,它会重新打开该数据库。如果一个数据库被正常地关闭,那么直到有一个用户在SQL Server下次重新启动后尝试使用该数据库时,该数据库才会被初始化(重新打开)。AUTO_CLOSE选项对SQL Server的个人数据库来讲是十分方便的,因为它允许我们像管理普通的文件一样管理数据库文件。我们可以移动它们,通过复制来制作备份,甚至可以通过电子邮件将它们发送给其他用户。然而这个选项不能应用于需要重复地向SQL Server建立和中断连接的应用程序所访问的数据库。每个连接之间的关闭和重新打开数据库操作所带来的开销会对系统的性能有着明显的不利影响。

+N2kr1U"u$e0

alterdatabaseoscartestsetauto_closeoff51Testing软件测试网hGQ3C)oR nw

n  AUTO_SHRINK 当这个选项被启用时,一个数据库的所有文件都会成为周期性收缩的对象。数据文件和日志文件都能够被SQL Server自动地收缩。释放日志文件空间以便它们能够被收缩的唯一方法是备份日志文件并将恢复模式设定为SIMPLE。日志文件收缩发生在日志被备份或截断时。51Testing软件测试网OR)`Ab9Mg.O b

AUTO_SHRINK 当这个选项被启用时,一个数据库的所有文件都会成为周期性收缩的对象。数据文件和日志文件都能够被SQL Server自动地收缩。释放日志文件空间以便它们能够被收缩的唯一方法是备份日志文件并将恢复模式设定为SIMPLE。日志文件收缩发生在日志被备份或截断时。

2h%EWfs f*mO6Q0

n  AUTO_CREATE_STATISTICS 当这个选项被设置为ON(默认值)时,SQL Server查询优化器会在被一个查询的WHERE子句引用的列上创建索引。增加索引能够改善查询的性能是因为SQL Server查询优化器能够更好地判断如何估价一个查询。51Testing软件测试网!Mo]pcb K0~w

n  AUTO_UPDATE_STATISTICS 当这个选项被设置为ON时(默认值),如果表中数据发生了改变,那么当前统计信息(statistics)就会被更新。SQL Server有一个针对发生在表上修改的计数器,可以用它来确定什么时候统计信息会过期。当这个选项是OFF时,当前索引不会被自动更新(可以手动来更新它们)。我们会在第7章对统计信息进行更多的讨论。

B Z5tB2aM8^%@0

前面的两个统计信息选项与AUTO_UPDATE_STATISTICS_ASYNC和参数化选项DATE_CORRELATION_OPTIMIZATIONPARAMETERIZATION(所有这些选项都是SQL Server 2005新引入的),我们将会在《Microsoft SQL Server 2005技术内幕:查询优化与调校》中对它们进行更为详细的讨论。51Testing软件测试网afx$dm/evp)x*Ub

SQL选项51Testing软件测试网'YWckG [

SQL选项控制着不同的SQL语句是如何被解释的。这些选项都是布尔选项。对SQL Server来讲这些选项的默认值都是OFF,但是很多工具,例如SQL Server Management Studio和许多编程接口,ODBC都会启用某些会话级别的选项,这些选项会覆盖数据库选项,这使得看起来ON行为好像是默认的行为一样。

i.E!o^:V0

n  ANSI_NULL_DEFAULT 当这个选项被设置为ON时,各列都会符合ANSI SQL-92标准的列的空值规则。也就是说,如果没有明确指定一张表中的一列允许为NULL值,NULL值是允许的。当这个选项被设置为OFF时,在没有指定空值约束的情况下新创建的列不允许是NULL值。51Testing软件测试网JH B:UoB M gW

n  ANSI_NULLS 当这个选项被设置为ON时,任何和NULL值的比较结果都是未知(UNKNOWN)的,正如ANSI-92标准所指定的那样。如果这个选项被设置为OFF,当两个参加比较的值都是NULL值时非Unicode值与NULL比较的结果会是TRUE

)\/{5Sp S{&T0

n  ANSI_PADDING 当这个选项被设置为ON时,互相比较的字符串在比较发生以前被设置为相同的长度。当这个选项是OFF时,不会发生填充。

sv4o1n8cMk3A0

n  ANSI_WARNNINGS 当这个选项被设置为ON时,在出现一些条件例如被0除或算术溢出时将有错误或警告发出。51Testing软件测试网;`!m4G9JO`D(vS

n  ARITHABORT  当该选项被设置为ON时,查询在执行期间出现被0除或者算术溢出错误,该查询会被终止。当这个选项为OFF时,该查询会返回NULL值作为操作的结果。

G-kD8U5Bi!_za0

n  CONCAT_NULL_YIELDS_NULL 当这个选项被设置为ON时,如果连接两个字符串时一个字符串为NULL值,那么连接的结果是一个NULL值。当这个选项被设置为OFF值,为了进行连接一个NULL字符串会被视作空白(0长度)字符串。51Testing软件测试网G0H-mUl_ K3jJ Q

n  NUMERIC_ROUNDABORT 当这个选项被设置为ON时,如果一个表达式会导致精度降低就会产生一个错误。当该选项为OFF时,结果是简单圆整的。ARITHABORT的设置决定了错误的级别。如果ARITHABORTOFF,只会产生一个警告并且表达式会返回一个NULL值。如果ARITHABORTON,则会产生一个错误,并且没有结果返回。

1nV)KOLX0

n  QUOTED_IDENTIFIER 当这个选项被设置为ON时,标志符例如表名和列名能够用双引号进行分隔,并且字符必须使用单引号进行分隔。所有使用双引号分隔的字符串会被解释为对象标志符。当QUOTED_IDENTIFIERON时,被引用的标志符不需要服从T-SQL的标志符规则。它们可以是保留关键字,并且能够包括通常在T-SQL标志符中不允许出现的字符,例如空格和破折号。我们不能使用双引号来分隔字符串表达式,而必须使用单引号来做这种分隔。如果一个单引号是字符串的一部分,可以用两个单引号(’’)来表示它。当保留的关键字被用作数据库中的对象名称时,必须将该选项设置为ON。当它是OFF时,标志符不能在引号中并且必须遵守所有的T-SQL标志符规则。51Testing软件测试网M d4E-VH6_cj

n  RECURSIVE_TRIGGERS 当这个选项被设置为ON时,触发器能够被直接或间接地递归触发。当间接递归发生时,一个触发器被触发并执行了一个引起另一张表上的一个触发器被触发的操作,因此,在引起对原来的表的一个更新操作后,该更新操作又重新触发了原来的触发器。例如,一个应用程序更新了表T1,这触发了一个触发器Trig1。触发器Trig1更新了表T2,这引起了触发器Trig2被触发。Trig2反过来又更新了表T1,这又重新触发了触发器Trig1。直接递归发生时,一个触发器被触发并执行了一个引起了同一个触发器被再次触发的操作。例如,一个应用程序更新了表T3,这触发了触发器Trig3Trig3又更新了表T3,这又导致触发器Trig3被触发。当该选项为OFF时(默认情况),触发器不能够被递归地触发。

d&SD H.A(YH:}{0

数据库恢复选项51Testing软件测试网)`(W ]d o_*n*I

数据库恢复(RECOVERY)选项(FULLBULK_LOGGEDSIMPLE)决定了能够在一个SQL Server数据库上进行多少恢复。它还控制着日志记录多少信息和有多少日志可以备份。我们会在第5章中对该选项进行更多讨论。

0utEcAe nA`0

当一个数据库被恢复时还有另外两个选项能够应用到完成的工作。在SQL Server 2005中能够设置TORN_PAGE_DETECTION选项为ONOFF,但是该选项在将来的版本中将不复存在。推荐的替代方法是设置PAGE_VERITY选项的值为TORN_PAGE_DETECTIONCHECKSUMTORN_PAGE_DETECTION这里应该被看作一个值,而不是一个选项的名称)。

*x7\I3yo3d8[0

PAGE_VERITY选项能够发现由于磁盘I/O路径错误而损坏的数据库页面,这可能会引起数据库损坏问题。I/O错误本身一般是由于在一个页面被写入磁盘时发生了电源故障或磁盘故障所引起的。

"L!qE WA\+_y,V0

n  CHECKSUM PAGE_VERIFY选项被设置为CHECKSUM时,SQL Server根据每个页面的内容计算出一个校验和,并在页面被写入磁盘时将该值保存在页面头部。当从磁盘读出该页面时,会重新计算出一个校验和并与保存在页面头部的值相比较。如果这两个值并不匹配,错误信息824(表示校验和错误)会被报告出来。51Testing软件测试网 Wr&Tuk

n  TORN_PAGE_DETECTION PAGE_VERIFY选项被设置为TORN_PAGE_ DETECTION时,无论何时只要有页面被写入磁盘,一个数据库页面(8KB)的每512字节的扇区就会有一个比特位被反转。它允许SQL Server探测由于电源故障或其他系统故障造成的不完整的I/O操作。如果以后SQL Server从磁盘读取数据时发现一个比特位的状态不正确,那意味着该页面没有被正确地写入磁盘(探测到了一个损坏的页面)。虽然SQL Server数据库页面大小为8KB,但是磁盘I/O操作使用的是512字节的扇区。因此,每个数据库页面要写入16个扇区。如果系统在操作系统向磁盘写入第一个512字节的扇区和完成8KBI/O操作之间停机(例如由于电源故障),就可能会出现一个损坏的页面。当从磁盘读取该页面时,存储在页面头部的损坏的比特位会被与实际的页面扇区信息相比较。不匹配的值表明了那个页面只有一部分被写入了磁盘。在这种情况下,错误信息824(表明页面损坏错误)会被报告。如果页面确实没有被完整写入,典型情况下损坏的页面会被数据库恢复过程检测到。不过,其他的I/O路径错误随时会导致一个损坏的页面产生。51Testing软件测试网 ogf}!|j

n  NONE(没有页面校验选项) 指定该值后,当一个页面被写入时,CHECKSUMTORN_PAGE_DETCTION值都不会产生,并且当页面被读取时也不会校验这些值。51Testing软件测试网 s[o;g|%O

校验和与损坏页面错误都产生错误信息824,该错误信息会被写入SQL Server错误日志和Windows事件日志。当读取任意一个页面时,如果产生了824错误,SQL Server都会在msdb数据库的系统表suspect_pages中插入一行(联机丛书在理解和管理suspect_pages一节有关于该表的更多信息)。

~KW-bQRI/vy5G0

SQL Server将会对任何校验和、损坏页和其他I/O错误进行四次重试操作。如果在这些尝试中有一次是成功的,那么就会向错误日志中写入一条记录,并且触发该读取操作的命令将会继续执行。如果所有的尝试都是失败的,那么该命令将会失败并给出824错误信息。51Testing软件测试网{/V&c| ^)N

我们可以通过还原数据,或者当错误仅限于索引页面时重建索引来修复这个错误。如果我们遭遇一个校验和错误,可以运行DBCC CHECKDB来确定受到影响的数据页类型和数据页。我们还应该确定错误的根本原因并尽快解决它以防止额外的或正在发生的错误。发现问题的根本原因需要调查硬件、固件驱动程序、BIOS、过滤器驱动程序(例如反病毒软件)和其他I/O路径组件。51Testing软件测试网+{Q;f9t5F$u2JB T{

SQL Server 2005中,默认值是CHECKSUM。在SQL Server 2000中,TORN_PAGE_DETECTION是默认值,CHECKSUM不可用。如果我们从SQL Server 2000升级一个数据库,那么PAGE_VERIFY的值将会为NONETORN_PAGE_DETECTION。如果它是TORN_PAGE_DETECTION,我们应该考虑将它更改为CHECKSUM。虽然TORN_PAGE_DETECTION使用的资源较少,与CHECKSUM相比它提供的保护也较少。

TAG: 性能测试

 

评分:0

我来说两句

Open Toolbar