Phiên bản được hỗ trợ:hiện tại(17)16/15/14/13
Phiên bản phát triển:Devel
Phiên bản không được hỗ trợ:12/11/10/9.6/9.5/9.4/9.3/9.2/9.1/9.0/8.4/8.3/8.2/8.1

5.11.soi kèo bóng đá truoctran bảng

PostgreSQLHỗ trợ soi kèo bóng đá truoctran bảng cơ bản. Phần này mô tả lý do và cách thực hiện soi kèo bóng đá truoctran như một phần của thiết kế cơ sở dữ liệu của bạn.

5.11.1.Tổng quan

soi kèo bóng đá truoctran đề 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. soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran hoặc một số lượng nhỏ các soi kèo bóng đá truoctran. soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran, hiệu suất có thể được cải thiện bằng cách sử dụng quét tuần tự soi kèo bóng đá truoctran đó 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 soi kèo bóng đá truoctran, nếu mẫu sử dụng được tính trong thiết kế soi kèo bóng đá truoctran. Bỏ một soi kèo bóng đá truoctran riêng lẻ bằng cách sử dụngBẢNG DROPhoặc làmThay đổi soi kèo bóng đá truoctran 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ánhVacuumChi 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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran sau:

soi kèo bóng đá truoctran phạm vi

Bảng được soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran khác nhau. Ví dụ, người ta có thể soi kèo bóng đá truoctran 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đến10và phạm vi của một người tiếp theo là từ10đến20, sau đó giá trị10thuộc về soi kèo bóng đá truoctran thứ hai không phải là thứ nhất.

Danh sách soi kèo bóng đá truoctran

Bảng được soi kèo bóng đá truoctran bằng cách liệt kê rõ ràng (các) giá trị khóa xuất hiện trong mỗi soi kèo bóng đá truoctran.

soi kèo bóng đá truoctran băm

Bảng được soi kèo bóng đá truoctran bằng cách chỉ định mô đun và phần còn lại cho mỗi soi kèo bóng đá truoctran. Mỗi soi kèo bóng đá truoctran sẽ giữ các hàng mà giá trị băm của khóa soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran khai báo tích hợp.

5.11.2.soi kèo bóng đá truoctran khai báo

PostgreSQLCho phép bạn tuyên bố rằng một bảng được chia thành các soi kèo bóng đá truoctran. Bảng được chia được gọi làBảng soi kèo bóng đá truoctran. Tuyên bố bao gồmPhương pháp soi kèo bóng đá truoctranNhư đượ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 soi kèo bóng đá truoctran.

Bản thân bảng được soi kèo bóng đá truoctran làảoHồisoi kèo bóng đá truoctran không có lưu trữ của riêng mình. Thay vào đó, bộ nhớ thuộc vềsoi kèo bóng đá truoctran, là các bảng khác thường được liên kết với bảng được soi kèo bóng đá truoctran. Mỗi soi kèo bóng đá truoctran lưu trữ một tập hợp con của dữ liệu được xác định bởigiới hạn soi kèo bóng đá truoctran. Tất cả các hàng được chèn vào một bảng được soi kèo bóng đá truoctran sẽ được chuyển đến một trong các soi kèo bóng đá truoctran thích hợp dựa trên các giá trị của (các) cột khóa soi kèo bóng đá truoctran.

soi kèo bóng đá truoctran có thể được định nghĩa là các bảng được soi kèo bóng đá truoctran, dẫn đếnSub-Partitioning. Mặc dù tất cả các soi kèo bóng đá truoctran phải có cùng một cột với cha mẹ được soi kèo bóng đá truoctran của chúng, các soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran khác.Tạo soi kèo bóng đá truoctranĐể biết thêm chi tiết về việc tạo các bảng và soi kèo bóng đá truoctran được soi kèo bóng đá truoctran.

Không thể biến bảng thông thường thành bảng được soi kèo bóng đá truoctran hoặc ngược lại. Tuy nhiên, có thể thêm một bảng được soi kèo bóng đá truoctran hoặc thông thường hiện có dưới dạng soi kèo bóng đá truoctran của bảng được soi kèo bóng đá truoctran hoặc xóa soi kèo bóng đá truoctran khỏi bảng được soi kèo bóng đá truoctran biến nó thành một bảng độc lập;soi kèo bóng đá truoctran thay đổiĐể tìm hiểu thêm vềĐính kèm soi kèo bóng đá truoctransoi kèo bóng đá truoctran táchphụ.

soi kèo bóng đá truoctran cũng có thể làPostgresql: Tài liệu: 14: 5.12. , 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 soi kèo bóng đá truoctran. Có một số hạn chế khác là tốt.PostgreSQL: Tài liệu: 14: kèo bóng đá cúpĐể biết thêm thông tin.

5.11.2.1.Ví dụ

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 soi kèo bóng đá truoctran (

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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran khai báo trong trường hợp này, sử dụng các bước sau:

  1. TạoĐo lườngBảng dưới dạng bảng được soi kèo bóng đá truoctran bằng cách chỉ địnhsoi kèo bóng đá truoctran bởimệnh đề, bao gồm phương thức soi kèo bóng đá truoctran (phạm viTrong trường hợp này) và danh sách (các) cột để sử dụng làm khóa soi kèo bóng đá truoctran.

    Tạo phép đo soi kèo bóng đá truoctran (
  2. Tạo soi kèo bóng đá truoctran. Định nghĩa của mỗi soi kèo bóng đá truoctran phải chỉ định các giới hạn tương ứng với phương thức soi kèo bóng đá truoctran và khóa soi kèo bóng đá truoctran của cha mẹ.

    Các soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran.

    Ví dụ của chúng tôi, mỗi soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran đo lường

    (Nhớ lại rằng các soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran phụ, một lần nữa chỉ địnhsoi kèo bóng đá truoctran bởimệnh đề trong các lệnh được sử dụng để tạo các soi kèo bóng đá truoctran riêng lẻ, ví dụ:

    Tạo bảng đo_Y2006M02 soi kèo bóng đá truoctran đo lường

    Sau khi tạo các soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran của nó được thỏa mãn) sẽ được chuyển hướng thêm đến một trong các soi kèo bóng đá truoctran của nó dựa trênPEAKTEMPCột. Khóa soi kèo bóng đá truoctran được chỉ định có thể trùng với khóa soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran cho phép;

    Chèn dữ liệu vào bảng cha không ánh xạ tới một trong các soi kèo bóng đá truoctran hiện có sẽ gây ra lỗi; một soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran cho các soi kèo bóng đá truoctran. Những ràng buộc như vậy sẽ được tạo tự động.

  3. 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 soi kèo bóng đá truoctran. .Mạnhảogiống như cách mà bảng được soi kèo bóng đá truoctran là: dữ liệu thực tế có trong các chỉ mục con trên các bảng soi kèo bóng đá truoctran riêng lẻ.

    Tạo chỉ mục về đo lường (logdate);
  4. Đả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 soi kèo bóng đá truoctran 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.

5.11.2.2.Bảo trì soi kèo bóng đá truoctran

Thông thường tập hợp các soi kèo bóng đá truoctran đượ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 soi kèo bóng đá truoctran giữ dữ liệu cũ và định kỳ thêm các soi kèo bóng đá truoctran 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ỏ soi kèo bóng đá truoctran 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 Exclusivekhóa trên soi kèo bóng đá truoctran cha.

Một tùy chọn khác thường được ưa thích là xóa soi kèo bóng đá truoctran khỏi bảng được soi kèo bóng đá truoctran nhưng giữ quyền truy cập vào nó dưới dạng bảng theo cách riêng của nó. Cái này có hai hình thức:

thay đổi phép đo bảng soi kèo bóng đá truoctran phân vùng_Y2006M02;

Những đ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ự. Đây 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.Access ExclusiveKhóa trên soi kèo bóng đá truoctran cha. Thêmđồng thờiVòng loại như ở dạng thứ hai cho phép hoạt động tách chỉ yêu cầuCập nhật chia sẻ độc quyềnKhóa trên soi kèo bóng đá truoctran cha, nhưng xemBảng thay đổi ... soi kèo bóng đá truoctran táchĐể biết chi tiết về các hạn chế.

Tương tự chúng ta có thể thêm một soi kèo bóng đá truoctran mới để xử lý dữ liệu mới. Chúng ta có thể tạo một soi kèo bóng đá truoctran trống trong bảng được soi kèo bóng đá truoctran giống như các soi kèo bóng đá truoctran ban đầu đã được tạo ở trên:

Tạo bảng đo_Y2008M02 soi kèo bóng đá truoctran đ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 soi kèo bóng đá truoctran và đính kèm nó như một soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran.Đính kèm soi kèo bóng đá truoctranHoạt động chỉ yêu cầuCập nhật chia sẻ độc quyềnKhóa trên bảng được soi kèo bóng đá truoctran, trái ngược vớiAccess ExclusiveKhóa được yêu cầu bởiTạo bảng ... soi kèo bóng đá truoctran của, vì vậy nó thân thiện hơn với các hoạt động đồng thời trên bảng được soi kèo bóng đá truoctran. TheTạo soi kèo bóng đá truoctran ... giống nhưTùy chọn rất hữu ích để tránh lặp đi lặp lại một cách kỹ lưỡng định nghĩa của soi kèo bóng đá truoctran cha:

Tạo soi kèo bóng đá truoctran đo_Y2008M02

Trước khi chạyĐính kèm soi kèo bóng đá truoctranlệnh, nên tạo mộtKiểm traràng buộc trên bảng được đính kèm phù hợp với ràng buộc soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran ngầm.Kiểm traràng buộc, bảng sẽ được quét để xác thực ràng buộc soi kèo bóng đá truoctran trong khi giữ mộtAccess ExclusiveKhóa trên soi kèo bóng đá truoctran đó. Nên loại bỏ dự phòng bây giờKiểm traràng buộc sauĐính kèm soi kèo bóng đá truoctranhoàn thành. Nếu bảng được đính kèm tự nó là một bảng được soi kèo bóng đá truoctran, thì mỗi soi kèo bóng đá truoctran của nó sẽ bị khóa và quét đệ quy cho đến khi một bộ phận phù hợpKiểm traràng buộc gặp phải hoặc các soi kèo bóng đá truoctran lá.

Tương tự, nếu bảng được soi kèo bóng đá truoctran cóMặc địnhsoi kèo bóng đá truoctran, nên tạo mộtKiểm traràng buộc loại trừ ràng buộc của soi kèo bóng đá truoctran được gắn kết. Nếu điều này không được thực hiện thìMặc địnhsoi kèo bóng đá truoctran sẽ được quét để xác minh rằng nó không có bản ghi nào được đặt trong soi kèo bóng đá truoctran được đính kèm. Hoạt động này sẽ được thực hiện trong khi giữ mộtAccess Exclusivekhóa trênMặc địnhsoi kèo bóng đá truoctran. NếuMặc địnhsoi kèo bóng đá truoctran là một bảng được soi kèo bóng đá truoctran, sau đó mỗi soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran để 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 soi kèo bóng đá truoctran hiện tại sẽ được lập chỉ mục, mà còn bất kỳ soi kèo bóng đá truoctran nào được tạo ra trong tương lai.đồng thờiVòng loại khi tạo chỉ mục được soi kèo bóng đá truoctran như vậy. Để tránh thời gian khóa dài, có thể sử dụngTạo chỉ mục chỉ trênBảng được soi kèo bóng đá truoctran; Một chỉ mục như vậy được đánh dấu không hợp lệ và các soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran. Khi các chỉ mục cho tất cả các soi kèo bóng đá truoctran đượ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 đáoKhóa chínhCác ràng buộc quá; Các chỉ mục được tạo ngầm khi ràng buộc được tạo.

Thay đổi chỉ số đo thêm duy nhất (city_id, logdate);

5.11.2.3.Hạn chế

Các giới hạn sau đây áp dụng cho các bảng được soi kèo bóng đá truoctran:

  • Để tạo ràng buộc khóa duy nhất hoặc chính trên bảng được soi kèo bóng đá truoctran, các khóa soi kèo bóng đá truoctran không được bao gồm bất kỳ biểu thức hoặc lệnh 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 soi kèo bóng đá truoctran. 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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran. Chỉ có thể đặt một ràng buộc như vậy trên mỗi soi kèo bóng đá truoctran lá riêng lẻ.

  • trước hàngTriggers trênChènKhông thể thay đổi soi kèo bóng đá truoctran nào là điểm đế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 soi kèo bóng đá truoctran không được phép. Do đó, nếu bảng được soi kèo bóng đá truoctran là vĩnh viễn, thì phải là các soi kèo bóng đá truoctran của nó và tương tự như vậy nếu bảng được soi kèo bóng đá truoctran là tạm thời.

Các soi kèo bóng đá truoctran riêng lẻ được liên kết với bảng được soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran khai báo hoặc các soi kèo bóng đá truoctran của chúng, như được thảo luận dưới đây.

Vì phân cấp soi kèo bóng đá truoctran bao gồm bảng được soi kèo bóng đá truoctran và các soi kèo bóng đá truoctran của nó vẫn là một hệ thống phân cấp kế thừa,TableoidVà tất cả các quy tắc thừa kế 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ệ:

  • soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran vớiTạo soi kèo bóng đá truoctran, Cũng không thể thêm các cột vào các soi kèo bóng đá truoctran sau khi thực tế bằng cách sử dụngsoi kèo bóng đá truoctran thay đổi. Các bảng có thể được thêm vào dưới dạng soi kèo bóng đá truoctran vớiBảng thay đổi ... Đính kèm soi kèo bóng đá truoctranChỉ khi cột của chúng khớp chính xác với cha mẹ.

  • cảKiểm trakhông nullCác ràng buộc của bảng được soi kèo bóng đá truoctran luôn được kế thừa bởi tất cả các soi kèo bóng đá truoctran của nó.Kiểm traCác ràng buộc được đánh dấuKhông kế thừaKhông được phép tạo trên các bảng được soi kèo bóng đá truoctran. Bạn không thể bỏ mộtkhông nullràng buộc trên cột của soi kèo bóng đá truoctran nếu cùng một ràng buộc 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 soi kèo bóng đá truoctran được hỗ trợ miễn là không có soi kèo bóng đá truoctran. Khi các soi kèo bóng đá truoctran 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 đáoKhóa chính. Thay vào đó, các ràng buộc trên các soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran sẽ luôn trả về lỗi.

5.11.3.soi kèo bóng đá truoctran bằng cách sử dụng kế thừa

Trong khi soi kèo bóng đá truoctran 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. soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran khai báo, chẳng hạn như:

  • 37379_37584

  • Kế thừa soi kèo bóng đá truoctran cho phép nhiều kế thừa.

  • soi kèo bóng đá truoctran khai báo chỉ hỗ trợ phạm vi, danh sách và soi kèo bóng đá truoctran 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.)

5.11.3.1.Ví dụ

Ví dụ này xây dựng cấu trúc soi kèo bóng đá truoctran tương đương với ví dụ soi kèo bóng đá truoctran khai báo ở trên. Sử dụng các bước sau:

  1. Tạorootsoi kèo bóng đá truoctran, từ đó tất cảconsoi kèo bóng đá truoctran sẽ kế thừa. soi kèo bóng đá truoctran này sẽ không chứa dữ liệu.Đo lườngsoi kèo bóng đá truoctran như đã định nghĩa ban đầu:

    Tạo phép đo soi kèo bóng đá truoctran (
  2. Tạo một sốconsoi kèo bóng đá truoctran mà mỗi kế thừa từ soi kèo bóng đá truoctran gốc. Thông thường, các soi kèo bóng đá truoctran 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ừ gốc.POSTGRESQLsoi kèo bóng đá truoctran (hoặc soi kèo bóng đá truoctran nước ngoài).

    Tạo soi kèo bóng đá truoctran đo_Y2006M02 () kế thừa (đo lường);
  3. Thêm các ràng buộc soi kèo bóng đá truoctran không chồng chéo vào các soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran 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õ soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran đo_Y2006M02 (
  4. Đối với mỗi soi kèo bóng đá truoctran 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.

    41943_42331
  5. Chúng tôi muốn ứng dụng của chúng tôi có thể nóiChèn vào phép đo ...và có dữ liệu được chuyển hướng vào soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran gố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 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 hàm kích hoạt mỗi tháng để nó luôn chèn vào soi kèo bóng đá truoctran 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í soi kèo bóng đá truoctran 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ếuKiểm tra phải khớp chính xác vớiKiểm traràng buộc cho soi kèo bóng đá truoctran 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.

    Lưu ý

    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 soi kèo bóng đá truoctran con thích hợp là thiết lập các quy tắc, thay vì kích hoạt trên soi kèo bóng đá truoctran gốc. 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 thanh toán 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ằngCopyBỏ 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 soi kèo bóng đá truoctran con chính xác thay vì trực tiếp vào gốc.CopyCá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 soi kèo bóng đá truoctran gốc thay thế.

  6. Đả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ì soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran 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.

5.11.3.2.Bảo trì soi kèo bóng đá truoctran thừa kế

Để xóa dữ liệu cũ một cách nhanh chóng, chỉ cần thả soi kèo bóng đá truoctran con không còn cần thiết:

47660_47696

47710_47827

thay đổi soi kèo bóng đá truoctran đo_Y2006M02 Không có phép đo kế thừa;

Để thêm soi kèo bóng đá truoctran con mới để xử lý dữ liệu mới, hãy tạo một soi kèo bóng đá truoctran con trống giống như những đứa trẻ ban đầu được tạo ở trên:

Tạo soi kèo bóng đá truoctran đ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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran đo_Y2008M02

5.11.3.3.Hãy cẩn thận

Các cảnh báo sau đây áp dụng cho soi kèo bóng đá truoctran được thực hiện bằng cách sử dụng kế thừa:

  • 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à loại trừ lẫn nhau. Tạo mã tạo ra các soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran.

  • Chỉ mục và các ràng buộc khóa nước ngoài áp dụng cho các soi kèo bóng đá truoctran đơn lẻ và không phải cho trẻ em thừa kế của chúng, do đó họ có một sốCaveatsĐể biết.

  • 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 soi kèo bóng đá truoctran khác. MỘTCập nhậtĐiều đó cố gắng làm điều đó sẽ thất bại vìKiểm trarà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 soi kèo bóng đá truoctran 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ôngVACUUMhoặcsoi kèo bóng đá truoctran tíchCác lệnh, đừng quên rằng bạn cần phải chạy chúng trên mỗi soi kèo bóng đá truoctran con riêng. Một lệnh như:

    soi kèo bóng đá truoctran tích đo lường;

    Sẽ chỉ xử lý soi kèo bóng đá truoctran gốc.

  • ChènCâ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 độtHà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ơ đồ soi kèo bóng đá truoctran. 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 soi kèo bóng đá truoctran khai báo.

5.11.4.Cắt tỉa soi kèo bóng đá truoctran

Cắt tỉa soi kèo bóng đá truoctranlà 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 soi kèo bóng đá truoctran. Ví dụ:

Đặt enable_partition_pruning = on;                 - Mặc định

Không có sự cắt tỉa soi kèo bóng đá truoctran, truy vấn trên sẽ quét từng soi kèo bóng đá truoctran củaĐo lườngBảng. Với sự cắt tỉa soi kèo bóng đá truoctran được bật, người lập kế hoạch sẽ kiểm tra định nghĩa của từng soi kèo bóng đá truoctran và chứng minh rằng soi kèo bóng đá truoctran 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ấnWHEREmệnh đề. Khi người lập kế hoạch có thể chứng minh điều này, nó sẽ loại trừ (Prunes) soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran đã đượ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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran cũ hơn để trả lời truy vấn này. Khi chúng tôi kích hoạt cắt tỉa soi kèo bóng đá truoctran, 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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran, 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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran đượ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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran 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ích56457_56463Giải thích soi kèo bóng đá truoctran tích. Có thể xác định số lượng soi kèo bóng đá truoctran đã bị loại bỏ trong giai đoạn này bằng cách quan sátMạnhSubplans bị xóathuộc tính trongGiải thíchđầu ra.

  • Trong khi thực hiện thực tế kế hoạch truy vấn. Cắt tỉa soi kèo bóng đá truoctran cũng có thể được thực hiện ở đây để loại bỏ các soi kèo bóng đá truoctran 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ặpthuộc tính trongGiải thích soi kèo bóng đá truoctran tíchđầu ra. Các mẫu con tương ứng với các soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran có thể bị vô hiệu hóa bằng cách sử dụngenable_partition_pruningCài đặt.

5.11.5.soi kèo bóng đá truoctran và loại trừ ràng buộc

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 soi kèo bóng đá truoctran. Mặc dù nó chủ yếu được sử dụng để soi kèo bóng đá truoctran đượ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ả soi kèo bóng đá truoctran khai báo.

Loại trừ ràng buộc hoạt động theo cách rất giống với cắt tỉa soi kèo bóng đá truoctran, ngoại trừ việc nó sử dụng mỗi bảngKiểm traràng buộc - cho nó tên của nó - trong khi việc cắt tỉa soi kèo bóng đá truoctran sử dụng giới hạn soi kèo bóng đá truoctran của bảng, chỉ tồn tại trong trường hợp soi kèo bóng đá truoctran 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 traCác ràng buộc, làm cho nó chậm so với việc cắt tỉa soi kèo bóng đá truoctran, đô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 soi kèo bóng đá truoctran được khai báo, ngoài giới hạn soi kèo bóng đá truoctran bên trong của chúng, loại trừ có thể tạo ra các soi kèo bóng đá truoctran bổ sung từ kế hoạch truy vấn..

cài đặt mặc định (và được đề xuất) củakhông phảitrênNorTẮT, nhưng một cài đặt trung gian được gọi làsoi kèo bóng đá truoctran, 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 soi kèo bóng đá truoctran kế thừa. ThetrênCài đặt khiến người lập kế hoạch kiểm traKiể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 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 soi kèo bóng đá truoctran, 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ấnWHEREmệ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_timestampKhông thể được tối ưu hóa, vì người lập kế hoạch không thể biết soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran đơ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 để soi kèo bóng đá truoctran danh sách hoặc kiểm tra phạm vi đơn giản để soi kèo bóng đá truoctran phạm vi, như được minh họa trong các ví dụ trước.

  • Tất cả các ràng buộc trên 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, soi kèo bóng đá truoctran 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;

5.11.6.Thực tiễn tốt nhất cho soi kèo bóng đá truoctran khai báo

Việc lựa chọn cách soi kèo bóng đá truoctran bảng nên được thực hiện cẩn thận, vì hiệu suất của lập 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 soi kèo bóng đá truoctran dữ liệu của mình. Thường thì lựa chọn tốt nhất sẽ là soi kèo bóng đá truoctran theo cột hoặc tập hợp các cột thường xuất hiện nhất trongWHERECác điều khoản của các truy vấn được thực thi trên bảng được soi kèo bóng đá truoctran.WHERECác mệnh đề tương thích với các ràng buộc ràng buộc soi kèo bóng đá truoctran có thể được sử dụng để cắt tỉa các soi kèo bóng đá truoctran 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ínhhoặc Ađộc đáorà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 soi kèo bóng đá truoctran của bạn.

Chọn số lượng soi kèo bóng đá truoctran 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ó đủ soi kèo bóng đá truoctran 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.Hashvà chọn số lượng soi kèo bóng đá truoctran hợp lý thay vì cố gắng soi kèo bóng đá truoctran theoListVà hy vọng rằng số lượng khách hàng không tăng vượt quá mức thực tế để soi kèo bóng đá truoctran dữ liệu theo.

soi kèo bóng đá truoctran phụ có thể hữu ích để phân chia thêm các soi kèo bóng đá truoctran dự kiến ​​sẽ trở nên lớn hơn các soi kèo bóng đá truoctran khác. Một tùy chọn khác là sử dụng soi kèo bóng đá truoctran phạm vi với nhiều cột trong khóa soi kèo bóng đá truoctran.

Điều quan trọng là phải xem xét chi phí soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran với tới vài nghìn soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran.

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 soi kèo bóng đá truoctran 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.

Gửi hiệu chỉnh

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 phù hợpMẫu nàyĐể báo cáo vấn đề tài liệu.