Saya mencoba menjalankan INSERT...SELECT
MySQL yang cukup besar dengan JDBC, dan saya mendapat pengecualian berikut:
Exception in thread "main" java.sql.SQLException: Out of memory (Needed 1073741824 bytes)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
Karena saya tidak benar-benar mengembalikan objek ResultSet, saya pikir ruang heap Java seharusnya tidak menjadi masalah. Namun, saya mencoba untuk meningkatkannya dan itu tidak baik. Saya kemudian mencoba menjalankan pernyataan di MySQL Workbench dan pada dasarnya saya mendapatkan hal yang sama:
Error Code 5: Out of memory (Needed 1073741816 bytes)
Saya seharusnya memiliki banyak RAM untuk menyelesaikan operasi ini (cukup untuk memenuhi seluruh tabel yang saya pilih), tetapi saya kira ada berbagai pengaturan yang perlu saya sesuaikan untuk memanfaatkan semua memori saya. Saya menjalankan Amazon EC2 High Memory Double Extra Large Instance dengan Windows Server 2008 AMI. Saya sudah mencoba mengutak-atik file my.ini untuk menggunakan pengaturan yang lebih baik, tetapi untuk semua yang saya tahu saya mungkin telah memperburuk keadaan. Berikut dump file itu:
[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
Jadi apakah ini hanya masalah mengubah pengaturan di atas agar berfungsi lebih baik untuk lingkungan saya? Jika demikian, pengaturan apa yang harus saya gunakan? Saya satu-satunya yang pernah menggunakan instance ini; Saya menggunakannya untuk proyek hobi pribadi saya yang melibatkan analisis statistik dataset besar. Karena itu, saya bebas untuk membiarkannya menghabiskan semua sumber daya yang tersedia untuk pertanyaan saya sendiri.
Jika ini bukan masalah mengubah pengaturan itu, apa masalahnya? Terima kasih atas bantuan yang dapat Anda tawarkan untuk cara mengkonfigurasi semuanya dengan lebih baik.