PostgreSQLHỗ trợ kèo bóng đá euro bảng cơ bản. Phần này mô tả lý do và cách thực hiện kèo bóng đá euro như một phần của thiết kế cơ sở dữ liệu của bạn.
kèo bóng đá euro đề cập đến việc chia những gì một cách logic một bảng lớn thành các mảnh vật lý nhỏ hơn. kèo bóng đá euro có thể cung cấp một số lợi ích:
Hiệu suất truy vấn có thể được cải thiện đáng kể trong một số tình huống nhất định, đặc biệt khi hầu hết các hàng truy cập nhiều của bảng nằm trong một kèo bóng đá euro hoặc một số lượng nhỏ các kèo bóng đá euro. kèo bóng đá euro thay thế hiệu quả cho các cấp độ trên của các chỉ mục, khiến cho nhiều khả năng các phần được sử dụng nhiều của các chỉ mục phù hợp với bộ nhớ.
Khi các truy vấn hoặc cập nhật truy cập một tỷ lệ phần trăm lớn của một kèo bóng đá euro, hiệu suất có thể được cải thiện bằng cách sử dụng quét tuần tự kèo bóng đá euro đó thay vì sử dụng chỉ mục, điều này sẽ yêu cầu đọc truy cập ngẫu nhiên phân tán trên toàn bộ bảng.
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 loại bỏ các kèo bóng đá euro, nếu mẫu sử dụng được tính trong thiết kế kèo bóng đá euro. Bỏ một kèo bóng đá euro riêng lẻ bằng cách sử dụngBẢNG DROP
hoặc làmThay đổi kèo bóng đá euro tách bảng
, nhanh hơn nhiều so với hoạt động hàng loạt. Các lệnh này cũng hoàn toàn tránhVacuum
Chi phí gây ra bởi một số lượng lớnXóa
.
Dữ liệu hiếm khi được sử dụng có thể được di chuyển sang phương tiện lưu trữ rẻ hơn và chậm hơn.
Những lợi ích này thường chỉ có giá trị khi một bảng sẽ rất lớn. Điểm chính xác mà bảng sẽ được hưởng lợi từ việc kèo bóng đá euro phụ thuộc vào ứng dụng, mặc dù quy tắc ngón tay cái là kích thước của bảng phải vượt quá bộ nhớ vật lý của máy chủ cơ sở dữ liệu.
PostgreSQLcung cấp hỗ trợ tích hợp cho các hình thức kèo bóng đá euro sau:
Bảng được kèo bóng đá euro thànhHồiPhạm viĐược xác định bởi một cột hoặc tập hợp các cột, không có sự chồng chéo giữa các phạm vi của các giá trị được gán cho các kèo bóng đá euro khác nhau. Ví dụ, người ta có thể kèo bóng đá euro theo phạm vi ngày hoặc theo phạm vi định danh cho các đối tượng kinh doanh cụ thể.1
đến10
và phạm vi của một người tiếp theo là từ10
đến20
, sau đó giá trị10
thuộc về kèo bóng đá euro thứ hai không phải là thứ nhất.
Bảng được kèo bóng đá euro bằng cách liệt kê rõ ràng (các) giá trị khóa xuất hiện trong mỗi kèo bóng đá euro.
Bảng được kèo bóng đá euro bằng cách chỉ định mô đun và phần còn lại cho mỗi kèo bóng đá euro. Mỗi kèo bóng đá euro sẽ giữ các hàng mà giá trị băm của khóa kèo bóng đá euro chia cho mô đun được chỉ định sẽ tạo ra phần còn lại được chỉ định.
Nếu ứng dụng của bạn cần sử dụng các hình thức kèo bóng đá euro khác không được liệt kê ở trên, các phương pháp thay thế như kế thừa vàLiên minh tất cả
có thể sử dụng chế độ xem. Các phương pháp như vậy mang lại sự linh hoạt nhưng không có một số lợi ích hiệu suất của kèo bóng đá euro khai báo tích hợp.
PostgreSQLCho phép bạn tuyên bố rằng một bảng được chia thành các kèo bóng đá euro. Bảng được chia được gọi làBảng kèo bóng đá euro. Tuyên bố bao gồmPhương pháp kèo bóng đá euroNhư được mô tả ở trên, cộng với danh sách các cột hoặc biểu thức được sử dụng làmPhím kèo bóng đá euro.
Bản thân bảng được kèo bóng đá euro làảoHồikèo bóng đá euro không có lưu trữ của riêng mình. Thay vào đó, bộ nhớ thuộc vềkèo bóng đá euro, là các bảng khác thường được liên kết với bảng được kèo bóng đá euro. Mỗi kèo bóng đá euro lưu trữ một tập hợp con của dữ liệu được xác định bởigiới hạn kèo bóng đá euro. Tất cả các hàng được chèn vào một bảng được kèo bóng đá euro sẽ được chuyển đến một trong các kèo bóng đá euro thích hợp dựa trên các giá trị của (các) cột khóa kèo bóng đá euro.
kèo bóng đá euro có thể được định nghĩa là các bảng được kèo bóng đá euro, dẫn đếnSub-Partitioning. Mặc dù tất cả các kèo bóng đá euro phải có cùng một cột với cha mẹ được kèo bóng đá euro của chúng, các kèo bóng đá euro có thể có các chỉ mục, ràng buộc và giá trị mặc định riêng của chúng, khác với các kèo bóng đá euro khác.Tạo kèo bóng đá euroĐể biết thêm chi tiết về việc tạo các bảng và kèo bóng đá euro được kèo bóng đá euro.
Không thể biến bảng thông thường thành bảng được kèo bóng đá euro hoặc ngược lại. Tuy nhiên, có thể thêm một bảng được kèo bóng đá euro hoặc thông thường hiện có dưới dạng kèo bóng đá euro của bảng được kèo bóng đá euro hoặc xóa kèo bóng đá euro khỏi bảng được kèo bóng đá euro biến nó thành một bảng độc lập;kèo bóng đá euro thay đổiĐể tìm hiểu thêm vềĐính kèm kèo bóng đá euro
vàkèo bóng đá euro tách
phụ.
kèo bóng đá euro cũng có thể làPostgresql: Tài liệu: 13: 5, mặc dù cần sự chăm sóc đáng kể vì sau đó, trách nhiệm của người dùng là nội dung của Bàn nước ngoài đáp ứng quy tắc kèo bóng đá euro. Có một số hạn chế khác là tốt.Tạo kèo bóng đá euro nước ngoàiĐể biết thêm thông tin.
Giả sử chúng ta đang xây dựng một cơ sở dữ liệu cho một công ty kem lớn. Công ty đo nhiệt độ cực đại mỗi ngày cũng như doanh số bán kem ở mỗi khu vực.
Tạo phép đo kèo bóng đá euro (
Chúng tôi biết rằng hầu hết các truy vấn sẽ truy cập chỉ vào dữ liệu của tháng, tháng hoặc quý, vì việc sử dụng chính kèo bóng đá euro này sẽ là chuẩn bị các báo cáo trực tuyến để quản lý. Để giảm lượng dữ liệu cũ cần được lưu trữ, chúng tôi quyết định chỉ giữ dữ liệu trị giá 3 năm gần đây nhất.
Để sử dụng kèo bóng đá euro khai báo trong trường hợp này, sử dụng các bước sau:
TạoĐo lường
Bảng dưới dạng bảng được kèo bóng đá euro bằng cách chỉ địnhkèo bóng đá euro bởi
mệnh đề, bao gồm phương thức kèo bóng đá euro (phạm vi
Trong trường hợp này) và danh sách (các) cột để sử dụng làm khóa kèo bóng đá euro.
Tạo phép đo kèo bóng đá euro (
Tạo kèo bóng đá euro. Định nghĩa của mỗi kèo bóng đá euro phải chỉ định các giới hạn tương ứng với phương thức kèo bóng đá euro và khóa kèo bóng đá euro của cha mẹ.
Các kèo bóng đá euro do đó được tạo ra theo mọi cách bình thườngPostgreSQLBảng (hoặc, có thể, các bảng nước ngoài). Có thể chỉ định một không gian bảng và tham số lưu trữ cho từng kèo bóng đá euro.
Ví dụ của chúng tôi, mỗi kèo bóng đá euro phải chứa dữ liệu giá trị một tháng, để phù hợp với yêu cầu xóa dữ liệu một tháng tại một thời điểm. Vì vậy, các lệnh có thể trông giống như:
Tạo bảng đo_Y2006M02 kèo bóng đá euro đo lường
(Nhớ lại rằng các kèo bóng đá euro liền kề có thể chia sẻ một giá trị ràng buộc, vì các giới hạn trên phạm vi được coi là giới hạn độc quyền.)
Nếu bạn muốn thực hiện kèo bóng đá euro phụ, một lần nữa chỉ địnhkèo bóng đá euro bởi
mệnh đề trong các lệnh được sử dụng để tạo các kèo bóng đá euro riêng lẻ, ví dụ:
Tạo bảng đo_Y2006M02 kèo bóng đá euro đo lường
Sau khi tạo các kèo bóng đá euro củaĐo lường_Y2006M02
, bất kỳ dữ liệu nào được chèn vàoĐo lường
được ánh xạ tớiĐo lường_Y2006M02
(hoặc dữ liệu được chèn trực tiếp vàoĐo lường_Y2006M02
, được phép với điều kiện ràng buộc kèo bóng đá euro của nó được thỏa mãn) sẽ được chuyển hướng thêm đến một trong các kèo bóng đá euro của nó dựa trênPEAKTEMP
Cột. Khóa kèo bóng đá euro được chỉ định có thể trùng với khóa kèo bóng đá euro của cha mẹ, mặc dù cần cẩn thận khi chỉ định giới hạn của một phần phụ sao cho tập hợp dữ liệu mà nó chấp nhận cấu thành một tập hợp con về giới hạn của chính kèo bóng đá euro cho phép;
Chèn dữ liệu vào bảng cha không ánh xạ tới một trong các kèo bóng đá euro hiện có sẽ gây ra lỗi; một kèo bóng đá euro thích hợp phải được thêm thủ công.
Không cần thiết phải tạo các ràng buộc bảng theo cách thủ công mô tả các điều kiện biên kèo bóng đá euro cho các kèo bóng đá euro. Những ràng buộc như vậy sẽ được tạo tự động.
Tạo một chỉ mục trên (các) cột chính, cũng như bất kỳ chỉ mục nào khác mà bạn có thể muốn, trên bảng được kèo bóng đá euro. .Mạnhảogiống như cách mà bảng được kèo bóng đá euro là: dữ liệu thực tế có trong các chỉ mục con trên các bảng kèo bóng đá euro riêng lẻ.
Tạo chỉ mục về đo lường (logdate);
Đảm bảo rằngenable_partition_pruningTham 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 được tối ưu hóa như mong muốn.
Trong ví dụ trên, chúng tôi sẽ tạo một kèo bóng đá euro mới mỗi tháng, do đó có thể là khôn ngoan khi viết một tập lệnh tạo DDL cần thiết tự động.
Thông thường tập hợp các kèo bóng đá euro được thiết lập khi xác định ban đầu bảng không nhằm mục đích tĩnh. Người ta thường muốn loại bỏ các kèo bóng đá euro giữ dữ liệu cũ và định kỳ thêm các kèo bóng đá euro mới cho dữ liệu mới.
Tùy chọn đơn giản nhất để xóa dữ liệu cũ là bỏ kèo bóng đá euro không còn cần thiết nữa:
25098_25134
Điều này có thể nhanh chóng xóa hàng triệu bản ghi vì nó không phải xóa riêng mọi bản ghi. Tuy nhiên, lưu ý rằng lệnh trên yêu cầu lấyAccess Exclusive
khóa trên kèo bóng đá euro cha.
25398_25546
Thay đổi phép đo bảng kèo bóng đá euro phân vùng_Y2006M02;
Điều này cho phép các hoạt động tiếp theo được thực hiện trên dữ liệu trước khi nó bị loại bỏ. Ví dụ: đây thường là thời gian hữu ích để sao lưu dữ liệu bằng cách sử dụngCopy
,pg_dumphoặc các công cụ tương tự. Nó cũng có thể là một thời gian hữu ích để tổng hợp dữ liệu thành các định dạng nhỏ hơn, thực hiện các thao tác dữ liệu khác hoặc chạy báo cáo.
Tương tự chúng ta có thể thêm một kèo bóng đá euro mới để xử lý dữ liệu mới. Chúng ta có thể tạo một kèo bóng đá euro trống trong bảng được kèo bóng đá euro giống như các kèo bóng đá euro ban đầu đã được tạo ở trên:
Tạo bảng đo_Y2008M02 kèo bóng đá euro đo lường
Thay thế, đôi khi thuận tiện hơn để tạo bảng mới bên ngoài cấu trúc kèo bóng đá euro và biến nó thành một kèo bóng đá euro thích hợp sau. Điều này cho phép dữ liệu mới được tải, kiểm tra và chuyển đổi trước khi nó xuất hiện trong bảng được kèo bóng đá euro.Tạo kèo bóng đá euro ... giống như
Tùy chọn rất hữu ích để tránh lặp lại định nghĩa của kèo bóng đá euro cha mẹ:
Tạo kèo bóng đá euro đo_Y2008M02
TheĐính kèm kèo bóng đá euro
Lệnh yêu cầu lấy ACập nhật chia sẻ độc quyền
Khóa trên bảng được kèo bóng đá euro.
Trước khi chạyĐính kèm kèo bóng đá euro
lệnh, nên tạo mộtKiểm tra
ràng buộc trên bảng được đính kèm phù hợp với ràng buộc kèo bóng đá euro dự kiến, như được minh họa ở trên. Bằng cách đó, hệ thống sẽ có thể bỏ qua quá trình quét cần thiết để xác nhận ràng buộc kèo bóng đá euro ngầm.Kiểm tra
ràng buộc, bảng sẽ được quét để xác thực ràng buộc kèo bóng đá euro trong khi giữ mộtAccess Exclusive
Khóa trên kèo bóng đá euro đó. Nên loại bỏ dự phòng bây giờKiểm tra
ràng buộc sauĐính kèm kèo bóng đá euro
hoàn thành. Nếu bảng được đính kèm tự nó là một bảng được kèo bóng đá euro, thì mỗi kèo bóng đá euro của nó sẽ bị khóa và quét đệ quy cho đến khi một bộ phận phù hợpKiểm tra
Tùy chọn gặp phải hoặc đạt được các kèo bóng đá euro lá.
Tương tự, nếu bảng được kèo bóng đá euro cómặc định
kèo bóng đá euro, nên tạo mộtKiểm tra
ràng buộc loại trừ ràng buộc của kèo bóng đá euro được gắn kết. Nếu điều này không được thực hiện thìmặc định
kèo bóng đá euro sẽ được quét để xác minh rằng nó không có bản ghi nào được đặt trong kèo bóng đá euro được đính kèm. Hoạt động này sẽ được thực hiện trong khi giữ mộtAccess Exclusive
khóa trênMặc định
kèo bóng đá euro. NếuMặc định
kèo bóng đá euro là một bảng được kèo bóng đá euro, sau đó mỗi kèo bóng đá euro của nó sẽ được kiểm tra đệ quy theo cách tương tự như bảng được đính kèm, như đã đề cập ở trên.
Như đã giải thích ở trên, có thể tạo các chỉ mục trên các bảng được kèo bóng đá euro để chúng được áp dụng tự động cho toàn bộ hệ thống phân cấp. Điều này rất thuận tiện, vì không chỉ các kèo bóng đá euro hiện tại sẽ được lập chỉ mục, mà còn bất kỳ kèo bóng đá euro nào được tạo ra trong tương lai.đồng thời
Vòng loại khi tạo chỉ mục được kèo bóng đá euro như vậy. Để tránh thời gian khóa dài, có thể sử dụngTạo chỉ mục chỉ trên
Bảng được kèo bóng đá euro; Một chỉ mục như vậy được đánh dấu không hợp lệ và các kèo bóng đá euro không được áp dụng chỉ mục tự động.đồng thời
, và sau đóđính kèmđến chỉ mục trên cha mẹ bằng cách sử dụngChỉ số thay đổi .. Đính kèm kèo bóng đá euro
. Khi các chỉ mục cho tất cả các kèo bóng đá euro được gắn vào chỉ mục cha, chỉ mục cha được đánh dấu tự động hợp lệ.
tạo chỉ số đo lường_usls_idx chỉ trên phép đo (đơn vị);
Kỹ thuật này có thể được sử dụng vớiđộc đáo
vàKhóa chính
Các ràng buộc quá; Các chỉ mục được tạo ngầm khi ràng buộc được tạo.
30851_31090
Những hạn chế sau đây áp dụng cho các bảng được kèo bóng đá euro:
Để tạo ràng buộc khóa duy nhất hoặc chính trên bảng được kèo bóng đá euro, các phím kèo bóng đá euro không được bao gồm bất kỳ biểu thức hoặc cuộc gọi chức năng nào và các cột của ràng buộc phải bao gồm tất cả các cột khóa kèo bóng đá euro. Hạn chế này tồn tại bởi vì các chỉ mục riêng lẻ tạo ra các ràng buộc chỉ có thể trực tiếp thực thi tính độc đáo trong các kèo bóng đá euro của chính họ;
Không có cách nào để tạo ra một ràng buộc loại trừ trải dài toàn bộ bảng được kèo bóng đá euro. Chỉ có thể đặt một ràng buộc như vậy trên mỗi kèo bóng đá euro lá riêng lẻ.
trước hàng
Triggers trênChèn
Không thể thay đổi kèo bóng đá euro nào là đích đến cuối cùng cho một hàng mới.
Trộn các mối quan hệ tạm thời và vĩnh viễn trong cùng một cây kèo bóng đá euro không được phép. Do đó, nếu bảng được kèo bóng đá euro là vĩnh viễn, thì phải là các kèo bóng đá euro của nó và tương tự như vậy nếu bảng được kèo bóng đá euro là tạm thời.
Các kèo bóng đá euro riêng lẻ được liên kết với bảng được kèo bóng đá euro của chúng bằng cách sử dụng kế thừa hậu trường. Tuy nhiên, không thể sử dụng tất cả các tính năng chung của kế thừa với các bảng được kèo bóng đá euro khai báo hoặc các kèo bóng đá euro của chúng, như được thảo luận dưới đây.
Vì phân cấp kèo bóng đá euro bao gồm bảng được kèo bóng đá euro và các kèo bóng đá euro của nó vẫn là một hệ thống phân cấp kế thừa,Tableoid
Và tất cả các quy tắc kế thừa thông thường được áp dụng như được mô tả trongPhần 5.10, với một vài ngoại lệ:
kèo bóng đá euro không thể có các cột không có trong cha mẹ. Không thể chỉ định các cột khi tạo các kèo bóng đá euro vớiTạo kèo bóng đá euro
, Cũng không thể thêm các cột vào các kèo bóng đá euro sau khi thực tế bằng cách sử dụngkèo bóng đá euro thay đổi
. Các bảng có thể được thêm vào dưới dạng kèo bóng đá euro vớiBảng thay đổi ... Đính kèm kèo bóng đá euro
Chỉ khi cột của chúng khớp chính xác với cha mẹ.
cảKiểm tra
vàkhông null
Các ràng buộc của bảng được kèo bóng đá euro luôn được kế thừa bởi tất cả các kèo bóng đá euro của nó.Kiểm tra
Các ràng buộc được đánh dấuKhông kế thừa
Không được phép tạo trên các bảng được kèo bóng đá euro. Bạn không thể bỏ mộtkhông null
ràng buộc trên cột của kèo bóng đá euro nếu có cùng một ràng buộc trong bảng cha.
sử dụngchỉ
Để thêm hoặc thả một ràng buộc chỉ trên bảng được kèo bóng đá euro được hỗ trợ miễn là không có kèo bóng đá euro. Khi các kèo bóng đá euro tồn tại, sử dụngchỉ
sẽ dẫn đến lỗi cho bất kỳ ràng buộc nào khác ngoàiđộc đáo
vàKhóa chính
. Thay vào đó, các ràng buộc trên các kèo bóng đá euro có thể được thêm vào và (nếu chúng không có trong bảng cha mẹ) bị rơi.
Là một bảng được kèo bóng đá euro không có bất kỳ dữ liệu nào, cố gắng sử dụngcắt ngắn
chỉ
Trên bảng được kèo bóng đá euro sẽ luôn trả về lỗi.
Trong khi kèo bóng đá euro khai báo tích hợp phù hợp cho hầu hết các trường hợp sử dụng phổ biến, có một số trường hợp mà một cách tiếp cận linh hoạt hơn có thể hữu ích. kèo bóng đá euro có thể được thực hiện bằng cách sử dụng kế thừa bảng, cho phép một số tính năng không được hỗ trợ bởi kèo bóng đá euro khai báo, chẳng hạn như:
36564_36769
Kế thừa kèo bóng đá euro cho phép nhiều kế thừa.
kèo bóng đá euro khai báo chỉ hỗ trợ phạm vi, danh sách và kèo bóng đá euro băm, trong khi kế thừa bảng cho phép dữ liệu được chia theo cách chọn người dùng. (Tuy nhiên, lưu ý rằng nếu loại trừ ràng buộc không thể cắt tỉa các bảng con một cách hiệu quả, hiệu suất truy vấn có thể kém.)
Một số hoạt động yêu cầu khóa mạnh hơn khi sử dụng kèo bóng đá euro khai báo so với khi sử dụng kế thừa bảng. Ví dụ: loại bỏ kèo bóng đá euro khỏi bảng được kèo bóng đá euro yêu cầu lấyAccess Exclusive
khóa trên kèo bóng đá euro cha mẹ, trong khi ACập nhật chia sẻ độc quyền
Khóa là đủ trong trường hợp thừa kế thông thường.
Ví dụ này xây dựng cấu trúc kèo bóng đá euro tương đương với ví dụ kèo bóng đá euro khai báo ở trên. Sử dụng các bước sau:
TạoMasterKhănkèo bóng đá euro, từ đó tất cảconHàngkèo bóng đá euro sẽ kế thừa. kèo bóng đá euro này sẽ không chứa dữ liệu.Đo lường
kèo bóng đá euro như đã định nghĩa ban đầu:
Tạo phép đo kèo bóng đá euro (
Tạo một sốcon”kèo bóng đá euro mà mỗi người kế thừa từ kèo bóng đá euro chính. Thông thường, các kèo bóng đá euro này sẽ không thêm bất kỳ cột nào vào tập hợp được kế thừa từ chủ.PostgreSQLkèo bóng đá euro (hoặc kèo bóng đá euro nước ngoài).
Tạo kèo bóng đá euro đo_Y2006M02 () kế thừa (đo lường);
Thêm các ràng buộc kèo bóng đá euro không chồng chéo vào các kèo bóng đá euro con để xác định các giá trị khóa được phép trong mỗi.
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ó sự chồng chéo giữa các giá trị khóa được phép trong các kèo bóng đá euro con khác nhau. Một lỗi phổ biến là thiết lập các ràng buộc phạm vi như:
Kiểm tra (Outletid từ 100 đến 200)
Điều này là sai vì không rõ kèo bóng đá euro con nào giá trị khóa 200 thuộc về. Thay vào đó, phạm vi nên được xác định theo kiểu này:
Tạo kèo bóng đá euro đo_Y2006M02 (
Đối với mỗi kèo bóng đá euro con, tạo một chỉ mục trên (các) cột chính, cũng như bất kỳ chỉ mục nào khác mà bạn có thể muốn.
41571_41959
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ó dữ liệu được chuyển hướng vào kèo bóng đá euro con thích hợp. Chúng ta có thể sắp xếp điều đó bằng cách gắn hàm kích hoạt phù hợp vào kèo bóng đá euro chính.
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 gọi chức năng 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 để nó luôn chèn vào kèo bóng đá euro con hiện tại. Tuy nhiên, định nghĩa kích hoạt không cần phải được cập nhật.
Chúng tôi có thể muốn chèn dữ liệu và có máy chủ tự động xác định vị trí kèo bóng đá euro con mà hàng nên được thêm vào. Chúng ta có thể làm điều này với chức năng kích hoạt phức tạp hơn, ví dụ:
Tạo hoặc thay thế chức năng Đo_insert_trigger ()
Định nghĩa kích hoạt giống như trước đây. Lưu ý rằng mỗinếu
Kiểm tra phải khớp chính xác vớiKiểm tra
ràng buộc cho kèo bóng đá euro con của nó.
Trong khi chức năng này phức tạp hơn trường hợp một tháng, nó không cần phải được cập nhật thường xuyên, vì các nhánh có thể được thêm vào trước khi cần thiết.
Trong thực tế, tốt nhất bạn nên kiểm tra đứa trẻ mới nhất trước, nếu hầu hết các phần chèn đi vào đứa trẻ đó. Để đơn giản, chúng tôi đã hiển thị các thử nghiệm của kích hoạt theo cùng thứ tự như trong các phần khác của ví dụ này.
Một cách tiếp cận khác để chuyển hướng chèn vào kèo bóng đá euro con thích hợp là thiết lập các quy tắc, thay vì kích hoạt trên kèo bóng đá euro chính. Ví dụ:
Tạo quy tắc đo lường_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 chi phí được trả một lần cho mỗi truy vấn thay vì một lần mỗi hàng, vì vậy phương pháp này có thể thuận lợi cho các tình huống chèn. Tuy nhiên, trong hầu hết các trường hợp, phương pháp kích hoạt sẽ cung cấp hiệu suất tốt hơn.
Nhận thức rằngCopy
Bỏ qua các quy tắc. Nếu bạn muốn sử dụngCopy
Để chèn dữ liệu, bạn sẽ cần sao chép vào kèo bóng đá euro con chính xác thay vì trực tiếp vào chủ.Copy
Các kích hoạt lửa, vì vậy bạn có thể sử dụng nó bình thường nếu bạn sử dụng phương pháp kích hoạt.
Một nhược điểm khác của phương pháp quy tắc là không có cách nào đơn giản để buộc lỗi nếu tập hợp các quy tắc không bao gồm ngày chèn; Dữ liệu sẽ âm thầm đi vào kèo bóng đá euro chính.
Đảm bảo rằngurdaint_exclusionTham số cấu hình không bị vô hiệu hóa trongPostgreSql.conf
; nếu không thì kèo bóng đá euro con có thể được truy cập một cách không cần thiết.
Như chúng ta có thể thấy, một hệ thống kèo bóng đá euro cấp bảng phức tạp có thể yêu cầu một lượng DDL đáng kể. Trong ví dụ trên, chúng tôi sẽ tạo một bảng con mới mỗi tháng, vì vậy có thể là khôn ngoan khi viết một tập lệnh tạo DDL cần thiết tự động.
Để loại bỏ dữ liệu cũ một cách nhanh chóng, chỉ cần thả kèo bóng đá euro con không còn cần thiết:
47296_47332
Để loại bỏ bảng con khỏi bảng kèo bóng đá euro cấp kế thừa nhưng giữ quyền truy cập vào nó dưới dạng bảng theo đúng nghĩa của nó:
thay đổi kèo bóng đá euro đo_Y2006M02 Không đo lường kế thừa;
Để thêm kèo bóng đá euro con mới để xử lý dữ liệu mới, tạo kèo bóng đá euro con trống giống như trẻ em ban đầu được tạo ở trên:
Tạo kèo bóng đá euro đo_Y2008M02 (
Ngoài ra, người ta có thể muốn tạo và điền vào bảng con mới trước khi thêm nó vào kèo bóng đá euro cấp bảng. Điều này có thể cho phép dữ liệu được tải, kiểm tra và chuyển đổi trước khi được hiển thị cho các truy vấn trên bảng cha.
Tạo kèo bóng đá euro đo_Y2008M02
Các cảnh báo sau đây áp dụng cho kèo bóng đá euro được thực hiện bằng cách sử dụng kế thừa:
Không có cách tự động để xác minh rằng tất cả cácKiểm tra
Các ràng buộc là loại trừ lẫn nhau. Tạo mã tạo ra các kèo bóng đá euro con và/hoặc sửa đổi các đối tượng liên quan là an toàn hơn so với việc viết từng kèo bóng đá euro.
Chỉ mục và các ràng buộc khóa nước ngoài áp dụng cho các kèo bóng đá euro đơn lẻ và không phải cho trẻ em thừa kế của chúng, do đó họ có một sốCaveatsĐể nhận thức.
Các sơ đồ được hiển thị ở đây giả sử rằng các giá trị của (các) cột khóa của một hàng không bao giờ thay đổi hoặc ít nhất là không thay đổi đủ để yêu cầu nó chuyển sang kèo bóng đá euro khác. MỘTCập nhật
Điều đó cố gắng làm điều đó sẽ thất bại vìKiểm tra
ràng buộc. Nếu bạn cần xử lý các trường hợp như vậy, bạn có thể đặt các kích hoạt cập nhật phù hợp trên các kèo bóng đá euro con, nhưng nó làm cho việc quản lý cấu trúc phức tạp hơn nhiều.
Nếu bạn đang sử dụng thủ côngVACUUM
hoặckèo bóng đá euro tích
Các lệnh, đừng quên rằng bạn cần phải chạy chúng trên mỗi kèo bóng đá euro con riêng. Một lệnh như:
kèo bóng đá euro tích đo lường;
Sẽ chỉ xử lý kèo bóng đá euro chính.
Chèn
Câu nói vớitrên xung đột
Điều khoản không có khả năng hoạt động như mong đợi, nhưtrên xung đột
Hành động chỉ được thực hiện trong trường hợp vi phạm duy nhất trên quan hệ mục tiêu được chỉ định, không phải quan hệ con cái của nó.
Trình kích hoạt hoặc quy tắc sẽ cần thiết để định tuyến các hàng đến bảng con mong muốn, trừ khi ứng dụng nhận thức rõ ràng về sơ đồ kèo bóng đá euro. Trình kích hoạt có thể phức tạp để viết và sẽ chậm hơn nhiều so với định tuyến Tuple được thực hiện nội bộ bằng cách kèo bóng đá euro khai báo.
Cắt tỉa kèo bóng đá eurolà một kỹ thuật tối ưu hóa truy vấn giúp cải thiện hiệu suất cho các bảng được kèo bóng đá euro. Ví dụ:
Đặt enable_partition_pruning = on; - Mặc định
Không có sự cắt tỉa kèo bóng đá euro, truy vấn trên sẽ quét từng kèo bóng đá euro củaĐo lường
Bảng. Với sự cắt tỉa kèo bóng đá euro được bật, người lập kế hoạch sẽ kiểm tra định nghĩa của từng kèo bóng đá euro và chứng minh rằng kèo bóng đá euro không cần phải được quét vì nó không thể chứa bất kỳ hàng nào gặp gỡ truy vấn của truy vấnWHERE
mệnh đề. Khi người lập kế hoạch có thể chứng minh điều này, nó sẽ loại trừ (Prunes) kèo bóng đá euro từ gói truy vấn.
Bằng cách sử dụng lệnh giải thích vàenable_partition_pruningTham số cấu hình, có thể hiển thị sự khác biệt giữa một kế hoạch mà các kèo bóng đá euro đã được cắt tỉa và một kế hoạch mà chúng không có. Một kế hoạch không được tối ưu hóa điển hình cho loại thiết lập bảng này là:
Đặt enable_partition_pruning = off;
Một số hoặc tất cả các kèo bóng đá euro có thể sử dụng quét chỉ mục thay vì quét tuần tự bảng đầy đủ, nhưng điểm ở đây là không cần phải quét các kèo bóng đá euro cũ hơn để trả lời truy vấn này. Khi chúng tôi kích hoạt cắt tỉa kèo bóng đá euro, chúng tôi sẽ có một kế hoạch rẻ hơn đáng kể sẽ cung cấp cùng một câu trả lời:
Đặt enable_partition_pruning = on;
Lưu ý rằng việc cắt tỉa kèo bóng đá euro chỉ được điều khiển bởi các ràng buộc được xác định ngầm bởi các khóa kèo bóng đá euro, không phải bởi sự hiện diện của các chỉ mục. Do đó, không cần thiết phải xác định các chỉ mục trên các cột chính.
Cắt tỉa kèo bóng đá euro có thể được thực hiện không chỉ trong quá trình lập kế hoạch của một truy vấn nhất định, mà còn trong quá trình thực hiện nó. Điều này rất hữu ích vì nó có thể cho phép nhiều kèo bóng đá euro được cắt tỉa khi các mệnh đề chứa các biểu thức có giá trị không được biết đến trong thời gian lập kế hoạch truy vấn, ví dụ, các tham số được xác định trong AChuẩn bị
Câu lệnh, sử dụng giá trị thu được từ một trình điều khiển con hoặc sử dụng giá trị được tham số hóa ở phía bên trong của nối vòng lặp lồng nhau. Việc cắt tỉa kèo bóng đá euro trong quá trình thực hiện có thể được thực hiện tại bất kỳ thời điểm nào sau:
Trong quá trình khởi tạo kế hoạch truy vấn. Cắt tỉa kèo bóng đá euro có thể được thực hiện ở đây cho các giá trị tham số được biết đến trong giai đoạn khởi tạo thực thi.Giải thích
hoặcGiải thích kèo bóng đá euro tích
. Có thể xác định số lượng kèo bóng đá euro đã bị loại bỏ trong giai đoạn này bằng cách quan sátSubplans bị xóathuộc tính trongGiải thích
OUTPUT.
Trong khi thực hiện thực tế kế hoạch truy vấn. Cắt tỉa kèo bóng đá euro cũng có thể được thực hiện ở đây để loại bỏ các kèo bóng đá euro bằng các giá trị chỉ được biết trong quá trình thực hiện truy vấn thực tế.vòng lặp
thuộc tính trongGiải thích kèo bóng đá euro tích
đầu ra. Các mẫu con tương ứng với các kèo bóng đá euro khác nhau có thể có các giá trị khác nhau cho nó tùy thuộc vào số lần mỗi chúng được cắt tỉa trong quá trình thực hiện.(không bao giờ được thực thi)
Nếu chúng được cắt tỉa mỗi lần.
Cắt tỉa kèo bóng đá euro có thể bị vô hiệu hóa bằng cách sử dụngenable_partition_pruningCài đặt.
Việc cắt tỉa kèo bóng đá euro thời gian thực hiện hiện chỉ xảy ra choPhụ lục
vàMergeAppend
Các loại nút. Nó chưa được triển khai choModifyTable
Loại nút, nhưng điều đó có thể sẽ được thay đổi trong một bản phát hành trong tương lai củaPostgreSQL.
Loại trừ ràng buộclà một kỹ thuật tối ưu hóa truy vấn tương tự như cắt tỉa kèo bóng đá euro. Mặc dù nó chủ yếu được sử dụng để kèo bóng đá euro được thực hiện bằng phương pháp kế thừa kế thừa, nhưng nó có thể được sử dụng cho các mục đích khác, bao gồm cả kèo bóng đá euro khai báo.
Loại trừ ràng buộc hoạt động theo cách rất giống với việc cắt tỉa kèo bóng đá euro, ngoại trừ việc nó sử dụng mỗi bảngKiểm tra
ràng buộc - cho nó tên của nó - trong khi việc cắt tỉa kèo bóng đá euro sử dụng giới hạn kèo bóng đá euro của bảng, chỉ tồn tại trong trường hợp kèo bóng đá euro khai báo. Một điểm khác biệt khác là loại trừ ràng buộc chỉ được áp dụng tại thời điểm kế hoạch;
Thực tế là loại trừ ràng buộc sử dụngKiểm tra
Các ràng buộc, làm cho nó chậm so với việc cắt tỉa kèo bóng đá euro, đôi khi có thể được sử dụng như một lợi thế: bởi vì các ràng buộc có thể được xác định ngay cả trên các bảng kèo bóng đá euro được khai báo, ngoài các giới hạn kèo bóng đá euro bên trong của chúng, loại trừ có thể tạo ra các kèo bóng đá euro bổ sung khỏi kế hoạch truy vấn.
cài đặt mặc định (và được đề xuất) củaurdaint_exclusionkhông phảitrên
NorTẮT
, nhưng một cài đặt trung gian gọi làkèo bóng đá euro
, khiến kỹ thuật này chỉ được áp dụng cho các truy vấn có khả năng làm việc trên các bảng được kèo bóng đá euro kế thừa. Thetrên
Cài đặt khiến người lập kế hoạch kiểm traKiểm tra
Cá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 có khả năng được hưởng lợi.
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ỉ được áp dụng trong quá trình lập kế hoạch truy vấn, không giống như cắt tỉa kèo bóng đá euro, cũng có thể được áp dụng trong quá trình thực thi truy vấn.
Loại trừ ràng buộc chỉ hoạt động khi truy vấnWHERE
mệnh đề chứa các hằng số (hoặc tham số được cung cấp bên ngoài). Ví dụ: so sánh với chức năng không thể truy xuất nhưcurrent_timestamp
Không thể được tối ưu hóa, vì người lập kế hoạch không thể biết kèo bóng đá euro con nào giá trị của hàm có thể rơi vào thời gian chạy.
Giữ cho các ràng buộc kèo bóng đá euro đơn giản, nếu không người lập kế hoạch có thể không thể chứng minh rằng các bảng con có thể không cần phải truy cập. Sử dụng các điều kiện bình đẳng đơn giản để kèo bóng đá euro danh sách hoặc kiểm tra phạm vi đơn giản để kèo bóng đá euro phạm vi, như được minh họa trong các ví dụ trước.
Tất cả các ràng buộc đối với tất cả trẻ em của bảng cha được kiểm tra trong quá trình loại trừ ràng buộc, do đó một số lượng lớn trẻ em có khả năng tăng thời gian lập kế hoạch truy vấn đáng kể. Vì vậy, kèo bóng đá euro dựa trên kế thừa di sản sẽ hoạt động tốt với khoảng một trăm bảng trẻ em;
Việc lựa chọn cách kèo bóng đá euro bảng nên được thực hiện cẩn thận, vì hiệu suất của kế hoạch và thực hiện truy vấn có thể bị ảnh hưởng tiêu cực bởi thiết kế kém.
Một trong những quyết định thiết kế quan trọng nhất sẽ là cột hoặc cột mà bạn kèo bóng đá euro dữ liệu của mình. Thường thì lựa chọn tốt nhất sẽ là kèo bóng đá euro theo cột hoặc tập hợp các cột thường xuất hiện nhất trongWHERE
Các điều khoản của các truy vấn được thực thi trên bảng được kèo bóng đá euro.WHERE
Các mệnh đề tương thích với các ràng buộc ràng buộc kèo bóng đá euro có thể được sử dụng để cắt tỉa các kèo bóng đá euro không cần thiết. Tuy nhiên, bạn có thể bị buộc phải đưa ra các quyết định khác theo yêu cầu choKhóa chính
hoặc Ađộc đáo
ràng buộc. Loại bỏ dữ liệu không mong muốn cũng là một yếu tố cần xem xét khi lập kế hoạch chiến lược kèo bóng đá euro của bạn.
Chọn số lượng kèo bóng đá euro mục tiêu mà bảng nên được chia thành cũng là một quyết định quan trọng để đưa ra. Không có đủ kèo bóng đá euro có thể có nghĩa là các chỉ mục vẫn còn quá lớn và địa phương dữ liệu vẫn còn kém, điều này có thể dẫn đến tỷ lệ đạt được bộ đệm thấp.Hash
và chọn số lượng kèo bóng đá euro hợp lý thay vì cố gắng kèo bóng đá euro theoDanh sách
Và hy vọng rằng số lượng khách hàng không tăng vượt quá mức thực tế để kèo bóng đá euro dữ liệu theo.
kèo bóng đá euro phụ có thể hữu ích để phân chia thêm các kèo bóng đá euro dự kiến sẽ trở nên lớn hơn các kèo bóng đá euro khác. Một tùy chọn khác là sử dụng kèo bóng đá euro phạm vi với nhiều cột trong khóa kèo bóng đá euro.
Điều quan trọng là phải xem xét chi phí kèo bóng đá euro trong quá trình lập kế hoạch và thực hiện truy vấn. Người lập kế hoạch truy vấn thường có thể xử lý các phân cấp kèo bóng đá euro với tới vài nghìn kèo bóng đá euro khá tốt, với điều kiện là các truy vấn điển hình cho phép người lập kế hoạch truy vấn cắt tỉa tất cả trừ một số lượng nhỏ các kèo bóng đá euro.Cập nhật
vàXóa
lệnh. Một lý do khác để quan tâm đến việc có một số lượng lớn các kèo bóng đá euro là mức tiêu thụ bộ nhớ của máy chủ có thể tăng đáng kể theo thời gian, đặc biệt là nếu nhiều phiên chạm vào số lượng lớn các kèo bóng đá euro.
Với khối lượng công việc loại kho dữ liệu, có thể có ý nghĩa khi sử dụng số lượng kèo bóng đá euro lớn hơn so vớiOLTPLoại khối lượng công việc. Nói chung, trong kho dữ liệu, thời gian lập kế hoạch truy vấn không phải là mối quan tâm vì phần lớn thời gian xử lý được dành trong quá trình thực hiện truy vấn.
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớpMẫu nàyĐể báo cáo vấn đề tài liệu.