हम MySQL का एक छोटा बेंचमार्क कर रहे हैं जहां हम देखना चाहते हैं कि यह हमारे डेटा के लिए कैसे कार्य करता है।एकाधिक धागे से MySQL तक पहुंचने के लिए कैसे
उस परीक्षण का हिस्सा यह देखना है कि यह कैसे काम करता है जब एकाधिक समवर्ती धागे विभिन्न प्रश्नों के साथ सर्वर को हथियार देते हैं।
MySQL documentation (5.0) बहु थ्रेडेड ग्राहकों के बारे में वास्तव में स्पष्ट नहीं है। मुझे यह इंगित करना चाहिए कि मैं थ्रेड सुरक्षित लाइब्रेरी के खिलाफ लिंक करता हूं (libmysqlclient_r.so
)
मैं तैयार बयान का उपयोग कर रहा हूं और दोनों पढ़ना (चयन) लिखना और लिखना (अद्यतन, INSERT, हटाएं)।
- क्या मुझे प्रति थ्रेड एक कनेक्शन खोलना चाहिए? और यदि ऐसा है: मैं यह भी कैसे कर सकता हूं .. ऐसा लगता है कि
mysql_real_connect()
मूल डीबी हैंडल देता है जो मुझेmysql_init()
कहा जाता है) - यदि नहीं: मैं कैसे सुनिश्चित कर सकता हूं कि
mysql_affected_rows
जैसे परिणाम और तरीके सही मूल्य लौटाते हैं अन्य धागे की कॉल के साथ टकराव करने के लिए (म्यूटेक्स/ताले काम कर सकते हैं, लेकिन यह गलत लगता है)
यह वही उत्तर था जिसकी मुझे आवश्यकता थी। मुझे एहसास नहीं हुआ कि मुझे प्रत्येक थ्रेड में mysql_init को कॉल करना होगा - मैंने इसे मुख्य बार() में किया था। धन्यवाद –
@chazomaticus, आप आम तौर पर कितने धागे का उपयोग करेंगे और आप कितने कनेक्शन खोलेंगे? क्या यह बड़े पैमाने पर धागे/कनेक्शन के पैमाने पर है? एक कनेक्शन पूल वास्तव में उपयोगी होता है यदि आपके पास बहुत सारे धागे हैं (100 के - 1000 के) लेकिन 1000 कनेक्शन खोलने के ऊपरी हिस्से को नहीं चाहते हैं (जो आपको अधिकतम_कनेक्शन के लिए डिफ़ॉल्ट रूप से अनुमति नहीं दे सकता है) आमतौर पर 100 पर सेट होता है)। यदि आपके पास कम संख्या में धागे हैं तो आपका दृष्टिकोण काम करेगा। कोड उदाहरण दिखाने के लिए मेरे द्वारा +1। – Glen
चूंकि इसाक डीबी पर दबाव डालने की कोशिश कर रहा है, जितना संभव हो सके उतने धागे। मैंने बिना किसी मुद्दे के ~ 1000 चलाए हैं (यदि सभी धागे समस्याएं हैं, तो उनका अधिकांश समय 'मतदान()' में निष्क्रिय रहता है, इसलिए यह सीपीयू-गहन नहीं है जैसा कि आप सोच सकते हैं, हालांकि यह एक हिस्सा खा सकता है स्मृति की)। आप डिफ़ॉल्ट रूप से अधिकतम 100 पर कैपिंग अधिकतम_कनेक्शन के बारे में सही हैं, इसलिए अधिकतम तनाव के लिए, वांछित के रूप में। – chazomaticus