PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để lưu trữ hàng triệu bản ghi thống kê một cách hiệu quả?

Con số này không cao như bạn nghĩ. Trong công việc hiện tại, chúng tôi lưu trữ dữ liệu số liệu cho các trang web và tổng số hàng chúng tôi có cao hơn nhiều. Và trong công việc trước đây, tôi đã làm việc với cơ sở dữ liệu pg thu thập số liệu từ mạng di động và nó thu thập ~ 2 tỷ bản ghi mỗi ngày. Vì vậy, đừng sợ hàng tỷ bản ghi.

Bạn chắc chắn sẽ cần phân vùng dữ liệu - hầu hết có thể là theo ngày. Với lượng dữ liệu này, bạn có thể thấy các chỉ mục khá vô dụng. Tùy thuộc vào mặt phẳng mà bạn sẽ thấy trong EXPLAIN đầu ra lệnh. Ví dụ:ứng dụng telco hoàn toàn không sử dụng bất kỳ chỉ mục nào vì chúng sẽ chỉ làm chậm toàn bộ động cơ.

Một câu hỏi khác là bạn sẽ cần phản hồi nhanh như thế nào cho các truy vấn. Và các bước nào về mức độ chi tiết (tổng số giờ / ngày / tuần, v.v.) cho các truy vấn mà bạn sẽ cho phép người dùng. Bạn thậm chí có thể cần thực hiện một số tổng hợp để biết chi tiết như tuần hoặc tháng hoặc quý.

Bổ sung:

~ 2 tỷ bản ghi mỗi ngày trong ứng dụng viễn thông đó chiếm ~ 290GB mỗi ngày. Và nó có nghĩa là chèn ~ 23000 bản ghi mỗi giây bằng cách sử dụng chèn hàng loạt với lệnh COPY. Mỗi số lượng lớn là vài nghìn bản ghi. Dữ liệu thô được phân vùng theo phút. Để tránh sự chờ đợi của đĩa, db có 4 không gian bảng trên 4 đĩa / mảng khác nhau và các phân vùng đã được phân phối trên chúng. PostreSQL đã có thể xử lý tất cả mà không gặp bất kỳ vấn đề nào. Vì vậy, bạn cũng nên suy nghĩ về cấu hình HW thích hợp.

Ý tưởng tốt cũng là di chuyển thư mục pg_xlog sang đĩa hoặc mảng riêng biệt. Không chỉ có hệ thống tập tin khác nhau. Tất cả phải là CTNH riêng biệt. Ổ cứng SSD tôi chỉ có thể đề xuất trong các mảng có kiểm tra lỗi thích hợp. Gần đây, chúng tôi gặp sự cố với cơ sở dữ liệu bị hỏng trên một SSD.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHỌN hoặc CHÈN một hàng trong một lệnh

  2. Khai báo biến kiểu kết hợp trong PostgreSQL bằng cách sử dụng% TYPE

  3. Truy vấn phù hợp với thẻ chuỗi

  4. Truy vấn SQL để khớp một trong nhiều chuỗi

  5. Lỗi:phải là chủ sở hữu của cơ sở dữ liệu