分區的概念 數據分區是一種物理資料庫的設計技術,它的目的是為了在特定的SQL操作中減少數據讀寫的總量以縮減響應時間。 分區並不是生成新的數據表,而是將表的數據均衡分攤到不同的硬碟,系統或是不同伺服器存儲介子中,實際上還是一張表。另外,分區可以做到將表的數據均衡到不同的地方,提高數據檢索的效率,降低數 ...
分區的概念
數據分區是一種物理資料庫的設計技術,它的目的是為了在特定的SQL操作中減少數據讀寫的總量以縮減響應時間。
分區並不是生成新的數據表,而是將表的數據均衡分攤到不同的硬碟,系統或是不同伺服器存儲介子中,實際上還是一張表。另外,分區可以做到將表的數據均衡到不同的地方,提高數據檢索的效率,降低資料庫的頻繁IO壓力值,分區的優點如下:
1、相對於單個文件系統或是硬碟,分區可以存儲更多的數據;
2、數據管理比較方便,比如要清理或廢棄某年的數據,就可以直接刪除該日期的分區數據即可;
3、精准定位分區查詢數據,不需要全表掃描查詢,大大提高數據檢索效率;
4、可跨多個分區磁碟查詢,來提高查詢的吞吐量;
5、在涉及聚合函數查詢時,可以很容易進行數據的合併;
一、什麼是分區、分表、分庫
分區
就是把一張表的數據分成N個區塊,在邏輯上看最終只是一張表,但底層是由N個物理區塊組成的
1、水平分區
這種形式分區是對錶的行進行分區,通過這樣的方式不同分組裡面的物理列分割的數據集得以組合,從而進行個體分割(單分區)或集體分割(1個或多個分區)。所有在表中定義的列在每個數據集中都能找到,所以表的特性依然得以保持。2、垂直分區
這種分區方式一般來說是通過對錶的垂直劃分來減少目標表的寬度,使某些特定的列被劃分到特定的分區,每個分區都包含了其中的列所對應的行。 舉個簡單例子:一個包含了大text和BLOB列的表,這些text和BLOB列又不經常被訪問,這時候就要把這些不經常使用的text和BLOB了劃分到另一個分區,在保證它們數據相關性的同時還能提高訪問速度。 在資料庫供應商開始在他們的資料庫引擎中建立分區(主要是水平分區)時,DBA和建模者必須設計好表的物理分區結構,不要保存冗餘的數據(不同表中同時都包含父表中的數據)或相互聯結成一個邏輯父對象(通常是視圖)。這種做法會使水平分區的大部分功能失效,有時候也會對垂直分區產生影響。
分表
就是把一張表按一定的規則分解成N個具有獨立存儲空間的實體表。系統讀寫時需要根據定義好的規則得到對應的字表明,然後操作它。
分庫
一旦分表,一個庫中的表會越來越多
什麼時候考慮使用分區?
-
一張表的查詢速度已經慢到影響使用的時候。
-
sql經過優化
-
數據量大
- 表中的數據是分段的
-
對數據的操作往往只涉及一部分數據,而不是所有的數據
-
分區解決的問題
主要可以提升查詢效率
-
什麼時候考慮分表?
-
一張表的查詢速度已經慢到影響使用的時候。
-
sql經過優化
- 數據量大
-
當頻繁插入或者聯合查詢時,速度變慢
分表解決的問題
分表後,單表的併發能力提高了,磁碟I/O性能也提高了,寫操作效率提高了
- 查詢一次的時間短了
- 數據分佈在不同的文件,磁碟I/O性能提高
- 讀寫鎖影響的數據量變小
- 插入資料庫需要重新建立索引的數據減少
-