Postgresql 9.1.24 Tài kèo bóng đá pháp | ||||
---|---|---|---|---|
prev | UP | Chương 5. | NEXT |
PostgreSQLHỗ trợ cơ bản
kèo bóng đá pháp đề cập đến việc chia những gì một cách logic một cách hợp lý
Hiệu suất truy vấn có thể được cải thiện đáng kể trong
Khi truy vấn hoặc cập nhật truy cập một tỷ lệ phần trăm lớn của a
Tải và xóa số lượng lớn có thể được thực hiện bằng cách thêm hoặc thêmthay đổi bảng sốvàBẢNG DROPlàVACUUMChi phíXóa.
Dữ kèo bóng đá pháp hiếm khi được sử dụng có thể được di chuyển sang rẻ hơn và chậm hơn
Những lợi ích thường sẽ chỉ có giá trị khi một bảng
Hiện tại,PostgreSQLHỗ trợ kèo bóng đá pháp qua kế thừa bảng. Mỗi kèo bóng đá phápPhần 5.8)
Các hình thức kèo bóng đá pháp sau đây có thể được thực hiện trongPostgreSQL:
Bảng được kèo bóng đá pháp thành"Phạm vi"Được xác định bởi một cột khóa hoặc bộ của
Bảng được kèo bóng đá pháp bằng cách liệt kê rõ ràng
Để thiết lập bảng được kèo bóng đá pháp, làm như sau:
Tạo"Master"Bảng,
Bảng này sẽ không chứa dữ kèo bóng đá pháp. Không xác định bất kỳ séc nào
Tạo một số"Child"Bảng
Chúng tôi sẽ gọi các bảng con là kèo bóng đá phápPostgreSQLBảng.
Thêm các ràng buộc bảng vào các bảng kèo bóng đá pháp để xác định
Ví dụ điển hình sẽ là:
Kiểm tra (x = 1)
Đảm bảo rằng các ràng buộc đảm bảo rằng không có
Kiểm tra (Outletid từ 100 đến 200)
Điều này là sai vì không rõ kèo bóng đá pháp nào
Lưu ý rằng không có sự khác biệt về cú pháp giữa phạm vi
Đối với mỗi kèo bóng đá pháp, hãy tạo một chỉ mục trên khóa
Tùy chọn, xác định trình kích hoạt hoặc quy tắc để chuyển hướng dữ kèo bóng đá pháp
Đảm bảo rằnginstraint_exclusionTham số cấu hình không bị vô hiệu hóa trongPostgreSql.conf. Nếu có, các truy vấn sẽ không
Ví dụ: giả sử chúng ta đang xây dựng cơ sở dữ kèo bóng đá pháp cho a
Tạo phép đo bảng (
Chúng tôi biết rằng hầu hết các truy vấn sẽ truy cập chỉ vào tuần trước,
Trong tình huống này, chúng ta có thể sử dụng kèo bóng đá pháp để giúp chúng ta gặp gỡ
Bảng chính làĐo lườngbảng, được khai báo chính xác là
Tiếp theo chúng tôi tạo một kèo bóng đá pháp cho mỗi tháng hoạt động:
Tạo bảng đo_Y2006M02 () kế thừa (Đo lường);
Mỗi kèo bóng đá pháp là các bảng hoàn chỉnhĐo lườngBảng.
Điều này giải quyết một trong những vấn đề của chúng tôi: xóa dữ kèo bóng đá pháp cũ. MỗiBẢNG DROPtrên bàn trẻ nhất và
Chúng tôi phải cung cấp các ràng buộc bảng không chồng chéo.
Tạo bảng đo_Y2006M02 (
Có lẽ chúng ta cũng cần các chỉ mục trên các cột chính:
19381_19773
Chúng tôi chọn không thêm các chỉ mục khác vào thời điểm này.
Chúng tôi muốn ứng dụng của chúng tôi có thể nóiChèn vào đo ...và có
Tạo hoặc thay thế chức năng Đo_insert_trigger ()
Sau khi tạo chức năng, chúng tôi tạo một trình kích hoạt
Tạo Trigger Insert_Meas mua sắm_Trigger
Chúng ta phải xác định lại chức năng kích hoạt mỗi tháng để
Chúng tôi có thể muốn chèn dữ kèo bóng đá pháp và có máy chủ
Tạo hoặc thay thế chức năng đo lường_insert_trigger ()
Định nghĩa kích hoạt giống như trước đây. Lưu ý rằngnếuKiểm tra phải khớp chính xác với nhauKiểm traràng buộc cho nó
Trong khi hàm này phức tạp hơn
Lưu ý:Trong thực tế, tốt nhất là kiểm tra
Như chúng ta có thể thấy, một sơ đồ kèo bóng đá pháp phức tạp có thể yêu cầu một
Thông thường tập hợp các kèo bóng đá pháp được thiết lập khi ban đầu
Tùy chọn đơn giản nhất để xóa dữ kèo bóng đá pháp cũ chỉ đơn giản là bỏ rơi
23930_23966
Điều này có thể nhanh chóng xóa hàng triệu bản ghi vì nó
một tùy chọn khác thường thích hơn là loại bỏ
thay đổi bảng đo_Y2006M02 Không có phép đo kế thừa;
Điều này cho phép các hoạt động tiếp theo được thực hiện trên dữ kèo bóng đá phápCopy, pg_dumphoặc các công cụ tương tự. Nó
Tương tự chúng ta có thể thêm một kèo bóng đá pháp mới để xử lý dữ liệu mới. Chúng tôi
Tạo bảng đo_Y2008M02 (
Thay thế, đôi khi thuận tiện hơn để tạo
Tạo bảng đo_Y2008M02
Loại trừ ràng buộclà một truy vấn
Đặt ràng buộc_exclusion = ON;
Không loại trừ ràng buộc, truy vấn ở trên sẽ quétĐo lườngBảng. Với sự loại trừ ràng buộcWHEREmệnh đề. Khi người lập kế hoạch
Bạn có thể sử dụngGiải thíchLệnh đếninstraint_exclusiontrên và một kế hoạch với nó.
Đặt ràng buộc_exclusion = TẮT;
Một số hoặc tất cả các kèo bóng đá pháp có thể sử dụng quét chỉ mục thay thế
Đặt ràng buộc_exclusion = ON;
Lưu ý rằng loại trừ ràng buộc chỉ được điều khiển bởiKiểm traCác ràng buộc, không phải bởi sự hiện diện của
Cài đặt mặc định (và được đề xuất) củaurdaint_exclusionthực sự cũng khôngtrêncũng khôngTẮT, nhưng một cài đặt trung gian được gọi làkèo bóng đá pháp, gây ra kỹ thuậttrênCài đặtKiểm traCác ràng buộc trong tất cả các truy vấn, ngay cả những câu hỏi đơn giản không thể xảy ra
Một cách tiếp cận khác để chuyển hướng chèn vào
Tạo Quy tắc Đo_insert_y2006m02 AS
một quy tắc có chi phí cao hơn đáng kể so với kích hoạt, nhưng
lưu ý rằngCopyBỏ qua các quy tắc.Copyđể chènCopykhông
Một nhược điểm khác của phương pháp quy tắc là có
kèo bóng đá pháp cũng có thể được sắp xếp bằng cách sử dụngLiên minh tất cảXem, thay vì kế thừa bảng.
Tạo phép đo xem là
Tuy nhiên, sự cần thiết phải tạo lại chế độ xem thêm một bước bổ sung để
Các cảnh báo sau đây áp dụng cho các bảng được kèo bóng đá pháp:
Không có cách tự động nào để xác minh rằng tất cả cácKiểm traCác ràng buộc là lẫn nhau
Các sơ đồ được hiển thị ở đây giả sử rằng khóa kèo bóng đá phápCập nhậtĐiều đó cố gắng làm điều đóKiểm traràng buộc. Nếu bạn cần xử lý những trường hợp như vậy, bạn có thể đặt
Nếu bạn đang sử dụng thủ côngVACUUMhoặckèo bóng đá pháp tíchCác lệnh, đừng quên
kèo bóng đá pháp tích đo lường;
Sẽ chỉ xử lý bảng chính.
Các cảnh báo sau đây áp dụng cho loại trừ ràng buộc:
Loại trừ ràng buộc chỉ hoạt động khi truy vấnWHEREmệnh đề chứa hằng số. MỘT"ổn định"Các chức năng nhưcurrent_date
phải tránh.
Giữ cho các ràng buộc kèo bóng đá pháp đơn giản, khác là
Tất cả các ràng buộc trên tất cả các kèo bóng đá pháp của bảng chính