2010-09-15 30 views
8

Tôi đã tạo một cơ sở dữ liệu trong PostgreSQL, hãy gọi nó là testdb.Có hạn chế về số lượng bảng mà cơ sở dữ liệu PostgreSQL có thể có không?

tôi có một tập hợp chung các bảng bên trong cơ sở dữ liệu này, xxx_table_one, xxx_table_twoxxx_table_three.

Bây giờ, tôi có mã Python nơi tôi muốn tự động tạo và xóa "bộ" của 3 bảng này vào cơ sở dữ liệu của tôi bằng mã nhận dạng duy nhất trong tên bảng phân biệt các "bộ" khác nhau, ví dụ:

Set 1
testdb.aaa_table_one
testdb.aaa_table_two
testdb.aaa_table_three

Set 2
testdb.bbb_table_one
testdb.bbb_table_two
testdb.bbb_table_three

Sự tái ason tôi muốn làm theo cách này là để giữ nhiều tập hợp dữ liệu LARGE dữ liệu liên quan tách biệt với nhau. Tôi cần phải thường xuyên ghi đè lên các bộ sưu tập dữ liệu cá nhân, và thật dễ dàng nếu chúng ta có thể chỉ cần thả bảng thu thập dữ liệu và tạo lại một bộ bảng hoàn chỉnh mới. Ngoài ra, tôi phải đề cập đến, các bộ sưu tập dữ liệu khác nhau phù hợp với cùng một lược đồ, vì vậy tôi có thể lưu tất cả các bộ sưu tập dữ liệu trong 1 bộ bảng bằng cách sử dụng số nhận dạng để phân biệt các bộ sưu tập dữ liệu thay vì tách chúng bằng cách sử dụng các bảng khác nhau.

Tôi muốn biết, một vài điều

  1. Liệu PostgreSQL giới hạn số lượng bảng cho mỗi cơ sở dữ liệu?
  2. Hiệu ứng trên hiệu suất, nếu có, có số lượng lớn bảng trong 1 cơ sở dữ liệu là gì?
  3. Hiệu quả của việc lưu bộ sưu tập dữ liệu trong các nhóm bảng khác nhau so với cách lưu tất cả chúng trong cùng một tập hợp, ví dụ: Tôi đoán sẽ cần phải viết nhiều truy vấn hơn nếu tôi muốn truy vấn nhiều bộ sưu tập dữ liệu cùng một lúc khi dữ liệu được trải rộng trên bảng so với chỉ 1 bộ bảng.
+1

Xác định "lớn". Tạo và thả các bảng thường là phương pháp sai để thực hiện. – mpen

+5

Do. Không phải. Do. Điều này. Đó là một hack thiết kế đáng sợ. Nhiều người thử nó - tất cả mọi người cố gắng hối tiếc. Sử dụng các giá trị khóa như các cột bên trong các bảng; không tạo bảng như thế này. –

+0

Lớn có thể là khoảng 1.000.000 - 10.000.000 hồ sơ. Không lớn lắm, nhưng mỗi lần thu thập dữ liệu là một bộ sưu tập dữ liệu được xử lý trước được cập nhật một hoặc hai lần một tháng. – sizeight

Trả lời

14

PostgreSQL không có nhiều giới hạn, phần cứng của bạn bị hạn chế nhiều hơn, đó là nơi bạn gặp phải nhiều sự cố nhất. http://www.postgresql.org/about/

Bạn có thể có 2^32 bảng trong một cơ sở dữ liệu duy nhất, chỉ hơn 4 tỷ.

+0

Kết luận được đề cập trong phản hồi này là tín dụng của một nghiên cứu về cộng tác viên cộng đồng PostgreSQL xem [PGCon 2013] (http://www.pgcon.org/2013/schedule/attachments/283_Billion_Tables_Project-PgCon2013.pdf) – pazfernando

2
  1. PostgreSQL không áp đặt một giới hạn trực tiếp về vấn đề này, hệ điều hành của bạn không (nó phụ thuộc vào kích thước thư mục tối đa)
  2. này có thể phụ thuộc vào hệ điều hành của bạn là tốt. Một số hệ thống tập tin chậm hơn với các thư mục lớn.
  3. PostgreSQL sẽ không thể tối ưu hóa truy vấn nếu chúng ở trên các bảng khác nhau. Do đó, việc sử dụng ít bảng hơn (hoặc một bảng đơn) sẽ hiệu quả hơn
0

Nếu dữ liệu của bạn không liên quan, tôi nghĩ các bảng của bạn có thể nằm trong lược đồ khác nhau, và sau đó bạn sẽ sử dụng SET search_path TO schema1, public, theo cách này bạn sẽ không phải tự động tạo tên bảng trong truy vấn của mình. Tôi đang lên kế hoạch thử cấu trúc này trên một cơ sở dữ liệu lớn lưu trữ nhật ký và thông tin theo dõi khác.

Bạn cũng có thể thay đổi tablespace nếu hệ điều hành của bạn có giới hạn hoặc bị kích thước thư mục lớn.

Các vấn đề liên quan