-- 儲存過程儲存過程是一組預先建立並用指定的名稱儲存在資料庫伺服器上的 sql 語句,將使用比較頻繁或者比較複雜的操作,預先用 sql 語句寫好並儲存起來,以後當需要資料庫提供相同的服務時,只需再次執行該儲存過程。-- 1.儲存過程優化:事務行級鎖持有的時間
-- 2.不要過度依賴儲存過程
-- 3.簡單的邏輯可以應用儲存過程
-- 4.qps:乙個秒殺單6000/qps
1.具有更好的效能
儲存過程是預編譯的,只在建立時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般 sql 語句每執行一次就編譯一次,因此使用儲存過程可以提高資料庫執行速度。
2.功能實現更加靈活
儲存過程中可以應用條件判斷和游標等語句,有很強的靈活性,可以直接呼叫資料庫的一些內建函式,完成複雜的判斷和較複雜的運算。
3.減少網路傳輸
複雜的業務邏輯需要多條 sql 語句,當客戶機和伺服器之間的操作很多時,將產生大量的網路傳輸。如果將這些操作放在乙個儲存過程中,那麼客戶機和伺服器之間的網路傳輸就會減少,降低了網路負載。
4.具有更好的安全性
(1)資料庫管理人員可以更好的進行許可權控制,儲存過程可以遮蔽對底層資料庫物件的直接訪問,使用 execute 許可權呼叫儲存過程,無需擁有訪問底層資料庫物件的顯式許可權。
(2)在通過網路呼叫過程時,只有對執行過程的呼叫是可見的。無法看到表和資料庫物件名稱,不能嵌入sql 語句,有助於避免 sql 注入攻擊。
1.架構不清晰,不夠物件導向
儲存過程不太適合物件導向的設計,無法採用物件導向的方式將業務邏輯進行封裝,業務邏輯在儲存層實現,增加了業務和儲存的耦合,**的可讀性也會降低,
2.開發和維護要求比較高
儲存過程的編寫直接依賴於開發人員,如果業務邏輯改動較多,需要頻繁直接運算元據庫,大量業務降維到資料庫,很多異常不能在**中捕獲,出現問題較難排查,需要資料庫管理人員的幫助。
3.可移植性差
過多的使用儲存過程會降低系統的移植性。在對儲存進行相關擴充套件時,可能會增加一些額外的工作。
秒殺專案(6)介面優化
二 具體實現 三 秒殺和rabbitmq結合 需要實現initializingbean 介面,重寫afterpropertiesset 方法 public class miaoshacontroller implements initializingbean for goodsvo goodsvo ...
個人專案優化小細節總結
作為開發人員,總是會遇到接手別人的二手專案,一般接手之後基本都會修改或者優化。這邊也是,接手了乙個二手專案,一些優化小細節總結下,也為自己以後優化多張張經驗。積少成多嘛。1.優化前 if push else 也不知道想表達什麼,反正當時還看了半天想著這業務邏輯,最後也是突然大悟 優化後 cbpush...
淘東電商專案(73) 秒殺系統(前端優化
淘東電商專案 安全架構設計模組的文章已經講解完了,有興趣的童鞋可以閱讀下 前面安全架構設計,主要介紹了如下幾種 本文開始講解 秒殺系統模組 這篇部落格主要講解前端優化這一部分。l 1.什麼是秒殺系統?l 1.1 秒殺介紹 l 1.2 秒殺的常見方式 l 1.3 秒殺遇到的問題 l 1.4 秒殺的解決...