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

Khi nào sử dụng bảng kế thừa trong PostgreSQL?

Có một số lý do chính cho việc sử dụng kế thừa bảng trong postgres.

Giả sử, chúng tôi có một số bảng cần thiết để thống kê, được tạo và điền vào mỗi tháng:

statistics
    - statistics_2010_04 (inherits statistics)
    - statistics_2010_05 (inherits statistics)

Trong mẫu này, chúng tôi có 2.000.000 hàng trong mỗi bảng. Mỗi bảng có ràng buộc KIỂM TRA để đảm bảo rằng chỉ dữ liệu cho tháng phù hợp mới được lưu trữ trong đó.

Vậy điều gì làm cho tính năng kế thừa trở thành một tính năng thú vị - tại sao việc chia nhỏ dữ liệu lại thú vị?

  • HIỆU SUẤT:Khi chọn dữ liệu, chúng tôi CHỌN * TỪ thống kê TRONG ĐÓ ngày tháng GIỮA x và Y, và Postgres chỉ sử dụng các bảng, nếu nó có ý nghĩa. Ví dụ. CHỌN * TỪ thống kê TẠI ĐÂU ngày GIỮA '2010-04-01' VÀ '2010-04-15' chỉ quét thống kê bảng_2010_04, tất cả các bảng khác sẽ không được chạm vào - nhanh!
  • Kích thước chỉ mục:Chúng tôi không có bảng chất béo lớn có chỉ số chất béo lớn vào ngày cột. Chúng tôi có các bảng nhỏ mỗi tháng, với các chỉ mục nhỏ - đọc nhanh hơn.
  • Bảo trì:Chúng tôi có thể chạy toàn bộ chân không, lập chỉ mục lại, phân cụm trên mỗi bảng tháng mà không cần khóa tất cả dữ liệu khác

Để sử dụng đúng cách kế thừa bảng làm tăng cường hiệu suất, hãy xem hướng dẫn sử dụng postgresql. Bạn cần đặt ràng buộc KIỂM TRA trên mỗi bảng để cho cơ sở dữ liệu biết, dữ liệu của bạn sẽ được tách (phân vùng) trên khóa nào.

Tôi sử dụng nhiều kế thừa bảng, đặc biệt là khi nói đến lưu trữ dữ liệu nhật ký được nhóm theo tháng. Gợi ý:Nếu bạn lưu trữ dữ liệu, dữ liệu này sẽ không bao giờ thay đổi (dữ liệu nhật ký), hãy tạo hoặc lập chỉ mục với CREATE INDEX ON () WITH (fillfactor =100); Điều này có nghĩa là không có dung lượng cho các bản cập nhật sẽ được dành riêng trong chỉ mục - chỉ mục nhỏ hơn trên đĩa.

CẬP NHẬT:mặc định của fillfactor là 100, từ http://www.postgresql.org/docs/9.1/static/sql-createtable.html:

Hệ số lấp đầy cho một bảng là tỷ lệ phần trăm từ 10 đến 100. 100 (đóng gói hoàn chỉnh) là giá trị mặc định



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tôi có thể nhập dữ liệu từ ASCII (ISO / IEC 8859-1) vào cơ sở dữ liệu Rails / PGSQL của mình?

  2. PostgreSQL Logical Replication Gotchas

  3. postgresql date_trunc thành độ chính xác tùy ý?

  4. ::Làm gì trong PostgreSQL?

  5. Cách chọn bản ghi từ 24 giờ qua trong PostgreSQL