資料庫的分區、分表、分庫、分片的簡介

来源:https://www.cnblogs.com/XT666-666/archive/2019/03/21/10571700.html
-Advertisement-
Play Games

分區的概念 數據分區是一種物理資料庫的設計技術,它的目的是為了在特定的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性能提高
    • 讀寫鎖影響的數據量變小
    • 插入資料庫需要重新建立索引的數據減少
      • 什麼是分片


        簡單來說,就是指通過某種特定的條件,將我們存放在同一個資料庫中的數據分散存放到多個資料庫(主機)上面,以達到分散單台設備負載的效果。
        數據的切分(Sharding)根據其切分規則的類型,可以分為兩種切分模式。

        (1)一種是按照不同的表(或者Schema)來切分到不同的資料庫(主機)之上,這種切分可以稱之為數據的垂直(縱向)切分


        (2)另外一種則是根據表中的數據的邏輯關係,將同一個表中的數據按照某種條件拆分到多台資料庫(主機)上面,這種切分稱之為數據的水平(橫向)切分。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 企業數據資產 有了大數據的光環,有了從數據中挖掘商業價值的方法和工具之後,那些原本存放在伺服器上平淡無奇的陳年舊數一夜之間身價倍增。按照世界經濟論壇報告的看法,“大數據為新財富,價值堪比石油"。《大數據時代》一書的作者維克托則樂觀地預測,數據列人企業資產負債表只是時間問題。 本質上,任何企業在生產活 ...
  • 一. 表關係 1. 創建如下表,並創建相關約束. # 創建班級表 create table class ( cid int primary key not null auto_increment, caption varchar(20) not null ); # 創建老師表 create tabl ...
  • 一.表約束 1.非空約束:not null 作用:定義表的某一列不能為空。 2.唯一約束:uniqe key 作用:確定某一列不能存在相同的值。 3.主鍵約束:primay key 作用:列中唯一標識一條數據,每張表裡面只能有一個主鍵;主要是幫助MYSQL更快的查找某一條信息。 特征:非空並唯一,當 ...
  • [20190321]smem的顯示缺陷.txt1.smem 加入-m參數顯示存在缺陷,map的信息不全:# smem -tk -m -U oracle -P "oraclepeis|ora_"Map PIDs AVGPSS PSS/u01/app/oracle/product/10.2.0/db_1 ...
  • (註:第一次寫,如有錯誤之處,希望指出,不勝感激,謝謝,不喜也勿噴) 一.MYSQL簡單描述 1.MYSQL是什麼? MYSQL是現在最流行的關係型資料庫管理系統之一; MYSQL是開源軟體; MYSQL是現在最流行的關係型資料庫管理系統之一; MYSQL是開源軟體; 關係型資料庫? 註:所謂關係型 ...
  • 最近加入一個Spark項目,作為臨時的開發人員協助進行開發工作。該項目中不存在測試的概念,開發人員按需求進行編碼工作後,直接向生產系統部署,再由需求的提出者在生產系統檢驗程式運行結果的正確性。在這種原始的工作方式下,產品經理和開發人員總是在生產系統驗證自己的需求、代碼。可以想見,各種直接交給用戶的錯 ...
  • 創建方式一: create [public] database link link名稱 connect to 對方資料庫用戶identified by 對方資料庫用戶密碼 using '對方資料庫ip:埠/服務名'; 創建方式二: create [public] database link lin ...
  • 正文 Oracle Data Pump(以下簡稱數據泵)是Oracle 10g開始提供的一種數據遷移工具,同時也被廣大DBA用來作為資料庫的邏輯備份工具和體量較小的數據遷移工具。與傳統的數據導出/導入工具,即 exp/imp 工具相比,數據泵更為高效和安全,數據泵主要包含以下三個部分: 1. 操作系 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...