提高查询速度:SQL Server数据库优化方案
日期:2008年5月28日 作者:-
11、重建索引 DBCC REINDEX ,DBCC INDEXDEFRAG,收缩数据和日志 DBCC SHRINKDB,DBCC SHRINKFILE. 设置自动收缩日志.对于大的数据库不要设置数据库自动增长,它会降低服务器的性能。在T-sql的写法上有很大的讲究,下面列出常见的要点:首先,DBMS处理查询计划的过程是这样的:
1、 查询语句的词法、语法检查
2、 将语句提交给DBMS的查询优化器
3、 优化器做代数优化和存取路径的优化
4、 由预编译模块生成查询规划
5、 然后在合适的时间提交给系统处理执行
6、 最后将执行结果返回给用户其次,看一下SQL SERVER的数据存放的结构:一个页面的大小为8K(8060)字节,8个页面为一个盘区,按照B树存放。
12、Commit和rollback的区别 Rollback:回滚所有的事物。 Commit:提交当前的事物. 没有必要在动态SQL里写事物,如果要写请写在外面如: begin tran exec(@s) commit trans 或者将动态SQL 写成函数或者存储过程。
13、在查询Select语句中用Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能。如果表很大,在表扫描的期间将表锁住,禁止其他的联接访问表,后果严重。
14、SQL的注释申明对执行没有任何影响
15、尽可能不使用光标,它占用大量的资源。如果需要row-by-row地执行,尽量采用非光标技术,如:在客户端循环,用临时表,Table变量,用子查询,用Case语句等等。游标可以按照它所支持的提取选项进行分类: 只进 必须按照从第一行到最后一行的顺序提取行。FETCH NEXT 是唯一允许的提取操作,也是默认方式。可滚动性可以在游标中任何地方随机提取任意行。游标的技术在SQL2000下变得功能很强大,他的目的是支持循环。有四个并发选项 READ_ONLY:不允许通过游标定位更新(Update),且在组成结果集的行中没有锁。 OPTIMISTIC WITH valueS:乐观并发控制是事务控制理论的一个标准部分。乐观并发控制用于这样的情形,即在打开游标及更新行的间隔中,只有很小的机会让第二个用户更新某一行。当某个游标以此选项打开时,没有锁控制其中的行,这将有助于最大化其处理能力。如果用户试图修改某一行,则此行的当前值会与最后一次提取此行时获取的值进行比较。如果任何值发生改变,则服务器就会知道其他人已更新了此行,并会返回一个错误。如果值是一样的,服务器就执行修改。选择这个并发选项OPTIMISTIC WITH ROW VERSIONING:此乐观并发控制选项基于行版本控制。使用行版本控制,其中的表必须具有某种版本标识符,服务器可用它来确定该行在读入游标后是否有所更改。在 SQL Server 中,这个性能由 timestamp 数据类型提供,它是一个二进制数字,表示数据库中更改的相对顺序。每个数据库都有一个全局当前时间戳值:@@DBTS。每次以任何方式更改带有 timestamp 列的行时,SQL Server 先在时间戳列中存储当前的 @@DBTS 值,然后增加 @@DBTS 的值。如果某 个表具有 timestamp 列,则时间戳会被记到行级。服务器就可以比较某行的当前时间戳值和上次提取时所存储的时间戳值,从而确定该行是否已更新。服务器不必比较所有列的值,只需比较 timestamp 列即可。如果应用程序对没有 timestamp 列的表要求基于行版本控制的乐观并发,则游标默认为基于数值的乐观并发控制。 SCROLL LOCKS 这个选项实现悲观并发控制。在悲观并发控制中,在把数据库的行读入游标结果集时,应用程序将试图锁定数据库行。在使用服务器游标时,将行读入游标时会在其上放置一个更新锁。如果在事务内打开游标,则该事务更新锁将一直保持到事务被提交或回滚;当提取下一行时,将除去游标锁。如果在事务外打开游标,则提取下一行时,锁就被丢弃。因此,每当用户需要完全的悲观并发控制时,游标都应在事务内打开。更新锁将阻止任何其它任务获取更新锁或排它锁,从而阻止其它任务更新该行。然而,更新锁并不阻止共享锁,所以它不会阻止其它任务读取行,除非第二个任务也在要求带更新锁的读取。滚动锁根据在游标定义的 Select 语句中指定的锁提示,这些游标并发选项可以生成滚动锁。滚动锁在提取时在每行上获取,并保持到下次提取或者游标关闭,以先发生者为准。下次提取时,服务器为新提取中的行获取滚动锁,并释放上次提取中行的滚动锁。滚动锁独立于事务锁,并可以保持到一个提交或回滚操作之后。如果提交时关闭游标的选项为关,则 COMMIT 语句并不关闭任何打开的游标,而且滚动锁被保留到提交之后,以维护对所提取数据的隔离。所获取滚动锁的类型取决于游标并发选项和游标 Select 语句中的锁提示。锁提示 只读 乐观数值 乐观行版本控制 锁定无提示 未锁定 未锁定 未锁定 更新 NOLOCK 未锁定 未锁定未锁定 未锁定 HOLDLOCK 共享 共享 共享 更新 UPDLOCK 错误 更新 更新 更新 TABLOCKX 错误 未锁定 未锁定更新其它 未锁定 未锁定 未锁定 更新 *指定 NOLOCK 提示将使指定了该提示的表在游标内是只读的。 - 上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页
-
- 提高查询速度:SQL Server数据库优化方案 相关文章:
- ·局域网常用的DOS查询IP地址命令
- ·XP命令提示符详解及IP查询
- ·ASP下实现多条件模糊查询SQL语句
- ·关于提高mssql的查询效率
- ·提高查询速度:SQL Server数据库优化方案
- ·数据库查询优化
- ·高级自定义查询、分页、多表联合存储过程
- ·Windows错误代码大全集合查询
- ·Oracle查询中rownum与Order by查询的关系
- ·用SQL进行嵌套查询
- 提高查询速度:SQL Server数据库优化方案 相关软件
- ·MAC地址查询扫描器 V1.0
- ·手机号码归属地查询软件 免费版 6.1.8.0808
- ·世界三极管查询系统 V2.3
- ·手机归属者查询 V3.0
- ·人体生物节律查询 V7.09
- ·手机号码归属地查询软件 会员版 v6.8.8.0808
- ·国家标准免费查询软件 V1.02
- ·家庭用药查询手册 V1.9 正式版
- ·电话号码存储查询系统 V6.25 专业版
- ·QQ IP地址查询器 v1.98
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:技巧之Mysql 导出数据表结构
精品推荐
热点TOP10
- ·学习SQL语句之SQL语句大全
- ·最新免费HTTP代理服务器
- ·精妙SQL语句收集
- ·SQL Server不存在或访问被拒绝 问题的解决
- ·SQL Server 练习题
- ·数据库连接字符串大全
- ·巴塞尔新资本协议概述
- ·认识VF--Visual FoxPro 漫谈
- ·SQLSERVER中,数据库同步的实现
- ·SQLPLUS命令的使用大全
- ·SQL中CASE的用法
- ·用于 SELECT 和 WHERE 子句的函数
- ·SQL里的cast和convert
- ·MS-SQL开发常用汇总和t-sql技巧集锦
- ·正确使用137G以上的大硬盘
- ·学习SQL SERVER的存储过程-之一认识存储过程语法
- ·什么是SQL注入法攻击
- ·讨论: SELECT TOP N 问题
- ·怎么用sql修改表名
- ·Delphi程序执行时实时生成报表
特别推荐
- ·SQL注入攻击危害最小化措施
- ·提高SQL执行效率的几个技巧
- ·破译MySQL数据库root密码的集中方法
- ·无法打开用户默认数据库的解决方案
- ·SQL脚本注入另类手段
- ·警惕恶意软件 网站SQL注入防御实战
- ·从三个方面进行讲解如何适当优化
- ·Vista下安装SQL Sever 2005报错的解决办法
- ·学习SQL语句之SQL语句大全
- ·打造SQL Server2000的安全策略
- ·SQL语句优化技术分析
- ·MySQL导入导出方法与工具
- ·CS服务器架设方法
- ·改进的socket控件
- ·什么是SQL注入法攻击
- ·用SQL语句删除重复记录的四种方法
- ·数据库查询优化
- ·MySQL常见错误问答!
- ·MySQL从后门进企业市场
- ·精妙SQL语句收集
