日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時間:2024/4/17 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从知乎了解到,为什么Mysql禁用存储过程、外键和级联? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

打開帖子直接一張醒目的圖,是阿里巴巴的Java開發(fā)手冊對Mysql相關的要求。

看看下面的回復

靈劍

存儲過程沒有版本控制,版本迭代的時候要更新很麻煩。存儲過程如果和外部程序結合起來用,更新的時候很難無感升級,可能需要停服。存儲過程不利于將來分庫分表。存儲過程的功能不一定夠強大,業(yè)務擴展之后可能會發(fā)現(xiàn)無法繼續(xù)用存儲過程實現(xiàn)了。存儲過程可能無法和許多中間件、ORM庫一起使用。某些特殊的兼容MySQL的實現(xiàn)可能根本就不支持存儲過程,那就更不用說了。
這也不絕對,在微軟的時候就有項目是反過來的,所有業(yè)務都需要用存儲過程寫在SQL Server里面,查詢全寫成視圖,業(yè)務代碼只允許使用視圖和存儲過程,只要SELECT和EXECUTE權限就夠了;修改業(yè)務只需要登服務器改存儲過程。這屬于思路不同。 吳啊

任何技術都要分使用場景,阿里這種互聯(lián)網高并發(fā)的場景,很多數(shù)據(jù)都是分庫分表的,而且要求高度可擴展,原則是對db的保護做到最大化,能減少db壓力的就減少db壓力,盡量把運算邏輯拉到代碼里面。存儲過程的優(yōu)點在于封裝性好,直接讓db進行運算,但是缺點在于難以維護,而且大大增大db壓力。所以開發(fā)過程中禁止使用存儲過程也是阿里多年經驗積累出來的。

?

孤盡[《阿里巴巴JAVA開發(fā)手冊》主要作者]

解釋一下這個事情:曾經寫過近1200行的存儲過程,沒有辦法斷點,下層數(shù)據(jù)結構只是稍微變動,根本無法找到出錯點,只是提示一下說:ERROR:1064啥的。在數(shù)據(jù)庫遷移的時候,由于數(shù)據(jù)庫版本變更,居然存儲過程無法執(zhí)行。另外,業(yè)務上需要擴展一下,那就是災難性的啊。沒想到,我覺得毫無爭議的這一條,反而成了一個最大的爭議點。存儲過程只是單機時代的產物,并不適合互聯(lián)網時代。

?

陳曦

小公司還好,大公司對db把控很嚴格。分別說下:調試:線上調試一般就是打日志,在應用層,日志可以在任何一步打,但是存儲過程的話,日志沒法跟蹤詳細的執(zhí)行過程。擴展:譬如你的 產品購買流程 要增加一個動作,這時候就要修改存儲過程到db里,你這時候要直接操作db,而在大公司,直接操作db只能有dba來進行,其他都要審批后使用公司自己開發(fā)的工作來進行,且只能是簡單的crud。移植:你用mysql寫的存儲過程,到了sqlserver不一定能直接用。但是在應用層的話,程序里的crud的基礎sql基本上通用的,修改下連接串一般就ok了。

?

........

原貼地址:知乎地址

轉載于:https://www.cnblogs.com/wt645631686/p/8381333.html

總結

以上是生活随笔為你收集整理的从知乎了解到,为什么Mysql禁用存储过程、外键和级联?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。