Postgresql 7.4.30 Tài liệu | ||||
---|---|---|---|---|
prev | Backward nhanh | Chuyển tiếp nhanh | Tiếp theo |
tỷ lệ kèo bóng đá tối nay truy vấn có thể bị ảnh hưởng bởi nhiều thứ. Một số những điều này có thể được người dùng thao túng, trong khi những người khác là cơ bản cho thiết kế cơ bản của hệ thống. Chương này cung cấp một số gợi ý về sự hiểu biết và điều chỉnhPostgreSQLtỷ lệ kèo bóng đá tối nay.
PostgreSQLnghĩ ra Atỷ lệ kèo bóng đá tối nay truy vấnĐối với mỗi truy vấn nó được đưa ra. Chọn đúng kế hoạch để phù hợp với cấu trúc truy vấn và Thuộc tính của dữ liệu là hoàn toàn quan trọng cho tốt tỷ lệ kèo bóng đá tối nay. Bạn có thể sử dụngGiải thíchLệnh để xem kế hoạch truy vấn nào mà hệ thống tạo ra cho bất kỳ truy vấn. Kế hoạch đọc là tỷ lệ kèo bóng đá tối nay nghệ thuật xứng đáng Hướng dẫn, điều này không phải là; Nhưng đây là tỷ lệ kèo bóng đá tối nay số cơ bản thông tin.
Các số hiện được trích dẫn bởiGiải thích13108_13115
Chi phí khởi động ước tính (thời gian dành trước khi đầu ra Quét có thể bắt đầu, ví dụ: thời gian để sắp xếp theo tỷ lệ kèo bóng đá tối nay loại nút.)
Tổng chi phí ước tính (nếu tất cả các tỷ lệ kèo bóng đá tối nay được truy xuất, mà họ có thể không phải là: một truy vấn vớiGiới hạnmệnh đề sẽ ngừng thanh toán tổng chi phí, ví dụ.)
Số lượng tỷ lệ kèo bóng đá tối nay ước tính đầu ra của nút kế hoạch này (Một lần nữa, chỉ khi được thực hiện để hoàn thành)
chiều rộng trung bình ước tính (tính bằng byte) của đầu ra tỷ lệ kèo bóng đá tối nay Kế hoạch này nút
Chi phí được đo bằng đơn vị của trang đĩa. (CPU Ước tính nỗ lực được chuyển đổi thành các đơn vị disk-trang bằng cách sử dụng tỷ lệ kèo bóng đá tối nay số Các yếu tố fudge khá tùy tiện. Nếu bạn muốn thử nghiệm với Những yếu tố này, xem danh sách cấu hình thời gian chạy tham số trongPhần 16.4.2.)
Điều quan trọng cần lưu ý là chi phí của một nút cấp trên Bao gồm chi phí của tất cả các nút con của nó. Nó cũng quan trọng để nhận ra rằng chi phí chỉ phản ánh những điều mà Người lập kế hoạch/tối ưu hóa quan tâm. Đặc biệt, chi phí không xem xét thời gian truyền các tỷ lệ kèo bóng đá tối nay kết quả truyền đến Frontend, có thể là một yếu tố chiếm ưu thế trong thời gian trôi qua; Nhưng người lập kế hoạch bỏ qua nó bởi vì nó không thể Thay đổi nó bằng cách thay đổi kế hoạch. (Mọi kế hoạch chính xác sẽ xuất hiện cùng một tỷ lệ kèo bóng đá tối nay, chúng tôi tin tưởng.)
Đầu ra tỷ lệ kèo bóng đá tối nay có một chút khó khăn vì nó làkhôngSố lượng tỷ lệ kèo bóng đá tối nay được xử lý/quét bởi truy vấn, nó thường ít hơn, phản ánh độ chọn lọc ước tính của bất kỳWHERE-Chông điều kiện đang được áp dụng Tại nút này. Lý tưởng nhất là ước tính các tỷ lệ kèo bóng đá tối nay cấp cao nhất sẽ xấp xỉ số lượng tỷ lệ kèo bóng đá tối nay thực sự được trả lại, cập nhật hoặc bị xóa bởi truy vấn.
Đây là tỷ lệ kèo bóng đá tối nay số ví dụ (sử dụng cơ sở dữ liệu kiểm tra hồi quy Sau aPhân tích chân khôngvà 7.3 nguồn phát triển):
15380_15572
Điều này là đơn giản như nó được. Nếu bạn làm
15676_15727
Bạn sẽ tìm ra rằngTENK1
có 233 trang đĩa và 10000 tỷ lệ kèo bóng đá tối nay. Vì vậy, chi phí được ước tính tại
233 trang đọc, được định nghĩa là chi phí 1.0 apiece, cộng với 10000 *cpu_tuple_costhiện là 0,01
(thửHiển thị CPU_Tuple_Cost).
Bây giờ hãy sửa đổi truy vấn để thêmWHEREđiều kiện:
16186_16431
Ước tính các tỷ lệ kèo bóng đá tối nay đầu ra đã giảm vìWHEREmệnh đề. Tuy nhiên, việc quét sẽ vẫn phải truy cập tất cả 10000 tỷ lệ kèo bóng đá tối nay, vì vậy chi phí không giảm; trong thực tế, nó đã tăng lên một chút để phản ánh thêm Thời gian CPU dành để kiểm traWHEREđiều kiện.
Số lượng tỷ lệ kèo bóng đá tối nay thực tế mà truy vấn này sẽ chọn là 1000, Nhưng ước tính chỉ là gần đúng. Nếu bạn cố gắng sao chép Thử nghiệm này, bạn có thể sẽ nhận được một chút khác biệt ước lượng; Hơn nữa, nó sẽ thay đổi sau mỗiPhân tíchlệnh, vì các số liệu thống kê được tạo ra quaPhân tíchđược lấy từ tỷ lệ kèo bóng đá tối nay ngẫu nhiên hóa mẫu của bảng.
Sửa đổi truy vấn để hạn chế điều kiện nhiều hơn:
Giải thích Chọn * từ Tenk1 trong đó độc đáo1 <50; Kế hoạch truy vấn ----------------------------------------------------------------------------------- Quét chỉ mục bằng TENK1_UNIQUE1 trên TENK1 (chi phí = 0,00..179,33 tỷ lệ kèo bóng đá tối nay = 49 chiều rộng = 148) Chỉ mục Cond: (độc đáo1 <50)
Và bạn sẽ thấy rằng nếu chúng ta tạo raWHEREĐiều kiện đủ chọn lọc, người lập kế hoạch cuối cùng sẽ quyết định rằng quét chỉ mục rẻ hơn Quét tuần tự. Kế hoạch này sẽ chỉ phải truy cập 50 tỷ lệ kèo bóng đá tối nay bởi vì chỉ số, vì vậy nó thắng mặc dù thực tế là mỗi Fetch cá nhân đắt hơn việc đọc toàn bộ đĩa trang tuần tự.
Thêm điều kiện khác vàoWHEREmệnh đề:
18113_18462
Điều kiện được thêm vàoStringU1 = 'xxx'Giảm ước tính tỷ lệ kèo bóng đá tối nay đầu ra, nhưng không phải là chi phí Bởi vì chúng tôi vẫn phải truy cập cùng một bộ tỷ lệ kèo bóng đá tối nay. Để ý rằngStringU118702_18793độc đáo1cột). Thay vào đó nó được áp dụng như một bộ lọc trên các tỷ lệ kèo bóng đá tối nay được lấy bởi chỉ mục. Do đó chi phí thực sự đã tăng lên một chút để phản ánh thêm điều này kiểm tra.
Hãy thử tham gia hai bảng, sử dụng các cột chúng tôi đã Thảo luận:
19120_19736
Trong tham gia vòng lặp lồng nhau này, quét bên ngoài là cùng một chỉ số quét chúng tôi đã có trong ví dụ trước đây, và vì vậy chi phí và tỷ lệ kèo bóng đá tối nay của nó Đếm là giống nhau bởi vì chúng tôi đang áp dụngở đâumệnh đềĐộc đáo1 < 50Tại nút đó. Thet1.Unique2 = t2.Unique2Điều khoản chưa liên quan, vì vậy nó không ảnh hưởng đến số lượng tỷ lệ kèo bóng đá tối nay của quét bên ngoài. Đối với quét bên trong,độc đáo2Giá trị của dòng điện tỷ lệ kèo bóng đá tối nay quét ngoài được cắm vào quét chỉ số bên trong để sản xuất một điều kiện chỉ mục nhưt2.unique2 =hằng số. Vì vậy, chúng tôi nhận được tỷ lệ kèo bóng đá tối nay quét bên trong tương tự và chi phí mà chúng ta sẽ nhận được, nói,Giải thích Chọn * từ Tenk2 trong đó độc đáo2 = 4220582_20801
Trong ví dụ này, số lượng tỷ lệ kèo bóng đá tối nay đầu ra của tham gia giống như sản phẩm của hai tỷ lệ kèo bóng đá tối nay quét, nhưng điều đó không đúng Nói chung, bởi vì nói chung bạn có thể cóWHERECác điều khoản đề cập đến cả hai bảng và vì vậy chỉ có thể được áp dụng tại điểm nối, không phải là đầu vào quét. Ví dụ: nếu chúng ta đã thêmTrong đó ... Và t1.hundred <t2.hundred, sẽ làm giảm Số lượng tỷ lệ kèo bóng đá tối nay đầu ra của nút nối, nhưng không thay đổi đầu vào quét.
tỷ lệ kèo bóng đá tối nay cách để xem xét các kế hoạch biến thể là buộc người lập kế hoạch phải coi thường bất kỳ chiến lược nào mà nó nghĩ là người chiến thắng, sử dụng Các cờ Bật/Tắt cho từng loại kế hoạch. (Đây là tỷ lệ kèo bóng đá tối nay thô công cụ, nhưng hữu ích. Xem thêmPhần 13.3.)
Đặt enable_nestloop = off; Giải thích Chọn * từ Tenk1 T1, Tenk2 T2 trong đó T1.Unique1 <50 và T1.Unique2 = T2.unique2; Kế hoạch truy vấn -------------------------------------------------------------------------------------- Hash tham gia (chi phí = 179,45..563.06 tỷ lệ kèo bóng đá tối nay = 49 chiều rộng = 296) Hash Cond: ("Outer" .Unique2 = "bên trong" .Unique2) - SEQ SCAN trên TENK2 T2 (chi phí = 0,00..333.00 tỷ lệ kèo bóng đá tối nay = 10000 chiều rộng = 148) - băm (chi phí = 179,33..179,33 tỷ lệ kèo bóng đá tối nay = 49 chiều rộng = 148) - Quét chỉ mục bằng TENK1_UNIQUE1 trên TENK1 T1 (chi phí = 0,00..179,33 tỷ lệ kèo bóng đá tối nay = 49 chiều rộng = 148) Chỉ mục Cond: (độc đáo1 <50)
Kế hoạch này đề xuất trích xuất 50 tỷ lệ kèo bóng đá tối nay thú vị củaTENK1
Sử dụng cùng tỷ lệ kèo bóng đá tối nay chỉ mục cũ
quét, cất chúng vào bảng băm trong bộ nhớ, và sau đó thực hiện
Quét tuần tựTENK2
,,
thăm dò vào bảng băm cho các trận đấu có thể củat1.Unique2 = t2.unique2tại mỗitenk2
tỷ lệ kèo bóng đá tối nay. Chi phí để đọcTENK1
22792_22933Tenk2
. Tổng ước tính thời gian cho sự tham gia
cũng bao gồm tỷ lệ kèo bóng đá tối nay khoản phí khổng lồ cho thời gian CPU để thăm dò băm
Bảng 10000 lần. Tuy nhiên, lưu ý rằng chúng tôi làkhôngSạc 10000 lần 179,33;
Thiết lập bảng băm chỉ được thực hiện tỷ lệ kèo bóng đá tối nay lần trong loại kế hoạch này.
23283_23371Giải thích Phân tích. Lệnh này thực sự thực hiện truy vấn và sau đó hiển thị thời gian chạy thực sự tích lũy trong mỗi kế hoạch nút cùng với cùng tỷ lệ kèo bóng đá tối nay chi phí ước tính mà tỷ lệ kèo bóng đá tối nay đơn giảnGiải thíchHiển thị. Ví dụ, chúng tôi có thể Nhận kết quả như thế này:
Giải thích Phân tích Chọn * Từ Tenk1 T1, Tenk2 T2 trong đó T1.Unique1 <50 và T1.Unique2 = T2.unique2; Kế hoạch truy vấn ----------------------------------------------------------------------------------- Vòng lặp lồng nhau (chi phí = 0,00..327.02 tỷ lệ kèo bóng đá tối nay = 49 chiều rộng = 296) (Thời gian thực tế = 1.181..29.822 tỷ lệ kèo bóng đá tối nay = 50 vòng = 1) - Quét chỉ mục bằng TENK1_UNIQUE1 trên TENK1 T1 (chi phí = 0,00..179,33 tỷ lệ kèo bóng đá tối nay = 49 chiều rộng = 148) (Thời gian thực tế = 0.630..8.917 tỷ lệ kèo bóng đá tối nay = 50 vòng = 1) Index Cond: (độc đáo1 <50) - Quét chỉ mục bằng TENK2_UNIQUE2 trên TENK2 T2 (chi phí = 0,00..3,01 tỷ lệ kèo bóng đá tối nay = 1 chiều rộng = 148) (Thời gian thực tế = 0,295..0.324 tỷ lệ kèo bóng đá tối nay = 1 vòng = 50) INDEX cond: ("Buter" .Unique2 = t2.Unique2) Tổng thời gian chạy: 31.604 ms
Lưu ý rằng"Thời gian thực tế"Giá trị ở mili giây của thời gian thực, trong khi"chi phí"Ước tính được thể hiện trong đơn vị tùy ý của đĩa giả; Vì vậy, họ không có khả năng phù hợp hướng lên. Điều cần chú ý là các tỷ lệ.
Trong một số gói truy vấn, có thể cho một nút con thực hiện nhiều hơn một lần. Ví dụ: quét chỉ mục bên trong là được thực hiện một lần trên mỗi tỷ lệ kèo bóng đá tối nay bên ngoài trong kế hoạch vòng lặp lồng trên. TRONG Những trường hợp như vậy,"Loops"Giá trị báo cáo tổng số lần thực thi của nút và Giá trị thời gian và tỷ lệ kèo bóng đá tối nay thực tế được hiển thị là trung bình trên mỗi lần thực hiện. Điều này được thực hiện để làm cho các con số có thể so sánh với cách Các ước tính chi phí được hiển thị. Nhân với"Loops"Giá trị để có được tổng thời gian thực sự chi tiêu trong nút.
TheTổng thời gian chạyhiển thị bởiGiải thích Phân tíchBao gồm người thực thi thời gian khởi động và tắt máy, cũng như thời gian xử lý các tỷ lệ kèo bóng đá tối nay kết quả. Nó không bao gồm phân tích cú pháp, viết lại hoặc thời gian lập kế hoạch. Cho aChọnTruy vấn, The Tổng thời gian chạy thường sẽ lớn hơn tỷ lệ kèo bóng đá tối nay chút so với Tổng thời gian báo cáo cho nút kế hoạch cấp cao nhất. VìChèn, Cập nhậtvàXóalệnh, tổng thời gian chạy có thể lớn hơn đáng kể, bởi vì nó bao gồm thời gian xử lý các tỷ lệ kèo bóng đá tối nay kết quả. Trong các lệnh này, thời gian cho nút kế hoạch tỷ lệ kèo bóng đá tối nay đầu về cơ bản là thời gian dành cho máy tính tỷ lệ kèo bóng đá tối nay và/hoặc định vị các tỷ lệ kèo bóng đá tối nay cũ, nhưng nó không bao gồm Thời gian dành cho việc thay đổi.
Điều đáng chú ý làGiải thíchKết quả không nên ngoại suy cho các tình huống khác ngoài tỷ lệ kèo bóng đá tối nay bạn thực sự đang thử nghiệm; Ví dụ: kết quả trên tỷ lệ kèo bóng đá tối nay Bàn cỡ đồ chơi không thể được giả định để áp dụng cho các bảng lớn. Các Ước tính chi phí của kế hoạch không phải là tuyến tính và vì vậy nó có thể tốt Chọn tỷ lệ kèo bóng đá tối nay kế hoạch khác cho tỷ lệ kèo bóng đá tối nay bảng lớn hơn hoặc nhỏ hơn. MỘT Ví dụ cực đoan là trên tỷ lệ kèo bóng đá tối nay bảng chỉ chiếm tỷ lệ kèo bóng đá tối nay đĩa trang, bạn gần như luôn luôn nhận được tỷ lệ kèo bóng đá tối nay kế hoạch quét tuần tự cho dù Chỉ mục có sẵn hay không. Người lập kế hoạch nhận ra rằng nó sẽ đọc tỷ lệ kèo bóng đá tối nay trang tỷ lệ kèo bóng đá tối nay đĩa để xử lý bảng trong bất kỳ trường hợp, do đó không có giá trị trong việc mở rộng trang bổ sung để đọc nhìn vào tỷ lệ kèo bóng đá tối nay chỉ mục.
Prev | 27503_27509 | Tiếp theo |
khóa và Chỉ mục | UP | Thống kê được sử dụng bởi người lập tỷ lệ kèo bóng đá tối nay |