首頁  >  問答  >  主體

mysql - 分库分表、分区、读写分离 这些都是用在什么场景下 ,会带来哪些效率或者其他方面的好处

天蓬老师天蓬老师2720 天前596

全部回覆(2)我來回復

  • 巴扎黑

    巴扎黑2017-04-17 16:51:52

    用處 / 功能

    讀寫分離:提高資料庫的讀取效能。
    分庫、垂直分錶:分散系統負載,讓原來一台機器做的事,變成幾台機器來做。
    水平分錶、分區:縮小索引大小,使查找更快。

    使用場景

    讀寫分離:打開一個帖子內容頁,需要select帖子表,和帖子評論表,每個耗時10ms的話。每秒1000次查詢就是這個資料庫的極限了。也就是說,這個論壇只能承載每秒500次造訪。那我們就可以對這個資料庫做讀寫分離,來倍增資料庫的讀取效能。

    水平分錶:交易歷史,這種表。因為很少查詢1年前的資訊。所以,我們可以用年份來進行水平分錶。將今年的表優先對待。就減少了要查詢的表格的大小。

    分庫:如果我們的系統非常大了,功能非常多,就會有很多類型的資料庫表,例如行銷活動的表,和使用者帳號的表是沒有關聯的,那麼我們就可以將他們分到兩個資料庫中,然後放到不同的獨立的資料庫伺服器,就能讓資料庫吞吐量倍增。

    垂直分錶:典型的應用場景是在文章列表這樣的場景,一般來講,我們的文章表會有title、userId、Content等字段,其中的Content字段一般是Text或者LongText類型,而其它的欄位都是固定長度的資料型態。我們知道一個資料庫最佳化規則是:

    如果一個表格的所有欄位都是固定長度類型的,那麼它就是定長表,定長表比動態長度表查詢效能高

    那麼,我們就可以使用垂直分錶來將文章表分成文章表和文章內容表。於是文章列表頁面所需的查詢,就只需要查詢一張定長表了。

    未完待續

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 16:51:52

    資料庫的表的記錄在超過一定數量後效能下降嚴重,因此要維持單表資料量不過高,分錶。

    資料庫程式是透過大量IO訪問數據,為了使用多台廉價機器同時服務以提高效能而不用購買單台超級機器,分庫。

    同樣是因為IO,一般讀比寫數量多,單獨提供讀取減輕寫的壓力,也提供了一定的冗餘抗災能力。

    回覆
    0
  • 取消回覆