打开帖子直接一张醒目的图,是阿里巴巴的Java开发手册对Mysql相关的要求。

看看下面的回复

灵剑

存储过程没有版本控制,版本迭代的时候要更新很麻烦。存储过程如果和外部程序结合起来用,更新的时候很难无感升级,可能需要停服。存储过程不利于将来分库分表。存储过程的功能不一定够强大,业务扩展之后可能会发现无法继续用存储过程实现了。存储过程可能无法和许多中间件、ORM库一起使用。某些特殊的兼容MySQL的实现可能根本就不支持存储过程,那就更不用说了。
这也不绝对,在微软的时候就有项目是反过来的,所有业务都需要用存储过程写在SQL Server里面,查询全写成视图,业务代码只允许使用视图和存储过程,只要SELECT和EXECUTE权限就够了;修改业务只需要登服务器改存储过程。这属于思路不同。

吴啊

任何技术都要分使用场景,阿里这种互联网高并发的场景,很多数据都是分库分表的,而且要求高度可扩展,原则是对db的保护做到最大化,能减少db压力的就减少db压力,尽量把运算逻辑拉到代码里面。存储过程的优点在于封装性好,直接让db进行运算,但是缺点在于难以维护,而且大大增大db压力。所以开发过程中禁止使用存储过程也是阿里多年经验积累出来的。

孤尽[《阿里巴巴JAVA开发手册》主要作者]

解释一下这个事情:曾经写过近1200行的存储过程,没有办法断点,下层数据结构只是稍微变动,根本无法找到出错点,只是提示一下说:ERROR:1064啥的。在数据库迁移的时候,由于数据库版本变更,居然存储过程无法执行。另外,业务上需要扩展一下,那就是灾难性的啊。没想到,我觉得毫无争议的这一条,反而成了一个最大的争议点。存储过程只是单机时代的产物,并不适合互联网时代。

陈曦

小公司还好,大公司对db把控很严格。分别说下:调试:线上调试一般就是打日志,在应用层,日志可以在任何一步打,但是存储过程的话,日志没法跟踪详细的执行过程。扩展:譬如你的 产品购买流程 要增加一个动作,这时候就要修改存储过程到db里,你这时候要直接操作db,而在大公司,直接操作db只能有dba来进行,其他都要审批后使用公司自己开发的工作来进行,且只能是简单的crud。移植:你用mysql写的存储过程,到了sqlserver不一定能直接用。但是在应用层的话,程序里的crud的基础sql基本上通用的,修改下连接串一般就ok了。

........

原贴地址:知乎地址

转载于:https://www.cnblogs.com/wt645631686/p/8381333.html

从知乎了解到,为什么Mysql禁用存储过程、外键和级联?相关推荐

  1. mysql怎么写外键支持级联删除_MySQL外键级联删除不起作用,完全难倒

    我已经阅读了很多其他线程,但我仍然感到难过.我创建了两个非常简单的表作为完整性检查,并且无法让它们执行级联删除,因此需要一些帮助. CREATE TABLE `test1` ( `test1_ID` ...

  2. oracle+cascade=gt;true,mysql数据库主外键级联删除脚本RESTRICT -- CASCADE

    在项目中,我们一般在数据库设计的时候做主外键关联设计,要么就不做.但是这样不符合规范,呵呵. 建立主外键关系的时候,默认是不能级联删除的.而出现往往在删除主表的数据时报错, 需要先删除从表然后再删除主 ...

  3. mysql中外键设置级联删除_MySQL中利用外键实现级联删除、更新

    MySQL中利用外键实现级联删除.更新 MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引.在 创建索引的时候,可以指 ...

  4. mysql删除表外键_MySQL删除所有表的外键约束、禁用外键约束

    数据库的外键虽然能保证数据数据一致性和完整性,但是也一定程度地影响了数据更新的性能.在开发中,我们使用PowerDesigner建立物理数据模型时,为了结构的清晰,增加可读性,会创建表与表之间的关联关 ...

  5. mysql建表外键_mysql建表约束

    建表规约 [强制]:存储引擎必须使用 InnoDB 解读:InnoDB 支持事物.行级锁.并发性能更好,CPU 及内存缓存页优化使得资源利用率更高. [强制]:每张表必须设置一个主键 ID,且这个主键 ...

  6. MySQL中包含外键无法删除数据的解决方案

    1.在数据库连接信息加入以下代码,意思就是允许执行多语句查询. allowMultiQueries=true 2.在删除语句前面加上SET FOREIGN_KEY_CHECKS=0; 意思就是取消My ...

  7. oracle外键约束怎么删除,mysql oracle 删除外键约束

    oracle 删除外键约束 禁用约束 启用约束 oracle 删除外键约束 禁用约束 启用约束 执行以下sql生成的语句即可 删除所有外键约束 Sql代码  select 'alter table ' ...

  8. mysql中的外键约束_MySQL外键约束

    在本教程中,您将了解MySQL外键(foreign key)以及如何在MySQL中创建,添加和删除外键约束. MySQL外键简介 外键表示一个表中的一个字段被另一个表中的一个字段引用.外键对相关表中的 ...

  9. Mysql无法创建外键的原因

    在Mysql中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个 ...

  10. mysql不能删除外键吗,MySQL不能删除外键约束所需的索引

    MySQL不能删除外键约束所需的索引 我需要改变现有的数据库添加一列. 因此我也想更新UNIQUE字段来包含这个新列. 我试图删除当前的索引,但不断收到错误MySQL Cannot drop inde ...

最新文章

  1. NC:北京大学吴华君-基因组3D结构调控胚胎干细胞分化
  2. ASP.NET Core Authentication and Authorization
  3. 二分法:两个有序数组长度为N,找到第N、N+1大的数
  4. 用ShopEx网上开店之安装Zend插件[2]
  5. callbackcallback()到底有什么涵义?
  6. poj 2987 Firing (最大权 闭合 图)
  7. 在条码打印软件上如何选择TSC TTP-244Pro打印机
  8. 利用局域网,传输文件
  9. 职称计算机考试在线题库,职称计算机考试题库理论「附答案」
  10. 无法修改计算机时间权限,无法修改系统时间怎么办
  11. ES搜索特殊字符异常Encountered: <EOF> after
  12. 每天坚持收小钱,能改命!
  13. Thymeleaf 模板语言th:style添加background样式
  14. 梦想照进现实|CSDN 实体奖牌 第五期
  15. mysql分隔符_在sql文件中设置MySQL分隔符
  16. iphone12mini参数配置 iphone12mini多大尺寸
  17. 笔记本,Debian不能调整亮度
  18. oracle 与赛门铁克,Oracle与赛门铁克认证Veritas数据中心解决方案
  19. 你还在为无法完美卸载SQL Server 2008 R2而烦恼吗?
  20. python祝福代码_python实现弹窗祝福效果

热门文章

  1. 数据结构-----最大堆的实现
  2. linux更改python版本链接
  3. linux下源码安装cmake
  4. 此域的推荐安全级别是“安全级-高”的解决办法
  5. muduo学习笔记 - 第五章 高效的多线程日志
  6. 2019牛客暑期多校训练营(第六场)H - Train Driver (最短路)
  7. attribute关键字
  8. Linux信号量之内核信号量
  9. c++关联容器的成员函数find的一个例子
  10. 第1-10个xhtml程序