資料庫高併發解決方法總結
一個專案剛開始的時候是為了實現基本功能,隨著版本和功能的迭代,大資料和高併發成了軟體設計必須考慮的問題!
本質很簡單,一個是慢,一個是等。
兩者是相互關聯的,因為慢,所以要等,因為等,所以慢,解決了慢,也就解決了等,解決了等,也就解決了慢。
關鍵是如何解決慢和等,核心一個是短,一個是少,一個是分流,最後一個是叢集/橫向擴張/讀寫分離/建立主從。
- 短是指路徑要短:
典型的mvc結構是請求->controller->model->dao->view,然後把頁面返回給使用者。要想短的話,
1,頁面靜態化- 使用者可以直接獲取頁面,不用走那麼多流程,比較適用於頁面不頻繁更新。
2,使用快取- 第一次獲取資料從資料庫準提取,然後儲存在快取中,以後就可以直接從快取提取資料。不過需要有機制維持快取和資料庫的一致性。
3,使用儲存過程-那些處理一次請求需要多次訪問資料庫的操作,可以把操作整合到儲存過程,這樣只要一次資料庫訪問就可以了。
4,批量讀取 - 高併發情況下,可以把多個請求的查詢合併到一次進行,以減少資料庫的訪問次數
5,延遲修改 - 高併發情況下,可以把多次修改請求,先儲存在快取中,然後定時將快取中的資料儲存到資料庫中,風險是可能會斷電丟失快取中的資料,
6, 使用索引 - 索引可以看作是特殊的快取,儘量使用索引就要求where字句中精確的給出索引列的值。
- 少是指查詢的資料要少:
1,分表 - 把本來同一張表的內容,可以按照地區,類別等分成多張表,很簡單的一個思路,但是要儘量避免分出來的多表關聯查詢。
2,分離活躍資料 - 例如登入使用者業務,註冊使用者很多,但是活躍的登入使用者很少,可以把活躍使用者專門儲存一張表,查詢是先查詢活躍表,沒有的話再查總表,這也類似與快取啦。
3, 分塊 - 資料庫層面的優化,對程式是透明的,查詢大資料只用找到相應塊就行。
- 分流三種:
1,叢集 - 將併發請求分配到不同的伺服器上,可以是業務伺服器,也可以是資料庫伺服器。
2,分散式 - 分散式是把單次請求的多項業務邏輯分配到多個伺服器上,這樣可以同步處理很多邏輯,一般使用與特別複雜的業務請求。
3,CDN - 在域名解析層面的分流,例如將華南地區的使用者請求分配到華南的伺服器,華中地區的使用者請求分配到華中的伺服器。
- 橫向擴充套件
相關推薦
資料庫高併發解決方法總結
一個專案剛開始的時候是為了實現基本功能,隨著版本和功能的迭代,大資料和高併發成了軟體設計必須考慮的問題! 本質很簡單,一個是慢,一個是等。 兩者是相互關聯的,因為慢,所以要等,因為等,所以慢,解決了慢,也就解決了等,解決了等,也就解決了慢。 關鍵是如何解決慢和等,核
大規模分散式應用之海量資料和高併發解決方案總結視訊教程網盤
大規模分散式應用之海量資料和高併發解決方案總結視訊教程網盤 39套Java架構師,高併發,高效能,高可用,分散式,叢集,電商,快取,微服務,微信支付寶支付,公眾號開發,java8新特性,P2P金融專案,程式設計,功能設計,資料庫設計,第三方支付,web安全,效能調優,設計模式,資料結構,併發程式
大型網站應用之海量資料和高併發解決方案總結
一、網站應用背景 開發一個網站的應用程式,當用戶規模比較小的時候,使用簡單的:一臺應用伺服器+一臺資料庫伺服器+一臺檔案伺服器,這樣的話完全可以解決一部分問題,也可以通過堆硬體的方式來提高網站應用的訪問效能,當然,也要考慮成本的問題。 當問題的規模在經濟條件下通過堆硬體的
大規模分散式應用之海量資料和高併發解決方案總結
一、網站應用背景 開發一個網站的應用程式,當用戶規模比較小的時候,使用簡單的:一臺應用伺服器+一臺資料庫伺服器+一臺檔案伺服器,這樣的話完全可以解決一部分問題,也可以通過堆硬體的方式來提高網站應用的訪問效能,當然,也要考慮成本的問題。 當問題的規模在經濟條件下通過堆硬體的
大型網站應用之海量資料和高併發解決方案總結一二
一、網站應用背景 開發一個網站的應用程式,當用戶規模比較小的時候,使用簡單的:一臺應用伺服器+一臺資料庫伺服器+一臺檔案伺服器,這樣的話完全可以解決一部分問題,也可以通過堆硬體的方式來提高網站應用的訪問效能,當然,也要考慮成本的問題。 當問題的規模在經濟條件
數據庫高並發解決方法總結
靜態 csdn 訪問 主從 必須 流程 lib 如何解決 機制 一個項目剛開始的時候是為了實現基本功能,隨著版本和功能的叠代,大數據和高並發成了軟件設計必須考慮的問題! 本質很簡單,一個是慢,一個是等。 兩者是相互關聯的,因為慢,所以要等,因為等,所以慢,解決了慢,也就
oracle資料庫CPU特別高的解決方法
system表空間100%,導致資料庫無法訪問 系統表空間正常情況下只存放了資料字典之類的東西,所以佔用的空間一般在500M以下。如果你的系統表空間佔用比較多的空間,可能有以下幾方面的原因:1)沒有為使用者明確指定預設表空間,導致system系統表空間作為使用者預設表空間2)開啟了審計,
zabbix 監控平臺搭建過程中的報錯與解決方法總結
監控 zabbix 運維自動化1.php option post_max_size 2.php option max_execution_time 3.php option max_input_time 4.php time zone 5.php bcm
遠程桌面連接MySQL遇到的問題及解決方法總結
許可授權 fire ble 連接 配置 image iptable 問題 分享 背景提要:想用Delphi做一個可以連接Mysql數據庫的桌面應用程序。其中遇到了一些讓自己很苦惱的問題。因為自己是新手,Delphi用的不熟,FireDAC這個連接數據庫裏控件更是沒有接觸
【Android】getActionBar()為null的解決方法總結
andro 調用 種類 ref code trac page 沒有 stack 前言 在使用 ActionBar的時候,有時候會爆出空指針異常,這是由於應用沒有獲取到 ActionBar 導致的,而導致應用沒有獲取到 ActionBar 的原因比較多。
CSS - 移動端 常見小bug整理與解決方法總結【更新中】
mic ros class clas 問題 像素 css strong 常見問題 常見問題總結與整理系列~ 1. border一像素在手機上看著有點粗的問題: 原理是因為:1px在手機上是使用2dp進行渲染的 換成 border: 0.5像素?是不行的!
No module named _tkinter, please install the python-tk package 解決方法總結
not 原因 sin 程序開發 找到 pytho iss 配置 重新 0. 前言 在ipython環境中,要用到matlotlib庫,運行.py文件時,提示以下錯誤: No module named _tkinter, please install the py
站長篇----遠端連線資料庫失敗的解決方法
前言 遠端連線資料出錯,報: host “XXXXXXXXXXXX” is not allowed to connect to this MySql server unable to authentic SSH tunnel: Invalid user
關於java.lang.UnsupportedClassVersionError解決方法總結
今天在把本地專案像伺服器部署的時候報錯java.lang.UnsupportedClassVersionError,我本地用的JDK1.8,伺服器是1.7的JDK,所以報這個錯誤,我又重新在本地安裝了JDK1.7,重新編譯後上傳,問題解決。在這做個記錄。 此問題一般出現在高版本JDK向底版本JD
Centos7安裝Oracle11g出現問題的解決方法總結
在Centos7中安裝Oracle11g時,出現無法看到提示的警示框時,則採用以下方法安裝Oracle 解決方案:./runInstaller -jreLoc /usr/local/jdk1.8 其中/usr/local/jdk1.8是jdk的安裝路徑,個人根據實際情況進行修改。 在
高併發解決方案(負載均衡)
1,什麼是負載均衡? 當一臺伺服器的效能達到極限時,我們可以使用伺服器叢集來提高網站的整體效能。那麼,在伺服器叢集中,需要有一臺伺服器充當排程者的角色,使用者的所有請求都會首先由它接收,排程者再根據每臺伺服器的負載情況將請求分配給某一臺後端伺服器去處理。 那麼在這個過程中,排程者如何合理分配
高併發解決方案 -負載均衡
上一篇文章說過會轉載一篇負載均衡的介紹方面的文章,就是下面這個了~~~ 什麼是負載均衡? 當一臺伺服器的效能達到極限時,我們可以使用伺服器叢集來提高網站的整體效能。那麼,在伺服器叢集中,需要有一臺伺服器充當排程者的角色,使用者的所有請求都會首先由它接收,排程者再根據每臺伺服器的負載情
移動端網頁布局中需要註意事項以及解決方法總結
lse capi 內置 orm style pac 語法 :active masonry 移動端網頁布局中需要註意事項以及解決方法總結,這份對我們在布局移動端網頁的時候非常有用! winphone系統a、input標簽被點擊時產生的半透明灰色背景怎麽去掉 <
移動端網頁佈局中需要注意事項以及解決方法總結
移動端網頁佈局中需要注意事項以及解決方法總結,這份對我們在佈局移動端網頁的時候非常有用! winphone系統a、input標籤被點選時產生的半透明灰色背景怎麼去掉 <meta name="msapplication-tap-highlight"&nbs
MySQL資料庫(一)編譯安裝、安裝後優化操作及超戶忘記資料庫密碼的解決方法
MySQL的下載地址:http://www.dev.mysql.com/downloads 準備工作:解除安裝rpm方式安裝的mysql-server、mysql rpm -qa | grep mysql 若存在,用rpm -e mysql-server mysql --nodeps命令解除