weblab-tw / ddia-study-group

Designing Data-Intensive Applications Study Group
36 stars 5 forks source link

分區和分表的效能差異 #71

Open AK4codee opened 2 years ago

AK4codee commented 2 years ago

不管是分區還是分表,應用情境都是在單表太大的前提下去使用,我翻別的資料看到下面這段敘述

分表分區的差異: 分表 : 分表後,應用層需要修改 sql 操作位置,指定到對應的分表上。 分區 : 分區後,應用層『 不 』需要修改 sql 操作位置,資料庫層會自動幫你處理。

要用分區還是分表? 首先這兩個沒有互相排斥,兩個可以一起使用,但如果是要先選一個來用的話,要選那個呢 ? 目前我是覺得『 分區 』比較簡單實現,但是它在使用上會比較需要『 使用者 』注意,一個用不好,性能反而會下降。 而『 分表 』某些方面來說彈性較大,可以做的業務較多,但相對的除非有一個很完美的中間件團隊,不然坑如果直接各別讓『 使用者 』直接用資料庫,會天下大亂的。

本周的文章好像大多篇幅是在講分區,不曉得什麼樣的情境需要用分表 / 分區?查詢或讀寫上的效能差異會很大嗎?

kylemocode commented 2 years ago

問題的 title 格式之後再注意一下喔~

Parkerhiphop commented 2 years ago

分區是 DB 的東西,分表是 Application 的東西。 概念一樣都是切分資料,但做的人不一樣,看是底層搞 DB 的人去做,還是 Backend 去做。

分表就是直接再開一個 Table,可能把一些較舊或過多的資料倒過去。 分表的風險挺高。 但其實通常就是花錢升級機器,最不容易出問題。 或是分時間,要找很舊的就花時間 Query,讓使用者等。(因為東西可能已經不知道備份到哪去) (銀行的例子,要找很舊的資料,無法在網銀查,要直接去櫃檯)

讀這本書之前,可能平常都不會碰到 分區, DB 底層會把我們處裡,我們就是下一樣的 SQL。

本書大部分的東西都在解釋底層,平常開發業務時就是照著 SQL 下。