J'essayais d'exécuter un assez grand INSERT...SELECT
dans MySQL avec JDBC, et j'ai eu l'exception suivante:
Exception in thread "main" java.sql.SQLException: Out of memory (Needed 1073741824 bytes)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
Comme je ne retourne pas réellement un objet ResultSet, je pensais que l'espace de tas Java ne devrait pas être un problème. Cependant, j'ai quand même essayé de le monter et ça n'a pas été bon. J'ai ensuite essayé d'exécuter l'instruction dans MySQL Workbench et j'ai essentiellement obtenu la même chose:
Error Code 5: Out of memory (Needed 1073741816 bytes)
Je devrais avoir beaucoup de RAM pour terminer ces opérations (suffisamment pour s'adapter à toute la table dans laquelle je sélectionne), mais je suppose qu'il y a différents paramètres que je dois modifier pour profiter de toute ma mémoire. J'exécute une instance Amazon EC2 High Memory Double Extra Large avec une AMI Windows Server 2008. J'ai essayé de jouer avec le fichier my.ini pour utiliser de meilleurs paramètres, mais pour autant que je sache, j'aurais pu aggraver les choses. Voici un vidage de ce fichier:
[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
Est-ce simplement une question de changer les paramètres ci-dessus pour mieux fonctionner dans mon environnement? Si oui, quels paramètres dois-je utiliser? Je suis le seul à avoir utilisé cette instance; Je l'utilise pour mon projet de passe-temps personnel qui implique l'analyse statistique de grands ensembles de données. En tant que tel, je suis libre de le laisser consommer toutes les ressources disponibles pour mes propres requêtes.
S'il ne s'agit pas de modifier ces paramètres, quel est le problème? Merci pour toute aide que vous pouvez offrir pour mieux configurer tout.