मैं INSERT...SELECT
JDBC के साथ MySQL में एक बहुत बड़ी घटना को अंजाम देने की कोशिश कर रहा था , और मुझे निम्नलिखित अपवाद मिला:
Exception in thread "main" java.sql.SQLException: Out of memory (Needed 1073741824 bytes)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
चूंकि मैं वास्तव में रिजल्टसेट ऑब्जेक्ट नहीं लौटा रहा हूं, इसलिए मुझे लगा कि जावा हीप स्पेस कोई मुद्दा नहीं होना चाहिए। हालाँकि, मैंने इसे ऊपर उठाने की कोशिश की और यह अच्छा नहीं हुआ। मैंने तब MySQL वर्कबेंच में स्टेटमेंट निष्पादित करने की कोशिश की और मुझे अनिवार्य रूप से एक ही बात मिली:
Error Code 5: Out of memory (Needed 1073741816 bytes)
इन ऑपरेशनों को पूरा करने के लिए मेरे पास बहुत सारी RAM होनी चाहिए (मैं जिस तालिका का चयन कर रहा हूं, उसे पूरा करने के लिए पर्याप्त है), लेकिन मैं यह अनुमान लगा रहा हूं कि मेरी सभी मेमोरी का लाभ उठाने के लिए मुझे विभिन्न सेटिंग्स की आवश्यकता है। मैं एक अमेज़ॅन EC2 हाई मेमोरी डबल एक्सट्रा लार्ज इंस्टेंस एक विंडोज सर्वर 2008 एएमआई के साथ चला रहा हूं । मैंने बेहतर सेटिंग्स का उपयोग करने के लिए my.ini फ़ाइल के साथ फ़िडलिंग की कोशिश की है, लेकिन सभी के लिए मुझे पता है कि मैंने चीजों को बदतर बना दिया है। यहाँ उस फ़ाइल का एक डंप है:
[client]
port=3306
[mysql]
default-character-set=latin1
[mysqld]
port=3306
basedir="C:/Program Files/MySQL/MySQL Server 5.5/"
datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
character-set-server=latin1
default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
max_connections=100
query_cache_size=1024M
table_cache=256
tmp_table_size=25G
thread_cache_size=8
myisam_max_sort_file_size=100G
myisam_repair_threads = 2
myisam_sort_buffer_size=10G
key_buffer_size=5000M
bulk_insert_buffer_size = 4000M
read_buffer_size=8000M
read_rnd_buffer_size=8000M
sort_buffer_size=1G
innodb_additional_mem_pool_size=26M
innodb_flush_log_at_trx_commit=2
innodb_log_buffer_size=13M
innodb_buffer_pool_size=23G
innodb_log_file_size=622M
innodb_thread_concurrency=18
innodb_file_per_table=TRUE
join_buffer_size=4G
max_heap_table_size = 10G
तो क्या यह सिर्फ मेरे पर्यावरण के लिए बेहतर काम करने के लिए उपरोक्त सेटिंग्स को बदलने का मामला है? यदि हां, तो मुझे किन सेटिंग्स का उपयोग करना चाहिए? मैं केवल वही हूं जो कभी भी इस उदाहरण का उपयोग करता हूं; मैं इसे अपने व्यक्तिगत शौक परियोजना के लिए उपयोग करता हूं जिसमें बड़े डेटासेट का सांख्यिकीय विश्लेषण शामिल है। जैसे, मैं इसे अपने प्रश्नों के लिए सभी उपलब्ध संसाधनों का उपभोग करने के लिए स्वतंत्र हूं।
यदि यह उन सेटिंग्स को बदलने का मामला नहीं है, तो समस्या क्या है? किसी भी मदद के लिए धन्यवाद जो आप बेहतर सब कुछ कॉन्फ़िगर करने के लिए दे सकते हैं।