我们正处于一个新项目的开始,我们真的想知道是否应该在MySQL中使用存储过程。
我们将仅使用存储过程来插入和更新业务模型实体。有几个表代表一个模型实体,我们将在那些存储过程的插入/更新中对其进行抽象。
另一方面,我们可以从Model层调用插入和更新,但是不能在MySQL中,而是在PHP中。
根据您的经验,哪个是最佳选择?两种方法的优点和缺点。就高性能而言,哪个是最快的?
PS:这是一个大多数阅读的Web项目,而高性能是最重要的要求。
与实际的编程语言代码不同,它们:
不可移植(每个数据库都有其自己的PL / SQL版本。有时同一数据库的不同版本不兼容-我已经看到了!) 难以测试-您需要一个真实的(dev)数据库实例对其进行测试,因此几乎不可能对它们的代码进行构建的单元测试 不容易更新/发布-您必须删除/创建它们,即修改生产数据库以释放它们 没有库支持(为什么在别人拥有时编写代码) 不容易与其他技术集成(尝试从中调用Web服务) 他们使用的语言与Fortran一样原始,因此难以完成有用的编码,因此很难表达业务逻辑,即使通常这是其主要目的。 不提供调试/跟踪/消息记录等功能(某些数据库可能支持此功能-虽然我没有看到) 缺乏像样的IDE来帮助语法和链接到其他现有过程(例如,像Eclipse的Java那样) 熟练的编码人员比应用编码人员稀有且昂贵 它们的“高性能”是一个神话,因为它们通常在数据库服务器上执行,因此通常会增加数据库服务器的负载,因此使用它们通常会降低最大事务吞吐量 无法有效共享常量(通常通过在过程中创建表并对其进行查询来解决-非常低效) 等等 如果您有一个非常特定于数据库的操作(例如,用于维护数据库完整性的事务内操作),或者使您的过程保持原子性和简单性,那么也许您可以考虑使用它们。
在预先指定“高性能”时,建议谨慎。它通常会导致错误的选择,以牺牲好的设计为代价,并且比您想的要早得多。
使用存储过程的后果自负(曾经去过那里并且从不想回头的人)。我的建议是避免它们像瘟疫一样。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。