日期:2011-05-02 15:22:00 来源:本站整理
谈谈优化数据库[MSSQL防范]
本文“谈谈优化数据库[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
与没有数据库的网站相比,数据库的存取会降低你的系统性能.但是大大都情形下,网站和数据库有密不可分的关系,恰是数据库给站点供应了大容量、多样性、本性化等特点,并实现了很多特别的功效.
1?不要忘掉给数据库做索引.
公道的索引能当即明显地提高数据库整个系统的性能.可以参考有关SQL性能调试书籍,学会按照所需查询方法公道制作索引和按照索引方法改良查询语句.
2?在得当的情形下,尽大概的用存储历程而不是SQL查询.
因为前者已经过了预编译,运行速度更快.同时让数据库仅仅返回你所需求的那些数据,而不是返回大量数据再让ASP程序过滤.总之要充分和有效地施展数据库的强盛功效,让它按照我们的要求反馈给我们最符合和最精练的信息.
3?在大概情形下我们应当利用sql server而不是Access.因为Access仅仅是基于文件的数据库,多用户性能很差.数据库衔接尽大概利用OLEDB和非DSN方法,因为这种衔接方法有更好的并发性能.
4?避免利用DAO(Data Access Objects)和RDO(Remote Data Objects)数据源.因为他们主要利用在单用户的处理系统里,ADO(ActiveX Data Objects)才是为Web利用计划的.
5?成立记录集Rescordset的时刻要清楚公道地设置数据游标(cursort)和锁定方法(locktype).
因为在差别的方法下ASP会以差别的方法操作数据库,其履行速度也有很大辨别,特别在大数据量的时刻.假如你只想遍历数据,那么默许游标(行进、只读)会带来最好的性能.
6?当你引用ADO变量的时刻,会损耗较多的CPU周期.因此,假如在一个ASP页面中多次引用数据库的字段变量,一个较好的方法是将字段值先放入本地变量,然后可以直接调用本地变量来计算和显示数据.
7?缓存ADO Connection对象大概不是一个好主张.
假如一个衔接(Connection)对象被存储在Application对象中而被全部ASP页面利用,那么全部页面就会争着利用这个衔接.但是假如衔接对象被存储在Session对象中,就要为每个用户成立一个数据库衔接,这就减小了衔接池的作用,并且增大了Web服务器和数据库服务器的压力.可以用在每个利用ADO的ASP页成立和释放ADO对象来替换缓存数据库衔接.因为IIS内建了数据库衔接池,所以这种办法非常有效,缺陷是每个ASP页面都需求举行一些成立和释放操作.
8?ASP最强盛和主要的用处之一就是对数据库举行操作,在数据库操作中我们要注意:不要肆意利用"SELECT * ......" 情势的SQL查询语句.应当尽大概检索你所需求的那些字段.比方一个表中有10个字段,但是你只会用到此中的一个字段(name),就该利用"select name from mytable",而不是用"select * from mytable".在字段数对比少的时刻,二者的辨别大概并不明显,但是当一个表中拥有几十个字段的时刻,数据库会多检索很多你并不需求的数据.在这种情形下你最好不要为了节俭打字时间大概惊骇查找对应字段名称的麻烦,而要老诚恳实地利用"select id,name,age... from mytable".
9?及时关闭翻开的记录集对象以及衔接(Connection)对象.
记录集对象和衔接对象耗费系统资源相当大,因此它们的可用数目是有限的.假如你翻开了太多的记录集对象以及衔接对象而最后却没有关闭它们,大概会呈现ASP程序刚开始的时刻运行速度很快,而多运行几遍就越来越慢的现象,乃至招致服务器死机.请利用以下办法举行关闭:
MyRecordSet.closeSet MyRecordSet=Nothing
Set MyConnection=Nothing
10 衔接数据库
仍旧利用ODBC系统大概文件DSN来衔接数据库,大概利用很快的OLEDB技术来衔接.利用后者,当移动Web文件时,不再需求改正配置.
OLEDB位于利用程序与ODBC层之间.在ASP页面中,ADO就是位于OLEDB之上的程序.调用ADO时,首先发送给OLEDB,然后再发送给ODBC层.可以直接衔接到OLEDB层,这么做后,将提高服务器端的性能.怎么直接衔接到OLEDB呢?
假如利用SQLServer 7,利用下面的代码做为衔接字符串:
strConnString = "DSN='';DRIVER={SQL SERVER};" & _
"UID=myuid;PWD=mypwd;" & _
"DATABASE=MyDb;SERVER=MyServer;"
最重要的参数就是"DRIVER="部份.假如你想绕过ODBC而利用OLEDB来拜候SQL Server,利用下面的语法:
strConnString ="Provider=SQLOLEDB.1;Password=mypassword;" & _
"Persist Security Info=True;User ID=myuid;" & _
"Initial Catalog=mydbname;" & _
"Data Source=myserver;Connect Timeout=15"
为什么这很重要
目前你大概奇特为什么学习这种新的衔接办法很关键?为什么不利用尺度的DSN大概系统DSN办法?好,按照Wrox在他们的ADO 2.0程序员参考书籍中所做的测试,假如利用OLEDB衔接,要比利用DSN大概DSN-less衔接,有以下的性能提高表现:
性能对比:
----------------------------------------------------------------------
SQL Access
衔接时间: 18 82
反复1,000个记录的时间:2900 5400
OLEDB DSN OLEDB DSN
衔接时间:62 99
反复1,000个记录的时间:100 950
----------------------------------------------------------------------
这个结论在Wrox的ADO 2.0程序员参考发表.时间是以毫秒为单位,反复1,000个记录的时间是以服务器油标的方法计算的
以上是“谈谈优化数据库[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:网络数据库计划入门(一)SQL语言简介
- ·下一篇文章:数据库查询中的特别字符的问题
- ·中查找“谈谈优化数据库”更多相关内容
- ·中查找“谈谈优化数据库”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论