मुझे रेल प्रोजेक्ट (रेल 2.0.5 पर चल रहा है) में कुछ प्रदर्शन समस्याएं हैं, उदाहरण के लिए मेरे उपयोगकर्ता प्रशासन पृष्ठों में।प्रदर्शन में सुधार करने के लिए रेल ऐप पर रूबी में MySQL दृश्यों का उपयोग
मेरे उपयोगकर्ता मॉडल में कई रिश्तों (विवरण, पते, भूमिकाएं ...) हैं जो उत्सुक लोडिंग के साथ लोड हो जाते हैं। इससे कुछ मामलों के लिए वास्तव में विशाल SQL क्वेरी उत्पन्न होती हैं, 30 उपयोगकर्ताओं को लोड करने में लगभग एक मिनट लगते हैं। दूसरी ओर उत्सुक लोडिंग को हटाने से सैकड़ों प्रश्न उत्पन्न होते हैं, अंत में मुझे एक ही समस्या है: पृष्ठ लोड करना धीमा है।
मैं जावा & ओरेकल पर विकसित होता था, इस तरह के बड़े प्रश्नों के लिए मैंने विचार बनाने के लिए उपयोग किया था, उन विचारों को तब तेजी से प्रतिपादन के लिए कैश किया गया था। यह बनाए रखने के लिए बेहद उबाऊ था, क्योंकि मुझे दृश्य स्क्रिप्ट इत्यादि में मैन्युअल रूप से डेटाबेस फ़ील्ड अपडेट करना था ...
लेकिन वास्तव में शानदार प्रदर्शन था .... इसलिए मैं सोच रहा था कि किसी ने कभी भी कुछ लागू करने का प्रयास किया है सक्रिय रिकॉर्ड में MySQL दृश्यों का लाभ उठाएं?
मैं बस किया था कुछ बुनियादी परीक्षण, यहाँ है मेरे विचार (बस कुछ ही क्षेत्रों उदाहरण के लिए, मैं एक मानक शोकहारा प्रमाणीकरण उपयोगकर्ता तालिका है, और व्यक्तिगत datas के लिए एक बड़ी मेज "विवरण"):
CREATE VIEW users_vs AS SELECT
users.id ,
users.login ,
users.email ,
details.last_name ,
details.first_name ,
details.phone ,
details.fax ,
FROM `users` LEFT OUTER JOIN `details` ON details.user_id = users.id ;
फिर एक मॉडल:
class UsersV < ActiveRecord::Base
end
मेरे कंसोल में कुछ बातें की कोशिश की:
u=UsersV.find(:first) # ok !
u=UsersV.find_by_last_name('smith') #=> ok !
us=UsersV.find_all_by_last_name('smith') #=> ok too !
लॉग को देखते हुए, सरल प्रश्नों को उसी तरह से संभाला जाता है जैसे किसी भी टेबल प्रश्न
बेशक, उन नकली मॉडल का उपयोग डेटा को पढ़ने के लिए किया जाएगा।
मैं सोच रहा हूँ:
अगर किसी को पहले से ही उस की कोशिश की?
यदि यह एक अच्छा विचार है?
बजाय memcached की तरह अगर मैंने कुछ ध्यान देना चाहिए ...
30 उपयोगकर्ताओं को लोड करने में एक मिनट बहुत धीमा लगता है। क्या आपके एसोसिएशन में इस्तेमाल किए गए सभी कॉलम अनुक्रमित हैं? आम तौर पर कितने टेबल और पंक्तियां पुनर्प्राप्त की जाती हैं? यदि आप आसानी से कम लोडिंग का उपयोग करते हैं तो क्या होता है? (MySQL हमेशा मल्टी-टेबल को कुशलतापूर्वक अनुकूल नहीं करता है) –