请提建议:如何最大限制地提升WEB服务器和SQLSERVER2000企业版数据库的性能,使网站进入速度更快!(300分)

  • 主题发起人 主题发起人 dingbaosheng
  • 开始时间 开始时间
网络邻居-属性-外地连接-属性-网络载量平衡-属性
你需要多台服务器组成群集
 
有人知道 SQLSERVER2000 如何优化么???
 
全是废话!没有 一个敢说自己是老大的,你们为什么不去看看我的问题,我问了一年了!没有
人回答真让我感觉到这里的技术是不是已经过时了,或者是这是这里的人已经不
是做编程的!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=719446
http://www.delphibbs.com/delphibbs/dispq.asp?lid=666070
http://www.delphibbs.com/delphibbs/dispq.asp?lid=716037
http://www.delphibbs.com/delphibbs/dispq.asp?lid=730641
http://www.delphibbs.com/delphibbs/dispq.asp?lid=655233
如果能有人回答这些问题才是真的高手呀!
 
TO:Alongsun
不会吧?大佬,我这你也要打一下广告?
 
硬件 : 增加内存, 使用磁盘阵列, 数据库服务器和Web服务器分开,
有条件使用集群技术, 对服务器进行负载均衡
软件 : 推荐使用UNIX环境
 
优化并不是一言两语就能说明白了,,会涉及到很多东西,,系统优化,去掉那些不需要的服务
数据库优化,建立索引是相对比较好的方法,,但并不所有字段都能建索引,,所以这个优化需要
针对性的,需要化一定时间去对网站的了解,才能发现问题在那里,对问题处进行优化这才是真正的优化
还有一个整体优化的问题,这程序与数据库都有关系,通常因为数据库设计不当与程序不能很好配合工作
,造成资源浪费的问题并不少见

 
谢谢楼上的诸位。 不过我还想听听, 再有没有新建议了!踢一脚!!!
 
关注,提前!
 
建议你先看看sqlserver联机丛书中的优化数据库性能一章,有比较常用的优化方面的说
明解释。另外,根据你数据库的结构、检索程序的写法,建立相应的索引是必不可少的。
建立索引可以说不是三言两语就能说得清楚的,个人认为如果数据量很大,变化有不是很
频繁的话哈希表是个不错的选择,速度很快。具体的建立可以看看算法书。服务器的内存
256可不算大,只能说是基本满足。当然,很多时候瓶颈在硬盘的io上,所以缓存和硬盘
应该大一些。
有几个小点,注意一下:图片不要存储在数据库中,数据库中记录图片文件的全部路径名
字即可,虽然数据库中的图片也能显示出来但是会降低速度。asp程序设计往往是进入网站
速度的最关键因素,仔仔细细的看看你的程序,多半会找到不少于5处的改进的地方。使用
recorderset时千万不要打开一个表而是要打开一条查询,最好限制查询的条件,返回最符
合的、最少纪录的语句;使用分页技术;不需要返回值的命令要使用command来实现,会快
的很多;sql语句少使用参数,而是要动态的建立相应的sql语句,使用参数会降低速度。
想不起来了,后象还有很多,不做网站的网管有些日子了。听听别人怎么说吧。
 
再UP一下!!!
 
提一个小建议:网站上的页面尽量使用静态页面,如果存在动态的消息,可以采用SSI。
如果必须使用数据库,则按楼上提的建议对数据库及程序进行优化。
制作静态页面的方法有很多,我觉得我自己开发的超想网站发布专家可以胜任。
可以看一下已经应用的网站:
www.ha315.gov.cn 海安红盾网
www.21bags.com 一个企业网站
www.21patents.com 21专利网
http://data.sportschina.com/ny 中国体育新闻
 
优化数据库的思想:
================
1、关键字段建立索引。
2、使用存储过程,它使SQL变得更加灵活和高效。
3、备份数据库和清除垃圾数据。
4、SQL语句语法的优化。(可以用Sybase的SQL Expert,可惜我没找到unexpired的序列号)
5、清理删除日志。
SQL语句优化的原则:
==================
1、使用索引来更快地遍历表。
缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。合理的索引设计要建立在
对各种查询的分析和预测上。一般来说:①.有大量重复值、且经常有范围查询(between, >,< ,>=,< =)和order by、group by发生的列,可考
虑建立群集索引;②.经常同时存取多列,且每列都含有重复值可考虑建立组合索引;③.组合索引要尽量使关键查询形成索引覆盖,其前导列一定
是使用最频繁的列。索引虽有助于提高性能但不是索引越多越好,恰好相反过多的索引会导致系统低效。用户在表中每加进一个索引,维护索引集
合就要做相应的更新工作。
2、IS NULL 与 IS NOT NULL
不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从
索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。任何在where子句中使用is null或is not null的语句优化器是不允
许使用索引的。
3、IN和EXISTS
EXISTS要远比IN的效率高。里面关系到full table scan和range scan。几乎将所有的IN操作符子查询改写为使用EXISTS的子查询。
4、在海量查询时尽量少用格式转换。
5、当在SQL SERVER 2000中,如果存储过程只有一个参数,并且是OUTPUT类型的,必须在调用这个存储过程的时候给这个参数一个初始的值,否则
会出现调用错误。
6、ORDER BY和GROPU BY
使用ORDER BY和GROUP BY短语,任何一种索引都有助于SELECT的性能提高。注意如果索引列里面有NULL值,Optimizer将无法优化。
7、任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。
8、IN、OR子句常会使用工作表,使索引失效。如果不产生大量重复值,可以考虑把子句拆开。拆开的子句中应该包含索引。
9、SET SHOWPLAN_ALL ON 查看执行方案。DBCC检查数据库数据完整性。DBCC(DataBase Consistency Checker)是一组用于验证 SQL Server 数据
库完整性的程序。
10、慎用游标
在某些必须使用游标的场合,可考虑将符合条件的数据行转入临时表中,再对临时表定义游标进行操作,这样可使性能得到明显提高。
总结:所谓优化即WHERE子句利用了索引,不可优化即发生了表扫描或额外开销。经验显示,SQL Server性能的最大改进得益于逻辑的数据库设计、
索引设计和查询设计方面。反过来说,最大的性能问题常常是由其中这些相同方面中的不足引起的。其实SQL优化的实质就是在结果正确的前提下,
用优化器可以识别的语句,充份利用索引,减少表扫描的I/O次数,尽量避免表搜索的发生。其实SQL的性能优化是一个复杂的过程,上述这些只是
在应用层次的一种体现,深入研究还会涉及数据库层的资源配置、网络层的流量控制以及操作系统层的总体设计。
 
呵呵,其实最简单也是最轻忪也是最花钱的就是把你的WEB服务器联上宽带,很多时候的瓶颈
不在服务器的性能,而在于带宽的多少。
1、如果是租用专线,则尽量提高专线的带宽,购买好的路由器;
2、如果是服务器托管,则托管到电信去,并确保能直接挂到宽带网上。
至于从数据库和程序设计上的优化,我估计改进的余地不大,效果不会明显的。
 
我不是很同意jobsxy这种说法,无论你的宽带有多宽,服务器的性能跟不上,都还是白搭。
网路带宽不可能无限扩大,最基本的还是要把服务器和数据库优化好,

 
强烈建议ISAPI!!!使用delphi编写!我门原来有个网站使用很多asp,CPU经常回达到80%,
采用isapi重写以后cpu最高为20%.
 
to 楼上: 呵呵,这种事情得具体问题具体分析才行。但我接触过的网管以及我建站的经验来
看,很少出现访问者过量而导致服务器崩盘的情况,大多是带宽阻塞的状况,而服务器性能却仍有
冗余。
丁宝生肯定不是技术上的菜鸟,不大会出现程序效率方面的重大失误。在这种基础上再进一
步优化提升效果不大明显。
至于突发性的访问高峰我在这方面没有经理,也提不出什么建议了,:(
 
to jobsxy
是的,这种事情碰上了只能是具体对像具体分析了,没有什么通用方法。
另:我在以前的公司里,因为访问过量使服务器down的情况不少见,,
 
To:jobsxy
我们的服务器就是在电信托管的!!!
另:
今天发现一个原因,网站在我们自己的机子上进入慢
有一部分原因是因为我们内部局域网上网用的主机本身一些问题:(
与WEB服务器关联不是很大,昨晚重做后快多了.感谢楼上诸位给在下
上了一次收益非浅的课^_^
关于SQLSERVER2000数据库优化, 还有人要发言的么?
学习期待中...
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部