数据库优化统计信息经典知道
《数据库优化统计信息经典知道》由会员分享,可在线阅读,更多相关《数据库优化统计信息经典知道(4页珍藏版)》请在装配图网上搜索。
1、问题:1、STATISTICS到底有什么作用。即:“当前数据库的指定表中的多个集合的统计信息”,这个要怎么理解,这个统计信息什么作用。2、为什么运用SQL2005优化工具会产生很多CREATE STATISTICS,并这些CREATE STATISTICS和相应的索引有直接关系,STATISTICS和index有什么关系。1.STATISTICS是一个表中某几个列的统计信息,如一个表是全校学生某次考试的分数,score列的类型是int,取值范围是0到100的整数,那么statistc就是每个分数分别有多少人。在一个特定的查询中,使用索引可能加快速度,也可能减慢速度,所以SQL server要事
2、先对使用索引的效果做一个预测,预测的依据就是STATISTICS。默认情况下,表或索引更改了,统计会相应地自动更新,以保持统计是最新的。但是可以在数据库选项中关闭这个自动更新的功能,提高数据表的更新速度。但需要定期手动更新统计。因为过期的统计信息会对是否使用索引的判断带来误判。2.index要依赖正确的STATISTICS才能发挥作用。而你的SQL2005优化工具对缺乏STATISTIC的列自动产生了创建语句。_WA_Sys_开头的都是系统中自动产生的create table #DBAService_tb(tablename varchar(50),rowscount int ,space_r
3、eserved varchar(20),space_used varchar(20) ,index_space_used varchar(20),space_unused varchar(20) insert into #DBAService_tb exec sp_MSForEachTable EXEC sp_spaceused ? select a.*,(replace(a.space_reserved, KB,)+0)/1000000.0 as space_reserved_value from #DBAService_tb a order by space_reserved_value
4、descdrop table #DBAService_tb查询当前数据库表大小 sp_helptext 视图可分析视图中的表sp_helpindex psnaccount查看当前表索引dbcc SHOWCONTIG (dbo.psnaccount)显示指定的表的数据和索引的碎片信息。DBCC INDEXDEFRAG(EHR,dbo.psnaccount,PK_PKPACKSTAFFACCOUNT)整理指定的表或视图的聚集索引和辅助索引碎片。如果索引碎片太多 最好是重新建立索引1.STATISTICS是一个表中某几个列的统计信息,如一个表是全校学生某次考试的分数,score列的类型是int,取值
5、范围是0到100的整数,那么statistc就是每个分数分别有多少人。在一个特定的查询中,使用索引可能加快速度,也可能减慢速度,所以SQL server要事先对使用索引的效果做一个预测,预测的依据就是STATISTICS。2.默认情况下,表或索引更改了,统计会相应地自动更新,以保持统计是最新的。但是可以在数据库选项中关闭这个自动更新的功能,提高数据表的更新速度。但需要定期手动更新统计。因为过期的统计信息会对是否使用索引的判断带来误判。3.index要依赖正确的STATISTICS才能发挥作用。而你的SQL2005优化工具对缺乏STATISTIC的列自动产生了创建语句。CREATE STATIS
6、TICS PAYPACKAGESTAFF_test ON dbo.PAYPACKAGESTAFF(PACKAGEID, STAFFID)CREATE NONCLUSTERED INDEX pktest_Paypackagestaff ON dbo.PAYPACKAGESTAFF (PACKAGEID ASC,STAFFID ASC)WITH (STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS =
7、ON, ALLOW_PAGE_LOCKS = OFF) ON PRIMARY-/* 本文由微软新闻组摘录下来的。一段非常有用的脚本。如果碰到日志文件过大的问题,用SHIRNK DATABASE, TRUNCATE LOG FILE不是很有效时,可以考虑试下下面的脚本。把代码COPY到查询分析器里,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可*/SET NOCOUNT ONDECLARE LogicalFileName sysname, -日志文件名MaxMinutes INT, -允许此脚本执行的最长时间NewSize INT -目标日志文件的大小USE xi
8、nyuan - 要操作的数据库名SELECT LogicalFileName = eHR_DB_log, - 日志文件名MaxMinutes = 10, - Limit on time allowed to wrap log.NewSize = 1 - 想要收缩到的目标大小(单位M),此处标记收缩到1MDECLARE OriginalSize intSELECT OriginalSize = sizeFROM sysfilesWHERE name = LogicalFileNameSELECT Original Size of + db_name() + LOG is +CONVERT(VAR
9、CHAR(30),OriginalSize) + 8K pages or +CONVERT(VARCHAR(30),(OriginalSize*8/1024) + MBFROM sysfilesWHERE name = LogicalFileNameCREATE TABLE DummyTrans(DummyColumn char (8000) not null)DECLARE Counter INT,StartTime DATETIME,TruncLog VARCHAR(255)SELECT StartTime = GETDATE(),TruncLog = BACKUP LOG + db_na
10、me() + WITH TRUNCATE_ONLYDBCC SHRINKFILE (LogicalFileName, NewSize)EXEC (TruncLog)- Wrap the log if necessary.WHILE MaxMinutes DATEDIFF (mi, StartTime, GETDATE() - time has not expiredAND OriginalSize = (SELECT size FROM sysfiles WHERE name =LogicalFileName)AND (OriginalSize * 8 /1024) NewSizeBEGIN
11、- Outer loop. SELECT Counter = 0 WHILE (Counter OriginalSize / 16) AND (Counter 50000) BEGIN - update INSERT DummyTrans VALUES (Fill Log) DELETE DummyTrans SELECT Counter = Counter + 1 END EXEC (TruncLog)ENDSELECT Final Size of + db_name() + LOG is +CONVERT(VARCHAR(30),size) + 8K pages or +CONVERT(VARCHAR(30),(size*8/1024) + MBFROM sysfilesWHERE name = LogicalFileNameDROP TABLE DummyTransSET NOCOUNT OFF-
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。