程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql數據庫應付大流量網站的的3種架構擴展方式介紹

mysql數據庫應付大流量網站的的3種架構擴展方式介紹

編輯:關於MYSQL數據庫

數據庫擴展大概分為以下幾個步驟:

1、讀寫分離:當數據庫訪問量還不是很大的時候,我們可以適當增加服務器,數據庫主從復制的方式將讀寫分離;

2、垂直分區:當寫入操作一旦增加的時候,那麼主從數據庫將花更多的時間的放在數據同步上,這個時候服務器也是不堪重負的;那麼就有了數據的垂直分區,數據的垂直分區思路是將寫入操作比較頻繁的數據表,如用戶表_user,或者訂單表_orders,那麼我們就可以把這個兩個表分離出來,放在不同的服務器,如果這兩個表和其他表存在聯表查詢,那麼就只能把原來的sql語句給拆分了,先查詢一個表,在查詢另一個,雖然說這個會消耗更過性能,但比起那種大量數據同步,負擔還是減輕了不少;

3、水平分區:但是往往事情不盡人意,可能采取垂直分區能撐一段時間,由於網站太火了,訪問量又每日100w,一下子蹦到了1000w,這個時候可以采取數據的進行分離,我們可以根據user的Id不同進行分配,如采取%2的形式,或者%10的形式,當然這種形式對以後的擴展有了很大的限制,當我由10個分區增加到20個的時候,所有的數據都得重新分區,那麼將是一個的很龐大的計算量;以下提供幾種常見的算法:
  哈希算法:就是采用user_id%的方式;
  范圍:可以根據user_id字符值范圍分區,如1-1000為一區,1001-2000則是另一個區等;
  映射關系:就是將user_id存在的所對應的分區放在數據庫中保存,當用戶操作時先去查詢所在分區,再進行操作;

對於以上幾種擴展方式,讀寫分離主要是操作上的擴展,垂直分區主要是對寫入較頻繁數據表的分離,水平分區主要是數據分離;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved