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)
실제로 ResultSet 객체를 반환하지 않기 때문에 Java 힙 공간이 문제가되지 않아야한다고 생각했습니다. 그러나 어쨌든 나는 그것을 시도했지만 좋지 않았다. 그런 다음 MySQL Workbench에서 명령문을 실행하려고 시도했지만 본질적으로 동일한 내용을 얻었습니다.
Error Code 5: Out of memory (Needed 1073741816 bytes)
이 작업을 완료하려면 충분한 RAM이 있어야합니다 (선택하는 전체 테이블에 맞을 수 있음).하지만 모든 메모리를 활용하기 위해 조정해야 할 다양한 설정이 있다고 생각합니다. Windows Server 2008 AMI와 함께 Amazon EC2 고용량 이중 초대형 인스턴스 를 실행하고 있습니다. 더 나은 설정을 사용하기 위해 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
내 환경에서 더 잘 작동하도록 위의 설정을 변경하는 것입니까? 그렇다면 어떤 설정을 사용해야합니까? 저는이 인스턴스를 사용하는 유일한 사람입니다. 대규모 데이터 세트의 통계 분석과 관련된 개인 취미 프로젝트에 사용합니다. 따라서 본인의 쿼리에 사용 가능한 모든 리소스를 자유롭게 사용할 수 있습니다.
이러한 설정을 변경해도 문제가되지 않으면 어떤 문제가 있습니까? 모든 것을 더 잘 구성하는 방법에 대한 도움을 주셔서 감사합니다.