PostgreSQL: Cách nhanh chóng để tìm số hàng của một Bảng

2022-03-17 20:20:22

Nếu một bảng có 5000 hoặc 500000 hoặc 5000000000 bản ghi và yêu cầu là tìm tổng số hàng của bảng, thì hầu hết Nhà phát triển cơ sở dữ liệu luôn thực thi COUNT (*) để nhận số hàng.

Tôi thấy rằng nhiều thành viên trong nhóm của chúng tôi cũng thực thi COUNT (*), nhưng chỉ cần tưởng tượng rằng bảng đó có 5000000000 hàng và COUNT (*) mất nhiều thời gian để nhận được số lượng bản ghi.

Việc đếm các hàng trong một bảng lớn như vậy luôn tạo ra vấn đề về hiệu suất và hoạt động I / O cũng bắt buộc của nó.

Nếu bạn cần số lượng hàng chính xác trong một thời gian nhất định, thì COUNT (*) là bắt buộc.
Nhưng bạn có thể tăng tốc độ này lên đáng kể nếu số lượng không phải chính xác.
Bạn có thể sử dụng bảng siêu dữ liệu hoặc bảng thống kê để tìm số hàng, khá giống với số hàng thực.

Bởi vì bản chất của MVCC, đôi khi bạn có thể tìm thấy sự khác biệt giữa số lượng bản ghi thực tế và số lượng bản ghi của bảng thống kê.

Kiểm soát đồng thời nhiều phiên bản (MVCC) là gì

Bạn có thể dễ dàng tìm thấy số lượng hàng gần như bằng cách sử dụng các bảng thống kê trong vòng 1 giây.

Tôi đã kiểm tra và so sánh hai kết quả trong máy cục bộ của mình với số hàng là 5000000000.

COUNT (*) của tôi trả về một kết quả sau 8 đến 10 phút và cũng chiếm 10% đến 25% CPU và Bộ nhớ.
Sau đó, tôi tìm thấy số hàng từ bảng thống kê và không mất đến một giây.

Nhưng tôi đã tìm thấy sự khác biệt nhỏ giữa cả hai số. Số lượng bảng thống kê cao hơn số lượng thực tế. (Số hàng 12585 lớn hơn) vì MVCC.

Bạn nên định cấu hình tự động hút bụi và phân tích trên bàn.

Tôi thực hiện chân không và phân tích trên bàn, và bây giờ số lượng của tôi giống nhau.

Tôi đề nghị, vui lòng sử dụng bảng thống kê cho số lượng hàng.
Tôi đang cung cấp hai tập lệnh khác nhau để tìm số hàng thô trong PostgreSQL.

Xem thêm:


Chia sẻ: