2013-02-15 44 views
37

Tôi muốn thiết lập cơ sở dữ liệu MySQL cho trang web mạng xã hội cho trường đại học của mình.Kết nối đồng thời tối đa với MySQL

Ứng dụng của tôi có thể có tối đa 10.000 người dùng. Số kết nối MySQL đồng thời tối đa có thể là bao nhiêu?

+4

đủ để bạn không cần phải lo lắng. –

+0

có thể 500-1000 kết nối đồng thời được xử lý bởi nó? – user2075703

+1

Ngoài ra tôi nên sử dụng mysql với hadoop hoặc memcached để làm cho nó nhanh hơn – user2075703

Trả lời

62

Theo các tài liệu MySQL: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_user_connections

maximum range: 4,294,967,295 (e.g. 2**32 - 1) 

Bạn có lẽ muốn chạy ra khỏi bộ nhớ, xử lý tập tin, và ổ cắm mạng, trên máy chủ của bạn rất lâu trước khi bạn nhận được bất cứ nơi nào gần với giới hạn đó.

+0

cảm ơn .. nhưng tôi nên sử dụng cái gì khác cùng với mysql như hadoop hoặc memcached để tăng tốc độ? – user2075703

+0

vì có thể mysql sẽ xử lý các kết nối đồng thời. Nhưng chắc chắn nó sẽ làm chậm trong khi xử lý quá nhiều kết nối – user2075703

+12

chỉ khi thiết lập mysql cơ bản không đủ tốt. bắt đầu đơn giản, thêm độ phức tạp sau này theo yêu cầu. số lượng kết nối không phải là một vấn đề. đó là những gì các kết nối đang làm. 10.000 người đăng nhập vào mysql là không có gì. 10.000 người dùng đang chạy các truy vấn hoán bộ nhớ phức tạp lớn là vấn đề. Và hãy nhớ rằng, 10.000 người có thể ở trên trang web của bạn, nhưng không phải tất cả trong số họ sẽ gây ra các truy vấn DB cùng một lúc. bạn có thể chỉ có (nói) 50 truy vấn đang chạy tại một thời điểm nhất định. –

33

Bạn có thể có tổng số 10.000 người dùng, nhưng điều đó không giống với người dùng đồng thời. Trong bối cảnh này, các tập lệnh đồng thời đang được chạy.

Ví dụ: nếu khách truy cập của bạn truy cập index.php và truy vấn cơ sở dữ liệu để nhận một số chi tiết người dùng, yêu cầu đó có thể hoạt động trong 250ms. Bạn có thể giới hạn thời gian các kết nối MySQL đó còn sống xa hơn bằng cách mở và đóng chúng chỉ khi bạn đang truy vấn, thay vì để nó mở trong suốt thời gian của tập lệnh.

Trong khi rất khó để thực hiện bất kỳ loại thức để dự đoán bao nhiêu kết nối sẽ được mở tại một thời điểm, tôi muốn liên doanh như sau:

Bạn có lẽ sẽ không có nhiều hơn 500 người dùng hoạt động bất cứ lúc nào thời gian nhất định với 10.000 người dùng. Trong số 500 người dùng đồng thời đó, có thể sẽ có tối đa là 10-20 yêu cầu đồng thời được thực hiện cùng một lúc.

Điều đó có nghĩa, bạn thực sự chỉ thiết lập khoảng 10-20 yêu cầu đồng thời.

Như những người khác đã đề cập, bạn không có gì phải lo lắng về bộ phận đó.

+0

Giả sử một trang web có quy mô của Facebook, và cũng giả định rằng không có lớp bộ nhớ cache như Memcached, để tất cả các truy vấn phải nhấn cơ sở dữ liệu, MySQL sẽ có thể xử lý tải như vậy? – SexyBeast

+0

@SexyBeast bạn có nhận được bất kỳ câu trả lời nào về điều này hoặc thực hiện bất kỳ sự hiểu biết nào cho đến nay để chia sẻ? –

+0

Hiểu biết hạn chế của tôi là nếu bạn đang tìm kiếm phản ứng gần như thời gian thực như đề xuất tự động của Google hoặc thậm chí phản hồi nhanh vừa phải, cơ sở dữ liệu không thể xử lý nó, nó sẽ làm cho nó chậm theo thứ tự độ lớn. – SexyBeast

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