秒殺專案總結(優化網路延遲以及使用儲存過程)

2021-10-09 15:12:57 字數 1307 閱讀 9961

-- 儲存過程

-- 1.儲存過程優化:事務行級鎖持有的時間

-- 2.不要過度依賴儲存過程

-- 3.簡單的邏輯可以應用儲存過程

-- 4.qps:乙個秒殺單6000/qps

儲存過程是一組預先建立並用指定的名稱儲存在資料庫伺服器上的 sql 語句,將使用比較頻繁或者比較複雜的操作,預先用 sql 語句寫好並儲存起來,以後當需要資料庫提供相同的服務時,只需再次執行該儲存過程。

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 秒殺的解決...