ฉันพยายามรันINSERT...SELECT
MySQL ที่มีขนาดค่อนข้างใหญ่ด้วย JDBC และฉันได้รับข้อยกเว้นต่อไปนี้:
Exception in thread "main" java.sql.SQLException: Out of memory (Needed 1073741824 bytes)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
เนื่องจากฉันไม่ได้ส่งคืนออบเจกต์ ResultSet ฉันจึงคิดว่าพื้นที่ของฮีป Java ไม่น่าจะมีปัญหา อย่างไรก็ตามฉันพยายามเพิ่มมันต่อไปและมันก็ไม่ได้ดี จากนั้นฉันพยายามเรียกใช้คำสั่งใน MySQL Workbench และฉันได้สิ่งเดียวกัน:
Error Code 5: Out of memory (Needed 1073741816 bytes)
ฉันควรมี RAM มากมายเพื่อให้การดำเนินการเหล่านี้ (เพียงพอที่จะพอดีกับตารางทั้งหมดที่ฉันเลือกจาก) แต่ฉันเดาว่ามีการตั้งค่าต่าง ๆ ที่ฉันจำเป็นต้องปรับแต่งเพื่อใช้ประโยชน์จากหน่วยความจำทั้งหมดของฉัน ฉันใช้หน่วยความจำสูง Amazon EC2 หน่วยความจำเสริมใหญ่เป็นสองเท่าด้วย Windows Server 2008 AMI ฉันได้ลองเล่นไฟล์ 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
ดังนั้นนี่เป็นเพียงเรื่องของการเปลี่ยนแปลงการตั้งค่าด้านบนเพื่อให้ทำงานได้ดีขึ้นสำหรับสภาพแวดล้อมของฉันหรือไม่ ถ้าเป็นเช่นนั้นฉันควรใช้การตั้งค่าแบบใด ฉันเป็นคนเดียวที่เคยใช้อินสแตนซ์นี้ ฉันใช้สำหรับโครงการงานอดิเรกส่วนตัวที่เกี่ยวข้องกับการวิเคราะห์ทางสถิติของชุดข้อมูลขนาดใหญ่ ดังนั้นฉันจึงปล่อยให้มันใช้ทรัพยากรที่มีอยู่ทั้งหมดสำหรับการสืบค้นของฉันเอง
หากนี่ไม่ใช่เรื่องของการเปลี่ยนการตั้งค่าเหล่านั้นปัญหาคืออะไร ขอบคุณสำหรับความช่วยเหลือใด ๆ ที่คุณสามารถนำเสนอสำหรับวิธีการกำหนดค่าทุกอย่างดีขึ้น