2009-10-16 35 views
46

Tôi đã đọc tài liệu (http://dev.mysql.com/doc/refman/5.1/en/partitioning.html), nhưng tôi muốn, theo cách của bạn, nó là gì và tại sao nó được sử dụng.Phân vùng MYSQL là gì?

  1. Chủ yếu được sử dụng cho nhiều máy chủ để nó không kéo xuống một máy chủ?
  2. Vì vậy, một phần dữ liệu sẽ nằm trên máy chủ1 và một phần dữ liệu sẽ nằm trên máy chủ2. Và máy chủ 3 sẽ "điểm" đến server1 hoặc server2 ... là nó hoạt động như thế nào?
  3. Tại sao tài liệu MYSQL tập trung vào phân vùng trong cùng một máy chủ ... nếu mục đích là để lây lan trên các máy chủ?

Trả lời

122

Ý tưởng đằng sau phân vùng không sử dụng nhiều máy chủ nhưng để sử dụng nhiều bảng thay vì một bảng. Bạn có thể chia bảng thành nhiều bảng để bạn có thể có dữ liệu cũ trong một bảng phụ và dữ liệu mới trong một bảng khác. Sau đó, cơ sở dữ liệu có thể tối ưu hóa các truy vấn mà bạn yêu cầu dữ liệu mới biết rằng chúng nằm trong bảng thứ hai. Hơn nữa, bạn xác định cách phân chia dữ liệu.

dụ đơn giản từ the MySQL Documentation:

CREATE TABLE employees (
    id INT NOT NULL, 
    fname VARCHAR(30), 
    lname VARCHAR(30), 
    hired DATE NOT NULL DEFAULT '1970-01-01', 
    separated DATE NOT NULL DEFAULT '9999-12-31', 
    job_code INT, 
    store_id INT 
) 
PARTITION BY RANGE (YEAR(separated)) (
    PARTITION p0 VALUES LESS THAN (1991), 
    PARTITION p1 VALUES LESS THAN (1996), 
    PARTITION p2 VALUES LESS THAN (2001), 
    PARTITION p3 VALUES LESS THAN MAXVALUE 
); 

Điều này cho phép tăng tốc độ ví dụ:

  1. Thả dữ liệu cũ bằng cách đơn giản:

    ALTER TABLE employees DROP PARTITION p0; 
    
  2. Cơ sở dữ liệu có thể tăng tốc độ truy vấn như thế này:

    SELECT COUNT(*) 
    FROM employees 
    WHERE separated BETWEEN '2000-01-01' AND '2000-12-31' 
    GROUP BY store_id; 
    

Biết rằng tất cả dữ liệu chỉ được lưu trữ trên phân vùng p2.

+2

# 2 được gọi là "cắt tỉa" – longneck

+17

Đây là giải thích tốt nhất về phân vùng trên internet. –

Các vấn đề liên quan