मैं अपनी तालिका से लाखों रिकॉर्ड (आकार लगभग 30 जीबी) संसाधित करने की कोशिश कर रहा हूं और मैं वर्तमान में इसे पेजिंग (mysql 5.1.36) का उपयोग कर कर रहा हूं। मेरे लूप में उपयोग की जाने वाली क्वेरीपेजिंग के साथ बड़ी संख्या में डेटाबेस प्रविष्टियों को संसाधित करना
select blobCol from large_table
where name= 'someKey' and city= 'otherKey'
order by name
LIMIT <pageNumber*pageSize>, <pageSize>
यह लगभग 500 के रिकॉर्ड के लिए बिल्कुल ठीक काम करता है। मेरे पास 5000 का पेज आकार है जिसका मैं उपयोग कर रहा हूं और पेज 100 के बाद, क्वेरी नाटकीय रूप से धीमा हो रही है। पहले ~ 80 पृष्ठों को 2-3 सेकंड में निकाला जाता है लेकिन पृष्ठ 130 के बाद, प्रत्येक पृष्ठ को कम से कम 30 सेकंड तक पुनर्प्राप्त करने के लिए लगभग 30 सेकंड लगते हैं। मेरे प्रश्नों में से एक के बारे में 900 पृष्ठ हैं और इसमें बहुत अधिक समय लगेगा।
The table structure is (type is MyISAM)
name char(11)
id int // col1 & col2 is a composite key
city varchar(80) // indexed
blobCol longblob
मैं इसे गति देने के लिए क्या कर सकता हूं? क्वेरी के लिए समझाने से पता चलता इस
select_type: SIMPLE
possible_keys: city
key : city
type: ref
key_len: 242
ref: const
rows: 4293720
Extra: using where; using filesort
मामले में यह अपने सर्वर (24 जीबी राम, 2 क्वाड-कोर procs) के लिए मदद करता है, my.cnf इन प्रविष्टियों
key_buffer_size = 6144M
max_connections = 20
max_allowed_packet = 32M
table_open_cache = 1024
sort_buffer_size = 256M
read_buffer_size = 128M
read_rnd_buffer_size = 512M
myisam_sort_buffer_size = 128M
thread_cache_size = 16
tmp_table_size = 128M
max_heap_table_size = 64M
मैं हाइबरनेट (अनुमानों) में देखो सुझाव है कि [http://docs.jboss.org/hibernate/ कोर/3.3/संदर्भ/एन/एचटीएमएल/querycriteria.html # querycriteria-projection]। इसे एसओ पर भी पाया गया है जो अनुमानों का उपयोग नहीं करता है http://stackoverflow.com/questions/168084/is-there-a-more- कुशल -वे-ऑफ-मेकिंग-पेजिनेशन-इन-हाइबरनेट-से-एक्जिक्यूटिंग-से – Shahzeb
मैं इसे createSQLQuery एपीआई के माध्यम से चला रहा हूं, createQuery नहीं जो हाइबरेट इकाइयों का उपयोग करता है। मैंने createCriteria विधियों का उपयोग करने का प्रयास किया और इससे मेरा जेवीएम मेमोरी अपवादों से बाहर निकल गया क्योंकि यह स्मृति में सभी डेटा को रख रहा था। यह कम से कम काम करता है, यद्यपि थोड़ा सा धीमा है – randomThought