通过使用存储过程处理数据而不是将数据存储到检索后的函数中,是否可以提高性能?


8

标题进行了总结。我对PHP相当满意,并且可以轻松地使用MySQL的值来使其满足我的需要,但是为了扩展我的知识,我一直在想,这是否可能是一种更有效的技术。长跑。它们是否相等(由于最后的处理量大致相同),还是在某些情况下一个呈现出明显的优势?


3
好的问题和长期的讨论.. APP方面将有多少,DB方面将有多少。您可能需要将其改写为“ RDBMS to APP-Layer”,因为该问题适用于所有类型的DB和APP交互。
塞巴斯蒂安·罗斯

2
我想补充这个问题真是太糟糕了,但是我没什么可补充的atm。这是一个很大的问题,我不介意成为规范的常见问题
jcolebrand

我实际上是在考虑问这个问题,DBA是否会在这里成为话题。我搜索了完全不同的东西,偶然发现了这一点。因此+1以阅读我的思想
德里克·唐尼

Answers:


6

这很大程度上取决于您对记录的处理方式以及您的网络体系结构。例如,如果存储过程将减少从MySQL传输到PHP的数据总量,并且PHP实例与数据库之间的链接相对较慢,则SP当然可以为您提供帮助。

我建议您从在PHP方面对数据进行的一些“较重”的操作开始,看看可以作为SP编写的内容,然后对其进行基准测试。


5

支持在数据库中执行更多处理的一点是,数据库无法优化它看不到的内容。例如,如果在数据库层中进行操作,则将所有实例的持久化类的属性设置为恒定值肯定会更好。

反对的观点是数据库擅长基于集合的操作,但不擅长基于行的操作。例如,类似基于每行变化的时区将UTC时间转换为本地时间的事情在数据库中的表现可能不如在应用程序层中那样好。


关于优化器的一个很好的观点。
TML

2

通常,如果结果是聚合(求和,平均,计数),则通过避免服务器与客户端之间不必要的通信,可以更快地在数据库服务器中进行计算。同样,排序和分组可以使索引受益,从而减少计算量。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.