PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

cách tốt để phân đoạn ngang trong postgresql là gì

PostgreSQL cho phép phân vùng theo hai cách khác nhau. Một là theo phạm vi và khác là theo danh sách. Cả hai đều sử dụng kế thừa bảng để thực hiện phân vùng.
Phân vùng theo phạm vi, thường là phạm vi ngày, là phổ biến nhất, nhưng phân vùng theo danh sách có thể hữu ích nếu các biến của phân vùng là tĩnh và không bị lệch.

Việc phân vùng được thực hiện với tính năng kế thừa bảng nên việc đầu tiên cần làm là thiết lập các bảng con mới.

CREATE TABLE measurement (
    x        int not null,
    y        date not null,
    z        int
);

CREATE TABLE measurement_y2006 ( 
    CHECK ( logdate >= DATE '2006-01-01' AND logdate < DATE '2007-01-01' )
) INHERITS (measurement);

CREATE TABLE measurement_y2007 (
    CHECK ( logdate >= DATE '2007-01-01' AND logdate < DATE '2008-01-01' ) 
) INHERITS (measurement);

Sau đó, quy tắc hoặc trình kích hoạt cần được sử dụng để đưa dữ liệu vào các bảng chính xác. Quy tắc nhanh hơn khi cập nhật hàng loạt, kích hoạt trên các bản cập nhật đơn lẻ cũng như dễ bảo trì hơn. Đây là một trình kích hoạt mẫu.

CREATE TRIGGER insert_measurement_trigger
    BEFORE INSERT ON measurement
    FOR EACH ROW EXECUTE PROCEDURE measurement_insert_trigger();

và chức năng kích hoạt để thực hiện việc chèn

CREATE OR REPLACE FUNCTION measurement_insert_trigger()
RETURNS TRIGGER AS $$
BEGIN
    IF ( NEW.logdate >= DATE '2006-01-01' 
         AND NEW.logdate < DATE '2007-01-01' ) THEN
        INSERT INTO measurement_y2006 VALUES (NEW.*);
    ELSIF ( NEW.logdate >= DATE '2007-01-01' 
            AND NEW.logdate < DATE '2008-01-01' ) THEN
        INSERT INTO measurement_y2006m03 VALUES (NEW.*);
    ELSE
        RAISE EXCEPTION 'Date out of range.';
    END IF;
    RETURN NULL;
END;
$$
LANGUAGE plpgsql;

Những ví dụ này là phiên bản đơn giản hóa của tài liệu postgresql để dễ đọc hơn.

Tôi không quen thuộc với pgpool2, nhưng gridsql là một sản phẩm thương mại được thiết kế cho EnterpriseDB, một cơ sở dữ liệu thương mại được xây dựng trên postgresql. Sản phẩm của họ rất tốt, nhưng tôi không nghĩ rằng nó sẽ hoạt động trên postgresl tiêu chuẩn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thứ tự mảng_agg PostgreSQL

  2. Các hàm toán học PostgreSQL

  3. PostgreSQL tương đương với Oracle thu thập số lượng lớn

  4. Chuyển dự án Django từ backend sqlite3 sang postgresql bị lỗi khi tải datadump

  5. Làm thế nào để loại bỏ cơ sở dữ liệu PostgreSQL nếu có các kết nối đang hoạt động với nó?