1. 程式人生 > 其它 >sql事務與儲存過程

sql事務與儲存過程

儲存過程的優缺點

1.由於應用程式隨著時間推移會不斷更改 , 增刪功能 , SQL 語句會變得更復雜 , 儲存過程為封裝此類程式碼提供了一個替換位置 ;
2.由於儲存過程在建立時即在資料庫伺服器上進行了編譯並存儲在資料庫中 , 所以儲存過程執行要比單個的 SQL 語句塊要快 ;
3.由於在呼叫時只需用提供儲存過程名和必要的引數資訊 , 所以在一定程度上也可以減少網路流量 , 簡單網路負擔 ;
4.可維護性高 , 更新儲存過程通常比更改 , 測試以及重新部署程式集需要較少的時間和精力 ;
5.程式碼精簡一致 , 一個儲存過程可以用於應用程式程式碼的不同位置 ;
6.增強安全性 :
1.通過向用戶授予對儲存過程 (而不是基於表) 的訪問許可權 , 它們可以提供對特定資料的訪問 ;
2.提高程式碼安全 , 防止 SQL注入 (但未徹底解決 , 例如將資料操作語言 DML 附加到輸入引數) ;
3.SQLParameter 類指定儲存過程引數的資料型別 , 作為深層次防禦性策略的一部分 , 可以驗證使用者提供的值型別 (但也不是萬無一失 , 還是應該傳遞至資料庫前得到附加驗證) ;

缺點:

1.如果更改範圍大到需要對輸入儲存過程的引數進行更改 , 或者要更改由其返回的資料 , 則仍需要更新程式集中的程式碼以新增引數 , 等等 ;
2.可移植性差 , 由於儲存過程將應用程式繫結到 Server , 因此使用儲存過程封裝業務邏輯將限制應用程式的可移植性 ; 如果應用程式的可移植性在您的環境中非常重要 , 則將業務邏輯封裝在不特定於 RDBMS 的中間層中可能是一個更佳的選擇 ;

事務

事務的基本要素

(1)原子性:原子性是指事務是一個不可再分割的工作單位,事務中的操作要麼都發生,要麼都不發生。

(2)一致性:一致性是指在事務開始之前和事務結束以後,資料庫的完整性約束沒有被破壞。這是說資料庫事務不能破壞關係資料的完整性以及業務邏輯上的一致性。

(3)隔離性:隔離性是指併發的事務是相互隔離的。即一個事務內部的操作及正在操作的資料必須封鎖起來,不被企圖進行修改的事務看到 。

(4)永續性:永續性是指在事務完成以後,該事務所對資料庫所作的更改便持久的儲存在資料庫之中,並不會被回滾。即使出現了任何事故比如斷電等,事務一旦提交,則持久化儲存在資料庫中