首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

理解 MySQL 並行資料庫架構與分區技術:Shared-Nothing、I/O 平行、水平切分

     編輯:MySQL 資料庫相關知識

並行資料庫三大架構

架構共享資源擴展性代表產品
Shared Memory記憶體、磁碟≤ 32-64 CPU (總線瓶頸)早期 SMP 資料庫
Shared Disk磁碟 (各自記憶體)中等 (磁碟連接瓶頸)Oracle RAC, DEC/Rdb Cluster
Shared Nothing無 (各節點獨立 CPU/記憶體/磁碟)近線性擴展Teradata, MySQL NDB Cluster

MySQL NDB Cluster:Shared Nothing 實作

  • 每個 Data Node 獨立儲存資料分片
  • Management Node 協調叢集狀態
  • SQL Node (mysqld) 接收查詢、解析、下推至 Data Node
  • 自動資料分片、複製、故障轉移
  • 適用:高可用、高寫入、電信級應用

I/O 平行化與水平分區

三大劃分技術

技術原理優點缺點
Round-robin循環分配列到 N 個磁碟分布均勻、順序掃描快點查詢/範圍查詢需全磺掃描
Hash Partition雜湊(分區鍵) % N點查詢極快 (定位單磁碟)範圍查詢需全磁碟、熱點風險
Range Partition依數值範圍劃分範圍查詢/順序掃描優、易管理資料傾斜 (熱分區)

MySQL 5.1+ 原生分區

CREATE TABLE sales (
    id INT NOT NULL,
    sale_date DATE NOT NULL,
    amount DECIMAL(10,2)
)
PARTITION BY RANGE (YEAR(sale_date)) (
    PARTITION p2020 VALUES LESS THAN (2021),
    PARTITION p2021 VALUES LESS THAN (2022),
    PARTITION p2022 VALUES LESS THAN (2023),
    PARTITION pmax VALUES LESS THAN MAXVALUE
);

分區優勢

  • 分區裁剪:查詢僅掃描相關分區
  • 獨立維護:ALTER TABLE ... DROP PARTITION 秒級歸檔
  • 分散儲存:各分區可指定不同磁碟 (DATA DIRECTORY)
  • 平行查詢:多執行緒掃描多個分區 (需參數啟用)

分區限制

  • 分區鍵必須為主鍵/唯一鍵一部分
  • 外鍵不支援
  • 最大 8192 個分區 (5.6+)
  • 所有分區同引擎

生產選型建議

  1. 時間序列資料 (日誌、交易) → RANGE 分區,按月/年劃分
  2. 高基數 ID/雜湊分布 → HASH 分區,均勻負載
  3. 多租戶隔離 → LIST 分區,按 tenant_id
  4. 超大表 (TB 級) → 考慮 ShardingSphere/ProxySQL 分庫分表 或 ClickHouse/Doris OLAP 引擎
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved