Postgresql 8.1.23 Tài liệu | ||||
---|---|---|---|---|
prev | Backward nhanh | Chuyển tiếp nhanh | Tiếp theo |
kèo chấp bóng đá hôm 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ỉnh12718_12730kèo chấp bóng đá hôm nay.
PostgreSQLnghĩ ra Akèo chấp bóng đá hôm 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 kèo chấp bóng đá hôm nay, vì vậy hệ thống bao gồm một phức tạpPlannerĐiều đó cố gắng chọn các kèo chấp bóng đá hôm nay tốt. Bạn có thể sử dụngGiải thích13428_13627
Cấu trúc của kế hoạch truy vấn là kèo chấp bóng đá hôm nay câykèo chấp bóng đá hôm nay nút. Các nút ở cấp dưới là bảng Các nút quét: Chúng trả lại các hàng thô từ kèo chấp bóng đá hôm nay bảng. Có Các loại nút quét khác nhau để truy cập bảng khác nhau Phương pháp: Quét tuần tự, quét chỉ mục và quét chỉ số bitmap. Nếu truy vấn yêu cầu tham gia, tập hợp, sắp xếp hoặc khác hoạt động trên các hàng thô, sau đó sẽ có các nút bổ sung"trên đỉnh"Các nút quét để thực hiện những hoạt động này. kèo chấp bóng đá hôm nay lần nữa, thường có nhiều hơn kèo chấp bóng đá hôm nay cách có thể thực hiện các hoạt động này, vì vậy các loại nút khác nhau Có thể xuất hiện ở đây quá. Đầu ra củaGiải thíchCó kèo chấp bóng đá hôm nay dòng cho mỗi nút trong kế hoạch cây, hiển thị loại nút cơ bản cộng với ước tính chi phí Người lập kế hoạch thực hiện để thực hiện nút kế hoạch đó. Đầu tiên dòng (nút trên cùng) có tổng chi phí thực thi ước tính cho kế hoạch; Đó là con số mà người lập kế hoạch tìm kiếm giảm thiểu.
Đây là kèo chấp bóng đá hôm nay ví dụ tầm thường, chỉ để hiển thị những gì đầu ra Có vẻ như.[1]
Giải thích chọn * từ TENK1; kèo chấp bóng đá hôm nay truy vấn --------------------------------------------------------------------- SEQ SCAN trên TENK1 (chi phí = 0,00..458.00 hàng = 10000 chiều rộng = 244)
kèo chấp bóng đá hôm nay số được trích dẫn bởiGiải thíchlà:
15194_15326
Tổng chi phí ước tính (nếu tất cả các hàng được truy xuất, mà họ có thể không phải là: ví dụ, kèo chấp bóng đá hôm nay truy vấn vớigiới hạnmệnh đề sẽ dừng lại Trả tổng chi phí củaGiới hạnnút đầu vào của nút kèo chấp bóng đá hôm nay.)
Số lượng hàng ước tính đầu ra bởi nút kế hoạch này (kèo chấp bóng đá hôm nay 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 hàng kèo chấp bóng đá hôm nay này nút
Chi phí được đo bằng đơn vị của trang đĩa Fetches; cái đó theo định nghĩa, 1.0 bằng kèo chấp bóng đá hôm nay trang đĩa tuần tự, theo định nghĩa. (Ước tính nỗ lực của CPU cũng được thực hiện; chúng được chuyển đổi thành Các đơn vị Disk-PAGE sử dụng kèo chấp bóng đá hôm nay số yếu tố fudge khá độc đoán. Nếu như Bạn muốn thử nghiệm các yếu tố này, xem danh sách tham số cấu hình thời gian chạy trongPhần 17.6.2.)
16399_16926
Đầu ra hàng có kèo chấp bóng đá hôm nay chút khó khăn vì nó làkhôngSố lượng hàng được xử lý hoặc được quét bởi nút kèo chấp bóng đá hôm nay. Nó thường ít hơn, phản ánh tí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. Lý tưởng nhất là ước tính các kèo chấp bóng đá hôm nay cấp cao nhất sẽ xấp xỉ số lượng kèo chấp bóng đá hôm nay thực sự được trả lại, cập nhật hoặc bị xóa bởi truy vấn.
Trở về ví dụ của chúng tôi:
Giải thích Chọn * từ Tenk1; kèo chấp bóng đá hôm nay truy vấn --------------------------------------------------------------------- SEQ SCAN trên TENK1 (chi phí = 0,00..458.00 hàng = 10000 chiều rộng = 244)
Điều này là đơn giản như nó được. Nếu bạn làm
17760_17829
Bạn sẽ tìm ra rằngTENK1
có 358 trang đĩa và 10000 kèo chấp bóng đá hôm nay. Vì vậy, chi phí được ước tính tại
358 trang đọc, được định nghĩa là chi phí 1.0 apiece, cộng với 10000 *cpu_tuple_costthường 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:
18331_18576
Lưu ý rằngGiải thíchđầu ra Hiển thịWHEREĐiều khoản đang được áp dụng như kèo chấp bóng đá hôm nay"Bộ lọc"18755_18963WHEREmệnh đề. Tuy nhiên, việc quét vẫn sẽ có Để truy cập tất cả 10000 hàng, vì vậy chi phí đã không giảm; Trên thực tế Nó đã tăng lên kèo chấp bóng đá hôm nay chút để phản ánh thêm thời gian CPU Kiểm traở đâuđiều kiện.
Số lượng hàng thực tế mà truy vấn này sẽ chọn là 7000, Nhưng ước tính hàng chỉ là gần đúng. Nếu bạn cố gắng trùng lặp thử nghiệm này, bạn có thể sẽ nhận được kèo chấp bóng đá hôm nay chút Ước tính khác nhau; Hơn nữa, nó sẽ thay đổi sau mỗiPhân tíchlệnh, vì Thống kê được sản xuất bởiPhân tíchlà được lấy từ kèo chấp bóng đá hôm nay mẫu ngẫu nhiên của bảng.
Bây giờ, hãy làm cho điều kiện hạn chế hơn:
19749_20153
Ở đây người lập kế hoạch đã quyết định sử dụng kế hoạch hai bước: The nút kế hoạch dưới cùng truy cập kèo chấp bóng đá hôm nay chỉ mục để tìm vị trí của hàng phù hợp với điều kiện chỉ mục, và sau đó là nút kế hoạch trên Trên thực tế, lấy những hàng từ chính bàn. Tìm nạp các hàng riêng biệt hơn nhiều so với tuần tự đọc chúng, nhưng vì không phải tất cả các trang của bảng đều có Để được truy cập, điều này vẫn rẻ hơn so với quét tuần tự. (Lý do sử dụng hai cấp kế hoạch là kế hoạch trên nút sắp xếp các vị trí hàng được xác định bởi chỉ mục thành thứ tự vật lý trước khi đọc chúng, để giảm thiểu chi phí của các tìm nạp riêng biệt. The"Bitmap"được đề cập trong tên nút là cơ chế sắp xếp.)
NếuWHEREĐiều kiện được chọn lọc đủ, người lập kèo chấp bóng đá hôm nay có thể chuyển sang"đơn giản"kèo chấp bóng đá hôm nay quét chỉ mục:
Giải thích Chọn * từ Tenk1 trong đó độc đáo1 <3; kèo chấp bóng đá hôm nay truy vấn ------------------------------------------------------------------------------------------ Quét chỉ mục bằng TENK1_UNIQUE1 trên TENK1 (chi phí = 0,00..10.00 hàng = 2 chiều rộng = 244) Chỉ mục Cond: (độc đáo1 <3)
Trong trường hợp này, các hàng bảng được tìm nạp theo thứ tự chỉ mục, điều này làm cho chúng thậm chí còn đắt hơn để đọc, nhưng có như vậy Rất ít chi phí bổ sung để sắp xếp các vị trí hàng không đáng giá. Bạn thường thấy loại kế hoạch này cho các truy vấn Chỉ tìm kiếm kèo chấp bóng đá hôm nay hàng duy nhất và cho các truy vấn yêu cầuĐặt kèo chấp bóng đá hôm nay bởiĐiều kiện phù hợp với Đơn kèo chấp bóng đá hôm nay chỉ mục.
Thêm điều kiện khác vàoWHEREmệnh đề:
Giải thích Chọn * từ TENK1 trong đó độc đáo1 <3 và StringU1 = 'xxx'; kèo chấp bóng đá hôm nay truy vấn ------------------------------------------------------------------------------------------ Quét chỉ mục bằng TENK1_UNIQUE1 trên TENK1 (chi phí = 0,00..10,01 hàng = 1 chiều rộng = 244) Index Cond: (độc đáo1 <3) Bộ lọc: (StringU1 = 'xxx' :: name)
Điều kiện được thêm vàoStringU1 = 'xxx'Giảm ước tính hàng đầ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 kèo chấp bóng đá hôm nay bộ hàng. Để ý rằngStringU1mệnh đề không thể được áp dụng làm điều kiện chỉ mục (vì chỉ mục này chỉ trênđộc đáo1cột). Thay vào đó nó được áp dụng như kèo chấp bóng đá hôm nay bộ lọc trên các hàng được lấy bởi chỉ mục. Do đó chi phí thực sự đã tăng lên kèo chấp bóng đá hôm nay chút để phản ánh thêm điều này kiểm tra.
Nếu có các chỉ mục trên kèo chấp bóng đá hôm nay số cột được sử dụng trongWHERE, Người lập kèo chấp bóng đá hôm nay có thể chọn sử dụng và hoặc hoặc Hoặc kết hợp các chỉ mục:
23072_23737
Nhưng điều này yêu cầu truy cập cả hai chỉ mục, vì vậy nó không nhất thiết là kèo chấp bóng đá hôm nay chiến thắng so với chỉ sử dụng kèo chấp bóng đá hôm nay chỉ số và điều trị điều kiện khác như kèo chấp bóng đá hôm nay bộ lọc. Nếu bạn thay đổi phạm vi tham gia bạn sẽ thấy kế hoạch thay đổi tương ứng.
Hãy thử tham gia hai bảng, sử dụng kèo chấp bóng đá hôm nay cột chúng tôi đã Thảo luận:
24109_24793
Trong tham gia vòng lặp lồng nhau này, lần quét bên ngoài là cùng kèo chấp bóng đá hôm nay bitmap Quét chỉ mục mà chúng tôi đã thấy trước đó, và vì vậy chi phí và số lượng hàng của nó là giống nhau bởi vì chúng tôi đang áp dụngWHEREmệnh đềĐộc đáo1 < 100Tại nút đó. Thet1.Unique2 = t2.Unique225131_25244độc đáo2Giá trị của dòng điện Hàng quét ngoài được cắm vào quét chỉ số bên trong để sản xuất kèo chấp bóng đá hôm nay điều kiện chỉ mục nhưT2.Unique2 =hằng số. Vì vậy, chúng tôi nhận được kèo chấp bóng đá hôm 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 = 4225628_25848
Trong ví dụ này, số lượng kèo chấp bóng đá hôm nay đầu ra của tham gia giống như sản phẩm của hai kèo chấp bóng đá hôm nay quét, nhưng điều đó không đúng Nói chung, bởi vì nói chung bạn có thể cóWHEREkèo chấp bóng đá hôm nay đ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, điều đó sẽ làm giảm Số lượng kèo chấp bóng đá hôm nay đầu ra của nút nối, nhưng không thay đổi đầu vào quét.
kèo chấp bóng đá hôm 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/Vô hiệu hóa được mô tả trongPhần 17.6.1. (Đây là kèo chấp bóng đá hôm nay công cụ thô, 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 <100 và T1.Unique2 = T2.unique2; kèo chấp bóng đá hôm nay truy vấn ------------------------------------------------------------------------------------------------------ Băm tham gia (chi phí = 232,61..741,67 hàng = 106 chiều rộng = 488) Hash Cond: ("Outer" .Unique2 = "bên trong" .Unique2) - SEQ SCAN trên TENK2 T2 (chi phí = 0,00..458.00 hàng = 10000 chiều rộng = 244) - Hash (chi phí = 232,35..232,35 hàng = 106 chiều rộng = 244) - Quét heap bitmap trên tenk1 t1 (chi phí = 2.37..232,35 hàng = 106 chiều rộng = 244) RECHECK cond: (độc đáo1 <100) - Quét chỉ mục bitmap trên tenk1_unique1 (chi phí = 0,00..2,37 hàng = 106 chiều rộng = 0) Index Cond: (độc đáo1 <100)
27576_27640TENK1
Sử dụng cùng kèo chấp bóng đá hôm 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 kèo chấp bóng đá hôm nay trận đấu có thể củat1.Unique2 = t2.unique2Tại mỗiTENK2
kèo chấp bóng đá hôm nay. Chi phí để đọcTenk1
và thiết lập bảng băm hoàn toàn
Chi phí khởi động cho tham gia băm, vì chúng tôi sẽ không nhận được bất kỳ kèo chấp bóng đá hôm nay nào
ra ngoài cho đến khi chúng ta có thể bắt đầu đọctenk2
. Tổng ước tính thời gian cho sự tham gia
cũng bao gồm kèo chấp bóng đá hôm 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 232,35;
Thiết lập bảng băm chỉ được thực hiện kèo chấp bóng đá hôm nay lần trong loại kế hoạch này.
Có thể kiểm tra độ chính xác của người lập kèo chấp bóng đá hôm nay Chi phí ước tính bằng cách sử dụngGiả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 kèo chấp bóng đá hôm nay chi phí ước tính mà kèo chấp bóng đá hôm 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:
28964_29925
Lưu ý rằng"Thời gian thực tế"kèo chấp bóng đá hôm nay 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à kèo chấp bóng đá hôm nay tỷ lệ.
Trong kèo chấp bóng đá hôm nay số gói truy vấn, có thể cho kèo chấp bóng đá hôm nay nút con thực hiện nhiều hơn kèo chấp bóng đá hôm nay lần. Ví dụ: quét chỉ mục bên trong là được thực hiện kèo chấp bóng đá hôm nay lần trên mỗi hàng 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à kèo chấp bóng đá hôm 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 hàng 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èo chấp bóng đá hôm nay. Cho aChọnTruy vấn, The Tổng thời gian chạy thường sẽ lớn hơn kèo chấp bóng đá hôm 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óa31405_31859
Đ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 kèo chấp bóng đá hôm nay bạn thực sự đang thử nghiệm; Ví dụ: kết quả trên kèo chấp bóng đá hôm 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 kèo chấp bóng đá hôm nay kế hoạch khác cho kèo chấp bóng đá hôm nay bảng lớn hơn hoặc nhỏ hơn. MỘT Ví dụ cực đoan là trên kèo chấp bóng đá hôm nay bảng chỉ chiếm kèo chấp bóng đá hôm nay đĩa trang, bạn gần như luôn luôn nhận được kèo chấp bóng đá hôm 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 kèo chấp bóng đá hôm nay trang kèo chấp bóng đá hôm 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 kèo chấp bóng đá hôm nay chỉ mục.
[1] |
Ví dụ trong phần này được rút ra từ hồi quy Kiểm tra cơ sở dữ liệu sau khi thực hiệnVACUUM Phân tích, Sử dụng các nguồn phát triển 8.1. Bạn nên được có thể nhận được kết quả tương tự nếu bạn tự mình thử các ví dụ, Nhưng chi phí ước tính và số lượng kèo chấp bóng đá hôm nay của bạn có thể sẽ thay đổi hơi vìPhân tích's Thống kê là kèo chấp bóng đá hôm nay mẫu ngẫu nhiên thay vì chính xác. |
prev | Trang chủ | 33900_33906 |
khóa và Chỉ mục | UP | Thống kê được sử dụng bởi người lập kèo chấp bóng đá hôm nay |