日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 垂直拆分 原因_mysql的水平拆分和垂直拆分 (转)

發布時間:2025/5/22 数据库 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 垂直拆分 原因_mysql的水平拆分和垂直拆分 (转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.cnblogs.com/sns007/p/5790838.html

1,水平分割:

例:QQ的登錄表。假設QQ的用戶有100億,如果只有一張表,每個用戶登錄的時候數據庫都要從這100億中查找,會很慢很慢。如果將這一張表分成100份,每張表有1億條,就小了很多,比如qq0,qq1,qq1...qq99表。

用戶登錄的時候,可以將用戶的id%100,那么會得到0-99的數,查詢表的時候,將表名qq跟取模的數連接起來,就構建了表名。比如123456789用戶,取模的89,那么就到qq89表查詢,查詢的時間將會大大縮短。

這就是水平分割。

2,垂直分割:

垂直分割指的是:表的記錄并不多,但是字段卻很長,表占用空間很大,檢索表的時候需要執行大量的IO,嚴重降低了性能。這時需要把大的字段拆分到另一個表,并且該表與原表是一對一的關系。

例如學生答題表tt:有如下字段:

Id name 分數 題目 回答

其中題目和回答是比較大的字段,id name 分數比較小。

如果我們只想查詢id為8的學生的分數:select 分數 from tt where id = 8;雖然知識查詢分數,但是題目和回答這兩個大字段也是要被掃描的,很消耗性能。但是我們只關心分數,并不想查詢題目和回答。這就可以使用垂直分割。我們可以把題目單獨放到一張表中,通過id與tt表建立一對一的關系,同樣將回答單獨放到一張表中。這樣我們插敘tt中的分數的時候就不會掃描題目和回答了。

3,其他要點:

1)存放圖片、文件等大文件用文件系統存儲。數據庫只存儲路徑,圖片和文件存放在文件系統,甚至單獨存放在一臺服務器(圖床)。

2)數據參數配置。

最重要的參數就是內存,我們主要用的innodb引擎,所以下面兩個參數調的很大:

innodb_additional_mem_pool_size=64M

innodb_buffer_pool_size=1G

對于MyISAM,需要調整key_buffer_size,當然調整參數還是要看狀態,用show status語句可以看到當前狀態,以決定該調整哪些參數。

4,合理的硬件資源和操作系統

如果機器的內存超過4G,那么應當采用64位操作系統和64位MySQL。

案例:

簡單購物系統暫設涉及如下表:

1.產品表(數據量10w,穩定)

2.訂單表(數據量200w,且有增長趨勢)

3.用戶表 (數據量100w,且有增長趨勢)

以mysql為例講述下水平拆分和垂直拆分,mysql能容忍的數量級在百萬靜態數據可以到千萬

垂直拆分:

解決問題:

表與表之間的io競爭

不解決問題:

單表中數據量增長出現的壓力

方案:

把產品表和用戶表放到一個server上

訂單表單獨放到一個server上

水平拆分:

解決問題:

單表中數據量增長出現的壓力

不解決問題:

表與表之間的io爭奪

方案:

用戶表通過性別拆分為男用戶表和女用戶表

訂單表通過已完成和完成中拆分為已完成訂單和未完成訂單

產品表 未完成訂單放一個server上

已完成訂單表盒男用戶表放一個server上

女用戶表放一個server上

總結

以上是生活随笔為你收集整理的mysql 垂直拆分 原因_mysql的水平拆分和垂直拆分 (转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。