Tôi đã cố gắng thực hiện một số lượng khá lớn INSERT...SELECT
trong MySQL với JDBC và tôi đã có một ngoại lệ sau:
Exception in thread "main" java.sql.SQLException: Out of memory (Needed 1073741824 bytes)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
Vì tôi không thực sự trả về một đối tượng Kết quả, tôi nghĩ rằng không gian heap Java không phải là một vấn đề. Tuy nhiên, dù sao thì tôi cũng đã cố gắng và nó không được tốt. Sau đó tôi đã cố gắng thực hiện câu lệnh trong MySQL Workbench và về cơ bản tôi cũng nhận được điều tương tự:
Error Code 5: Out of memory (Needed 1073741816 bytes)
Tôi nên có nhiều RAM để hoàn thành các thao tác này (đủ để phù hợp với toàn bộ bảng tôi đang chọn), nhưng tôi đoán có nhiều cài đặt khác nhau tôi cần điều chỉnh để tận dụng tất cả bộ nhớ của mình. Tôi đang chạy một bộ nhớ lớn gấp đôi Amazon EC2 với Windows Server 2008 AMI. Tôi đã thử nghịch với tệp my.ini để sử dụng các cài đặt tốt hơn, nhưng với tất cả những gì tôi biết tôi có thể đã làm mọi thứ tồi tệ hơn. Đây là một bãi chứa của tập tin đó:
[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
Vì vậy, đây chỉ là vấn đề thay đổi các cài đặt ở trên để hoạt động tốt hơn cho môi trường của tôi? Nếu vậy, tôi nên sử dụng cài đặt nào? Tôi là người duy nhất từng sử dụng ví dụ này; Tôi sử dụng nó cho dự án sở thích cá nhân của tôi liên quan đến phân tích thống kê các bộ dữ liệu lớn. Như vậy, tôi tự do để nó tiêu thụ tất cả các tài nguyên có sẵn cho các truy vấn của riêng tôi.
Nếu đây không phải là vấn đề thay đổi các cài đặt đó, thì vấn đề là gì? Cảm ơn bất kỳ trợ giúp nào bạn có thể cung cấp cho cách cấu hình tốt hơn mọi thứ.