Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / 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 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

39.7. kèo bóng đá pháp so với kích hoạt#

Nhiều điều có thể được thực hiện bằng cách sử dụng trình kèo bóng đá pháp cũng có thể được thực hiện bằng cách sử dụngPostgreSQL11097_11291Không có gìNếu giá trị của cột không xuất hiện trong một bảng khác. Nhưng sau đó dữ liệu được âm thầm vứt bỏ và đó không phải là một ý kiến ​​hay. Nếu kiểm tra các giá trị hợp lệ là bắt buộc và trong trường hợp giá trị không hợp lệ, thông báo lỗi sẽ được tạo, nó phải được thực hiện bằng trình kèo bóng đá pháp.

11609_11749thay vìKích hoạt trên các chế độ xem. Viết các kích hoạt như vậy thường dễ dàng hơn so với các kèo bóng đá pháp viết, đặc biệt nếu cần phải thực hiện logic phức tạp để thực hiện cập nhật.

Đối với những điều có thể được thực hiện bởi cả hai, điều này là tốt nhất phụ thuộc vào việc sử dụng cơ sở dữ liệu. Một kích hoạt được bắn một lần cho mỗi hàng bị ảnh hưởng. Một kèo bóng đá pháp sửa đổi truy vấn hoặc tạo một truy vấn bổ sung. Vì vậy, nếu nhiều hàng bị ảnh hưởng trong một tuyên bố, một kèo bóng đá pháp sẽ phát hành một lệnh bổ sung có thể nhanh hơn một kích hoạt được gọi cho mỗi hàng và phải xác định lại những gì cần làm nhiều lần. Tuy nhiên, phương pháp kích hoạt đơn giản hơn về mặt khái niệm so với cách tiếp cận kèo bóng đá pháp và dễ dàng hơn cho người mới đi đúng.

Ở đây chúng tôi chỉ ra một ví dụ về cách lựa chọn các kèo bóng đá pháp so với các yếu tố kích hoạt diễn ra trong một tình huống. Có hai bảng:

Tạo máy tính bảng (
    Textname HostN, - được lập chỉ mục
    văn bản nhà sản xuất - được lập chỉ mục
);

Tạo phần mềm bảng (
    Văn bản phần mềm, - được lập chỉ mục
    Tên máy chủ - được lập chỉ mục
);

Cả hai bảng đều có hàng ngàn hàng và các chỉ mục trêntên máy chủlà duy nhất. kèo bóng đá pháp hoặc kích hoạt sẽ thực hiện một ràng buộc xóa các hàng khỏiPhần mềmTham chiếu một máy tính đã xóa. Trình kèo bóng đá pháp sẽ sử dụng lệnh này:

Xóa khỏi phần mềm trong đó hostName = $ 1;

Vì kèo bóng đá pháp được gọi cho mỗi hàng riêng lẻ bị xóa khỏimáy tính, nó có thể chuẩn bị và lưu kế hoạch cho lệnh này và vượt quatên máy chủGiá trị trong tham số. kèo bóng đá pháp sẽ được viết là:

Tạo kèo bóng đá pháp máy tính_del như đang xóa vào máy tính
    Xóa khỏi phần mềm trong đó hostName = old.hostName;

Bây giờ chúng ta xem xét các loại xóa khác nhau. Trong trường hợp của A:

Xóa khỏi máy tính trong đó hostname = 'mypc.local.net';

BảngMáy tínhđược quét bởi Index (nhanh) và lệnh do bộ kích hoạt phát hành cũng sẽ sử dụng quét chỉ mục (cũng nhanh). Lệnh bổ sung từ kèo bóng đá pháp sẽ là:

Xóa khỏi phần mềm trong đó máy tính.hostname = 'mypc.local.net'
                       Và phần mềm.hostname = máy tính.hostName;

Vì có các chỉ mục thích hợp được thiết lập, người lập kế hoạch sẽ tạo một kế hoạch

Nestloop
  - Quét chỉ mục bằng comp_hostidx trên máy tính
  - SCAN INDEX bằng Soft_Hostidx trên phần mềm

Vì vậy, sẽ không có nhiều sự khác biệt về tốc độ giữa kích hoạt và thực hiện kèo bóng đá pháp.

kèo bóng đá pháp xóa tiếp theo, chúng tôi muốn loại bỏ tất cả các máy tính 2000 trong đótên máy chủbắt đầu bằng. Có hai lệnh có thể để làm điều đó. Một là:

Xóa khỏi máy tính trong đó tên máy chủ = 'cũ'
                       Và tên máy chủ <'ole'

Lệnh được thêm bởi kèo bóng đá pháp sẽ là:

Xóa khỏi phần mềm trong đó máy tính.
                       Và phần mềm.hostname = máy tính.hostName;

kèo bóng đá pháp kế hoạch

Băm tham gia
  - SEQ Scan trên phần mềm
  - Hash
    - SCAN INDEX bằng comp_hostidx trên máy tính

Lệnh khác có thể là:

Xóa khỏi máy tính trong đó tên máy chủ ~ '^cũ';

Kết quả trong kế hoạch thực hiện sau đây cho lệnh được thêm bởi kèo bóng đá pháp:

15551_15665

Điều này cho thấy rằng người lập kế hoạch không nhận ra rằng trình độ chuyên môn chotên máy chủinMáy tínhcũng có thể được sử dụng để quét chỉ mục trênPhần mềmKhi có nhiều biểu thức đủ điều kiện kết hợp kèo bóng đá pháp, đó là những gì nó làm trong phiên bản biểu thức thông thường của lệnh. Bộ kèo bóng đá pháp sẽ được gọi một lần cho mỗi máy tính cũ 2000 phải bị xóa và điều đó sẽ dẫn đến một chỉ số quét quamáy tínhvà 2000 chỉ số quét quaPhần mềm. Việc thực hiện kèo bóng đá pháp sẽ thực hiện với hai lệnh sử dụng các chỉ mục. Và nó phụ thuộc vào kích thước tổng thể của bảngPhần mềmLiệu kèo bóng đá pháp có còn nhanh hơn trong tình huống quét tuần tự hay không. 2000 Thực thi lệnh từ Trình kích hoạt trên Trình quản lý SPI mất một thời gian, ngay cả khi tất cả các khối chỉ mục sẽ sớm có trong bộ đệm.

Lệnh cuối cùng chúng ta xem là:

16758_16810

Một lần nữa điều này có thể dẫn đến nhiều hàng bị xóa khỏiMáy tính. Vì vậy, kích hoạt sẽ một lần nữa chạy nhiều lệnh thông qua người thực thi. Lệnh được tạo bởi kèo bóng đá pháp sẽ là:

Xóa khỏi phần mềm trong đó máy tính.
                       Và phần mềm.hostname = máy tính.hostName;

Kế hoạch cho lệnh đó sẽ lại là vòng lặp lồng nhau qua hai lần quét chỉ mục, chỉ sử dụng một chỉ mục khác trênmáy tính:

Nestloop
  - Quét chỉ mục bằng comp_manufidx trên máy tính
  - SCAN INDEX bằng Soft_Hostidx trên phần mềm

Trong bất kỳ trường hợp nào, các lệnh bổ sung từ hệ thống kèo bóng đá pháp sẽ độc lập ít nhiều so với số lượng hàng bị ảnh hưởng trong một lệnh.

Tóm tắt là, các kèo bóng đá pháp sẽ chỉ chậm hơn đáng kể so với các yếu tố kích hoạt nếu hành động của họ dẫn đến tham gia lớn và đủ điều kiện tồi tệ, một tình huống mà người lập kế hoạch thất bại.

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ợp Kinh nghiệm của bạn kèo bóng đá pháp tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.