存储过程应用中遇到的高级问题,对大家也会也所帮助.

XRS 2009-01-12 05:27:15
一个运算量比较大的存储过程,供100多个左右外网的客户端应用程序使用.此过程也只是从多表运算后返回一些记录到客户端(根据情况几百到几千条不等),也不需要回存.在客户端速度越来越慢,从开始的几秒到接近1分钟.我经过多种方法改进测试都没明显效果,后来想到将存储过程复制一份,用新的名字在客户端调用,立竿见影(至少快了6倍以上)!测试的时候外面的客户端是全部已连接的,我在开发环境里用新/旧两个不同名字同功能的存储过程测试出上述效果,由此我得出的结论,存储过程的执行性能与调用的客户端连接数关系很大!所以想在客户端程序里按连接数来分配不同名字的存储过程。
不知有没遇到这种情况的的?欢迎发表高见,共同交流!
...全文
95 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhnzzy 2009-01-13
  • 打赏
  • 举报
回复
换个名字就快6倍,不大可能吧,还是取间隔跟踪看看那些语句耗资源比较多吧
fanyuanwaifdl 2009-01-13
  • 打赏
  • 举报
回复
关注
-晴天 2009-01-13
  • 打赏
  • 举报
回复
如果原来的名称是系统保留字,恐怕还有一说.
hery2002 2009-01-13
  • 打赏
  • 举报
回复
关键还是你SP的优化问题,
而不是改个名称速度上就提升上来了,
只看到现象,没有看到本质.
dawugui 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 XRS 的帖子:]
一个运算量比较大的存储过程,供100多个左右外网的客户端应用程序使用.此过程也只是从多表运算后返回一些记录到客户端(根据情况几百到几千条不等),也不需要回存.在客户端速度越来越慢,从开始的几秒到接近1分钟.我经过多种方法改进测试都没明显效果,后来想到将存储过程复制一份,用新的名字在客户端调用,立竿见影(至少快了6倍以上)!测试的时候外面的客户端是全部已连接的,我在开发环境里用新/旧两个不同名字同功能的存储过程测试出上述效果,由此我得出的结论,存储过程的执行性能与调用的客户端连接数关系很大!所以想在客户端程序里按连接数来分配不同名字的存储过程。
不知有没遇到这种情况的的?欢迎发表高见,共同交流![/Quote]

你这个做法貌似是个童话故事.

如果仅仅是个查询并且返回的工作,不需要这么麻烦,而是精简你的业务逻辑,优化你的查询,设置好相关的主键,建立好相关的索引以及视图等.
ljluck7687 2009-01-12
  • 打赏
  • 举报
回复
尽管瘦客户机是一种方法,然而服务器的负载过重时就有必要将一部分运算转移到客户机上来。
建议:将存储过程的一部分运算分离出来,而直接在客户机运算
kslynn 2009-01-12
  • 打赏
  • 举报
回复
認同jinjazz的看法.
做壓力測試 及 優化 Procedure 才是根本之道.
叶子 2009-01-12
  • 打赏
  • 举报
回复
数据库的连接数是有上限的,太多了会溢出的!
jinjazz 2009-01-12
  • 打赏
  • 举报
回复
〉〉立竿见影(至少快了6倍以上)

建议你做压力测试,而不是手工测试,服务器的负载不是恒定不变的,连接数多了负载大了自然慢了,不关proc的事情。

解决办法

优化db结构,比如索引,分区表
优化数据结构,比如表合并,静态数据
优化程序结构,比如缓存

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧