日期:2014-05-19  浏览次数:20413 次

操作数据库放在逻辑层和直接用存储过程实现的性能差异的真正缘由谁能说明白?
比如相同的向数据库插入一条记录的业务,相同的硬件环境下。
插入操作是放在业务层dll里和直接用存储过程的差异。我是希望把这个实现黑箱打开看看?!
开发环境:
1.windows2003+vs2003+sqlserver2000
2.windows2003+vs2005+sqlserver2005
能否在1,2条件下各自说一下,谢谢!

------解决方案--------------------
这么低层的东西,知道的人不太多巴
------解决方案--------------------
不明白 帮顶一下
------解决方案--------------------
为什么要明白呢?你觉得哪个方便就哪个

------解决方案--------------------
yun
------解决方案--------------------
来学习
------解决方案--------------------
个人 理解
就是 多了 对业务逻辑Dll 函数 调用的 寻址损耗

------解决方案--------------------
理论上存储过程效率稍高,因为存储过程是预编译的,SQL Server对其专门优化过再执行。
------解决方案--------------------
存储过程效率高

操作数据库放在逻辑层,一个是易于修改和扩充,另一个是可以在操作数据库前进行一些逻辑和业务上的操作
------解决方案--------------------
拷!
插入一条记录能有多少性能区别?

我认为存储过程效率最明显体现在在复杂逻辑的情况,减少数据库跟程序的往返。

网络的ping延迟远远高于程序进行逻辑判断。
------解决方案--------------------
如果数据有误(逻辑判断),就根本不去操作数据库,省下不少时间.
------解决方案--------------------
UP!
------解决方案--------------------
大多数时候这种比较没有意义。它们在结构上彻底就是不同的隔离层次,而不单纯是同一层次内效率的比较。

你穿着合适的衣服上街效率高呢?还是先光着身子上街然后根据街上的情况再传上合适的衣服效率高呢?

上面这种问题已经到了一种完全脱离应用环境的阶段了,意思不大。在应用中,一个对创意、流传那个设计的改变对效率、效果的影响往往比在死抠个别技术细节所得到的改进高数十倍,因此人们从工程的角度看软件项目而不是从学生的角度。正如那个“穿衣服上街”的例子,人们从社会学的角度看问题,死抠技术反而会得到病态的、难以改进的行为设计。
------解决方案--------------------
当然是存储过程效率高了,这还用说.
第一存储过程是预编译的,而且经过了优化,执行效率比一条条SQL语句解释执行高.
第二存储过程只用传输一条命令和若干参数,大大节省网络带宽,提高传输速度.
第三存储过程是封装的,而且有严格的参数检查,有利于提高安全性.

所以我认为,如果是一个相对固定的逻辑,比如根据给定账号判断登录,并记下登录次数,我认为放在过程里把它 "固化 "比较好.

------解决方案--------------------
来学习了
------解决方案--------------------
假如楼主想吃猪肉(实现功能),放在逻辑层好比猪肉还在猪身上,写成存储过程好比猪肉已经切好、调好味、放进微波炉了,就等楼主按开关了。
------解决方案--------------------
高手们的议论我琢磨了半天,终于悟出了,如果你还在为存储过程而犯愁,那你还是个民工.

可是我们现在就是民工,所以还是要搞清楚好一点.
------解决方案--------------------
不上不下,下下上上
------解决方案--------------------

拷!
插入一条记录能有多少性能区别?

我认为存储过程效率最明显体现在在复杂逻辑的情况,减少数据库跟程序的往返。

网络的ping延迟远远高于程序进行逻辑判断。