mysql高併發解決方案

2022-07-11 19:27:13 字數 890 閱讀 7827

mysql高併發的解決方法有:

優化sql語句,優化資料庫字段,加快取,分割槽表,讀寫分離以及垂直拆分,解耦模組,水平切分等。

高併發大多的瓶頸在後台,在儲存mysql的正常的優化方案如下:

(1)**中sql語句優化

(2)資料庫字段優化,索引優化

(3)加快取,redis/memcache等

(4)主從,讀寫分離

(5)分割槽表

(6)垂直拆分,解耦模組

(7)水平切分

方案分析:

1、方法1個方法2是最簡單,也是提公升效率最快的方式。因為每條語句都命中了索引,是最高效的。但是如果是為了使sql達到最優而去建索引,那麼索引就氾濫了,對於千萬級以上的表來說,維護索引的成本大大增加,反而增加了資料庫的記憶體的開銷。

2、資料庫欄位的優化。曾經發現一高階程式設計師在表字段的設計上,乙個日期型別,被設計為varchar型別,不規範的同時,無法對寫入資料校驗,做索引的效率也有差別

3、快取適合讀多寫少更新頻度相對較低的業務場景,否則快取異議不大,命中率不高。快取通常來說主要為了提高介面處理速度,降低併發帶來的db壓力以及由此產生的其他問題。

4、分割槽不是分表,結果還是一張表,只不過把存放的資料檔案分成了多個小塊。在表資料非常大的情況下,可以解決無法一次載入記憶體,以及大表資料維護等問題。

5、垂直拆分將表按列拆成多表,常見於將主表的擴充套件資料獨立開,文字資料獨立開,降低磁碟io的壓力。

6、水平拆,水平拆分的主要目的是提公升單錶併發讀寫能力(壓力分散到各個分表中)和磁碟io效能(乙個非常大的.myd檔案分攤到各個小表的.myd檔案中)。如果沒有千萬級以上資料,為什麼要拆,僅對單錶做做優化也是可以的;再如果沒有太大的併發量,分割槽表也一般能夠滿足。所以,一般情況下,水平拆分是最後的選擇,在設計時還是需要一步一步走。

標籤: 資料庫

高併發解決方案

時常看到高併發的問題,但高併發其實是最不需要考慮的東西。為何,他虛無縹緲,很少有 真的需要這些東西,而且其中很多技術,其實你已經在用了。有這個意識就夠了,不需要時刻盯著這個問題。只有很少的 真的能達到高併發。簡單做乙個歸納,從低成本 高效能和高擴張性的角度來說有如下處理方案 1 html靜態化 2 ...

高併發解決方案

將靜態資源分離到靜態站,對靜態資源的請求打到靜態站,增加動態站的請求處理量 頁面靜態化是將程式生成的頁面儲存起來,使用模板技術如freemarker和velocity生成靜態頁面 nginx快取頁面資訊,再次請求時直接從快取中獲取,不需要重新生成,頁面快取記憶體中,提高訪問速度 具有相同處理功能的伺...

高併發解決方案

秒殺場景一般會在電商 舉行一些活動或者節假日在12306 上搶票時遇到。對於電商 中一些稀缺或者 商品,電商 一般會在約定時間點對其進行限量銷售,因為這些商品的特殊性,會吸引大量使用者前來搶購,並且會在約定的時間點同時在秒殺頁面進行搶購。限流 鑑於只有少部分使用者能夠秒殺成功,所以要限制大部分流量,...