2012-04-01 16 views
6

Tôi đã hai tuyến đường,Hiệu suất MySQL - Số lượng bảng Vs. Số Hàng

1) tạo sub-bảng cho mỗi người dùng và lưu trữ nội dung cá nhân của mình

2) tạo ra vài bảng và lưu trữ dữ liệu của tất cả người dùng trong đó. Ví dụ:

.

1) 100.000 bảng mỗi với 1000 hàng

2) 50 Bảng mỗi 2.000.000 hàng

Tôi muốn biết được tuyến đường là tốt nhất và hiệu quả.

Bối cảnh: Giống như Facebook, cho hàng triệu người dùng, bài đăng, ảnh, thẻ của họ. Tất cả thông tin này nằm trong một số bảng khổng lồ cho tất cả người dùng hoặc mỗi người dùng có bảng phụ riêng của nó.

+1

Bạn có thể xem khóa học video miễn phí "Giới thiệu về Cơ sở dữ liệu": http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=IntroToDatabases –

Trả lời

7

Đây là một số ưu và nhược điểm của hai phương pháp này trong MySQL.

1. Nhiều bảng nhỏ.

Nhược điểm:

  • More bảng đồng thời sử dụng có nghĩa là nhiều mô tả tập tin cần thiết (đánh dấu this)
  • Một cơ sở dữ liệu với 100.000 bảng là một mớ hỗn độn.

Ưu:

  • bảng nhỏ có nghĩa là chỉ số nhỏ. Chỉ mục nhỏ có thể được tải hoàn toàn vào bộ nhớ, điều đó có nghĩa là các truy vấn của bạn sẽ chạy nhanh hơn.
  • Ngoài ra, do các chỉ mục nhỏ, thao tác dữ liệu như chèn sẽ chạy nhanh hơn.

2.Vài bảng lớn

Nhược điểm:

  • Một bảng khổng lồ bao hàm chỉ số rất lớn. Nếu chỉ mục của bạn không thể được tải hoàn toàn vào bộ nhớ thì hầu hết các truy vấn sẽ rất chậm.

Ưu:

  • Cơ sở dữ liệu (và cũng có thể mã của bạn) thì rõ ràng và dễ dàng để mantain.
  • Bạn có thể sử dụng phân vùng nếu bảng của bạn trở nên quá lớn. (kiểm tra this).

Từ kinh nghiệm của tôi một bảng hai triệu hàng (tôi đã làm việc với 70 triệu hàng bảng) không phải là vấn đề hiệu suất trong MySQL nếu bạn có thể tải tất cả chỉ mục hoạt động của mình trên bộ nhớ.

Nếu bạn có nhiều người dùng đồng thời, tôi sẽ đề nghị bạn đánh giá các công nghệ khác như Elastic Search dường như phù hợp hơn với loại kịch bản này.

1

Tạo bảng cho từng người dùng là thiết kế tồi tệ nhất có thể. Đây là một trong những điều đầu tiên bạn được dạy trong lớp thiết kế db.

0

Bảng là một thành phần hợp lý mạnh mẽ của cơ sở dữ liệu và do đó nó được sử dụng cho nhiều tác vụ bảo trì của RDBMS. Ví dụ. nó là phong tục để thiết lập không gian tập tin bảng, hạn chế, hạn ngạch, không gian đăng nhập, không gian giao dịch, không gian cây chỉ mục và nhiều thứ khác. Nếu mọi bảng đều có tệp riêng của nó để đưa dữ liệu vào, bạn sẽ nhận được nhiều thời gian khứ hồi khi tham gia các bảng hoặc bất kỳ thứ gì.

Khi bạn tạo nhiều bảng, bạn sẽ có chi phí thực sự rất lớn trong việc bảo trì. Ngoài ra, bạn sẽ phủ nhận bản chất của các nguồn quan hệ. Và giả sử bạn đang thêm bản ghi vào cơ sở dữ liệu - mỗi lần tạo một bảng mới? Nó sẽ khó hơn một chút trên mã của bạn.

Nhưng sau đó một lần nữa, bạn có thể thử và tự mình xem.

+0

Cảm ơn Dmitriy .... Rất hữu ích. –

+0

Bạn được chào đón :) –

+0

@DmitriyReznik nếu tôi không tham gia vào các truy vấn của mình, có ok không khi có nhiều bảng như 100k – Rams