数据库设计提高性能的几个方法

数据库设计提高性能的几个方法

ID:13671574

大小:125.54 KB

页数:6页

时间:2018-07-23

数据库设计提高性能的几个方法_第1页
数据库设计提高性能的几个方法_第2页
数据库设计提高性能的几个方法_第3页
数据库设计提高性能的几个方法_第4页
数据库设计提高性能的几个方法_第5页
资源描述:

《数据库设计提高性能的几个方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、数据库设计提高性能的几个方法1.使用ROWLOCK减少锁。2.使用KEEPFIXEDPLAN提高性能(对于固定的SQL查询计划)声明setnocountonsettransactionisolationlevelreadcommittedSELECTSELECTTOP10@cnt=COUNT(*)FROMdbo.LessThanOrEqualsPredicatesWITH(ROWLOCKREADPAST)WHEREtnPass=1ANDuidPropID=@uidPredicateIDANDvtValue=@vtPredicateValueOPTION(KEEPFIXEDPLAN

2、)SELECT@uidProcID=uidProcessID,@uidActID=uidActivationIDFROMdbo.InstancesWITH(ROWLOCKREPEATABLEREADINDEX(CIX_Instances))WHERE(uidInstanceID=@uidInstanceID)OPTION(KEEPFIXEDPLAN)SELECTCOALESCE(MAX(CAST(empidASBIGINT)),0)+1FROMis_emppersonalWITH(XLOCK,PAGLOCK)OPTION(FORCEORDER)INSERTINSERTINTOdb

3、o.GreaterThanPredicatesWITH(ROWLOCK)(uidPropID,vtValue,uidPredicateGroupID,tnPass)VALUES(@uidPredicateID,@vtPredicateValue,@uidANDGroupID,@tnPass)UPDATEUPDATEdbo.PredicateGroupWITH(ROWLOCK)SETnNumFirstPassPredicates=nNumFirstPassPredicates+1FROMdbo.PredicateGroupWITH(ROWLOCKINDEX(CIX_Predicat

4、eGroup))WHEREuidPredicateANDGroupID=@uidANDGroupIDOPTION(KEEPFIXEDPLAN)DELETEDELETEFROMdbo.PartsWITH(ROWLOCK)FROM(SELECTTOP100uidPartIDFROMdbo.PartZeroSumWITH(ROWLOCK)ORDERBYnID)aspszJOINdbo.PartspWITH(ROWLOCK)ONpsz.uidPartID=p.uidPartIDOPTION(KEEPFIXEDPLAN,FORCEORDER)事务BEGINTRANSACTIONCOMMIT

5、TRANSACTION注释ROWLOCKREADPAST指定数据库引擎不读取由其他事务锁定的行和页。数据库引擎跳过这些行或页,而不是在释放锁之前阻塞当前事务。仅可在运行于READCOMMITTED或REPEATABLEREAD隔离级别的事务中指定READPAST。KEEPFIXEDPLAN强制查询优化器不因统计信息的更改而重新编译查询。FORCEORDER指定在查询优化过程中保持由查询语法指示的联接顺序UPDLOCK指定采用更新锁并保持到事务完成。REPEATABLEREAD指定事务在REPEATABLEREAD隔离级别运行时,使用相同的锁定语义执行一次扫描。INDEX(inde

6、x_val[,...n])指定查询优化器处理语句时要使用的索引的名称或ID。只能为每个表指定一个索引提示。(SELECT*FROMis_emppersonalWITH(INDEX(PK_is_emppersonal)))锁的粒度:锁的类型:(1)共享锁:共享锁用于所有的只读数据操作. (2)修改锁:修改锁在修改操作的初始化阶段用来锁定可能要被修改的资源,这样可以避免使用共享锁造成的死锁现象(3)独占锁:独占锁是为修改数据而保留的。它所锁定的资源,其他事务不能读取也不能修改。独占锁不能和其他锁兼容。 (4)架构锁结构锁分为结构修改锁(Sch-M)和结构稳定锁(Sch-S)。执行表定

7、义语言操作时,SQLServer采用Sch-M锁,编译查询时,SQLServer采用Sch-S锁。  (5)意向锁意向锁说明SQLServer有在资源的低层获得共享锁或独占锁的意向。 (6)批量修改锁批量复制数据时使用批量修改锁SQLServer锁类型  (1)HOLDLOCK:在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁。  (2) NOLOCK:不添加共享锁和排它锁,当这个选项生效后,可能读到未提交读的数据或“脏数据”,这个选项仅仅应用于SELE

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。