论坛首页 综合技术论坛

系统性能优化过程.

浏览 14671 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-02-01  
Lucas Lee 写道
hgq0011 写道
它是一个交收移交表,比如数据从A部门移到B部门,由从B部门移动到C部门,也就是,由一个上一部门,当前部门,下一部门;就成了一个树状结构了

照这么看,这个表应该不是树形结构吧,明显就是线型的,数据会同时移动到两个及以上的部门么(会有分叉么)?

你应该把表结构和很慢的SQL贴出来,讨论一下。

一般来说有两点:

1.分析SQL的查询计划,看是否用了合适的索引;

2.改变表的数据结构,或者增加冗余字段,以提升性能。


是的它有可能同时移交到多个部门,而且从C部门可能会又移交到B部门或A部门。那个表字段多达53个,都比较复杂了。所以查询什么的都要花费很多的资源。

现在只能看第一个方案了,第二个因为,我们在今年就要上新的ERP系统了,在去修改表结构什么的也不太理想。

0 请登录后投票
   发表时间:2008-02-01  
hgq0011 写道
yyliuliang 写道
开Profile 跟踪那些延时高,消耗资源高的sql语句,然后查询分析器里执行查看执行计划,哪些语句没有使用到索引,哪些统计需要更新...  
建议

我跟踪到一个SQL要10S左右。

把效率低的sql语句的执行计划截几个图

重点看Profile里Duration 和Reads数高的
0 请登录后投票
   发表时间:2008-02-01  
yyliuliang 写道

把效率低的sql语句的执行计划截几个图

重点看Profile里Duration 和Reads数高的

那图看不出什么门道来。
能详细说一下吗?
0 请登录后投票
   发表时间:2008-02-01  
hgq0011 写道
yyliuliang 写道

把效率低的sql语句的执行计划截几个图

重点看Profile里Duration 和Reads数高的

那图看不出什么门道来。
能详细说一下吗?


你看不出门道不要紧,贴上来让会看的分析一下呗。然后你在顺便学学。
不提供充足的信息,大伙也只能给你模糊的可能性分析。
信息提供得越具体,解决的可能性越大。如有疑问,请先看本站的“提问的智慧”。
0 请登录后投票
   发表时间:2008-02-01  
hgq0011 写道
xiaoyu 写道
首先要分析出, 你的索引有没有被使用, 如果没有被使用就白建了.

是的我也在考虑这个问题,请给我一些建议怎样确索引是否正确的被使用呢?我看到那个表已经建立了好几个索引,似乎建的不太正确。那个不是我负责的,正准备和同事商量能不能改善它,但是那个系统自从我们移走了200多万条记录,系统平稳运行。

xiaoyu 写道
如果这张表经常更新很多, 可以考虑让SqlServer采用Oracle的管理方式---就是select和update是不会被阻塞的.

这个能不能也请您具体说说,好吗? 因为我对ORACLE只懂一点皮毛,还正要更深入的研究它。谢谢!


xiaoyu 写道
可以按条件进行分区-这样你就不用分割表了(SQL server不太清楚, oracle是没有问题的, 不过分区这种东西要看合不合适你的业务).

SQLServer也可以进行分区的,似乎视图(不知道正不正确)。

我要用的那部门数据,我按照业务条件和估算日期建立了一个视图。从150W的记录中只那上百条记录。但是就是这上条数据中一次拿几条数据也要10S左右。这个开销太大了。也让我很头痛呀。现在我都怀疑用视图做这样的事情合不合适?本来我想对视图建一个唯一聚索引,查询倒是可以使用。但是对应的应用系统不能使用,通过系统不能更新数据。


关于分析SQL的index使用情况可以参考:http://www.itlearner.com/article/2005/2443.shtml

关于第二个update是否会阻塞select(update和select在不同的事务里, 处理同一条记录), 你要查一下SQL SERVER的手册了(SQL SERVER 我不熟)。

分区的话, 你可以看一下手册。
0 请登录后投票
   发表时间:2008-02-02  
Lucas Lee 写道

信息提供得越具体,解决的可能性越大

有些东西不便直接显示。
0 请登录后投票
   发表时间:2008-02-02  
有效索引,db优化,不用存储过程,DAO CACHE,app水平或垂直克隆,
0 请登录后投票
   发表时间:2008-02-02  
yyliuliang 写道

把效率低的sql语句的执行计划截几个图

重点看Profile里Duration 和Reads数高的

你是不是说的这个图?
引用的表名我去掉了。
  • 大小: 10.8 KB
  • 大小: 9.8 KB
  • 大小: 2.3 KB
0 请登录后投票
   发表时间:2008-02-02  
对于你这种情况,建议在本地建一个数据库,针对你使用的情况建表(这样就避免了夺表查询的消耗),定期从其他系统取数据,然后你的页面从本地取数据就可以了。
0 请登录后投票
   发表时间:2008-02-02  
dhcn 写道
对于你这种情况,建议在本地建一个数据库,针对你使用的情况建表(这样就避免了夺表查询的消耗),定期从其他系统取数据,然后你的页面从本地取数据就可以了。

这样不行,因为那些数据随时都可能改变,而且数据的价值非常高,出错就麻烦了。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics