2012-09-28 36 views
28

सबसे व्यापक रूप से इस्तेमाल के लिए विकल्पों में पूल विकल्प का प्रयोग होता है निम्न में से हैं:क्या database.yml में database.yml

adapter 
encoding 
database 
pool 
username 
password 
socket 
host 
port 
timeout 

मैं ऊपर, लेकिन पूल में से अधिकांश का उपयोग पता है। तो मैं जानना चाहता हूं कि डेटाबेस.आईएमएल में पूल विकल्प का उपयोग क्या है या कोई अन्य पैरामीटर है जिसे हमें बहुत भारी ट्रैफिक वाले एप्लिकेशन के लिए सेट करने की आवश्यकता है।

उत्तर

1

pool कनेक्शन पूल के आकार की कॉन्फ़िगरेशन है, जो डिफ़ॉल्ट रूप से 5 है।

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/ConnectionPool.html

+5

मुझे वह मिला लेकिन वास्तव में यह क्या करता है .... इसके लिए अधिकतम मूल्य क्या है? – Salil

22

यह माणिक प्रक्रिया के अनुसार संभव कनेक्शन की राशि निर्धारित करता है। तो यदि आप अपने रेल ऐप को थ्रेड कर रहे हैं, या आप अत्यधिक लेनदेन का उपयोग करते हैं। यहां सीमाएं आपके सेटअप पर निर्भर करती हैं। इस पर विचार करें:

  • 50 माणिक प्रक्रियाओं
  • प्रत्येक 100 धागे
  • 1000 निरंतर कनेक्शन

तो यह भावना है कि हर प्रक्रिया पर सबसे 20 कनेक्शन खोल सकते हैं बनाता है की एक सेटिंग के साथ एक mysql के साथ (50 * 20 == 1000) किसी दिए गए समय पर। तो आप pool मान को 20 या उससे कम तक सेट करेंगे।

+0

उपरोक्त समीकरण में "100 थ्रेड वाले प्रत्येक" में यह 100 कहां है? (50 * 20 == 1000) –

+0

क्या इसका मतलब यह है कि पूल का आकार केवल कार्यकर्ता प्रक्रिया पर निर्भर है, न कि धागे? @moritz –

3

किसी और के लिए जो इस प्रश्न का उत्तर ढूंढ रहे हैं, मूल विचार यह प्रतीत होता है कि डेटाबेस केवल एक साथ कई कनेक्शन का समर्थन कर सकता है, इसलिए खुले कनेक्शन को सीमित करने के लिए एक तरीका चाहिए। pool विशेषता किसी निर्दिष्ट समय पर खोले जा सकने वाले कनेक्शन की अधिकतम संख्या निर्दिष्ट करती है।

इस बारे में अधिक जानकारी के लिए http://guides.rubyonrails.org/configuring.html#database-pooling देखें। मार्गदर्शिका स्पष्ट रूप से यह नहीं कहती है कि पूल ऐप के लिए कुल कनेक्शन है, लेकिन यह समझने के बाद मुझे यह समझ आती है।