Bonjour,
J'ai été missionné sur un 'vieux' système qui marche depuis de nombreuses années mais qui donne de plus en plus d'alertes suite à une augmentation du nombre de données traitées par jour. Pour faire court, le système reçoit des données en masse (plusieurs centaines par minutes) et les enregistre dans une table dans MySql (version 5.1.52)
Après analyse, je me suis aperçu qu'au bout de plusieurs milliers d'INSERT successifs (qui prennent chacun entre 0 et 16 ms), ceux-ci deviennent subitement plus lents pour dépasser régulièrement les 100 ms, ce qui pose des problèmes.
Mon soucis, c'est que je me défends autant que possible en SQL mais je suis plutôt habitué à SQL Server (désolé) côté Administration. Côté code, les INSERT et les SELECT me semblent fait correctement et je pense plutôt qu'on atteint une saturation d'un buffer (?) ou alors c'est la table qui pose problème car, à un moment donnée, sa taille devient trop importante - mais le comportement que j'ai, c'est : "une fois que le temps de l'INSERT a 'dérivé' une fois, je peux relancer l'application mais ça se re-sature très vite ensuite. C'est-à-dire que je peux réintroduire quelques centaines de données correctement avec une durée d'INSERT acceptables mais ensuite, ça repart en vrille au delà des 100 ms."
J'ai donc regardé la configuration de MySql (qui date de plusieurs années) et je me demande si ce n'est pas lié à une valeur trop faible de innodb_buffer_pool_size (47M alors que la machine dispose de plusieurs Go de RAM). Est-ce que quelqu'un qui connaît bien les valeurs clefs de MySql pourrait m'indiquer si un paramétrage paraît optimisable ?
Merci d'avance pour votre aide
Fichier my.ini
#*** INNODB Specific options ***
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 basedir="C:/Program Files (x86)/MySQL/MySQL Server 5.1/" datadir="E:/ProgramData/MySQL/MySQL Server 5.1/Data/" default-character-set=latin1 default-storage-engine=INNODB sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" max_connections=100 query_cache_size=0 table_cache=256 tmp_table_size=18M thread_cache_size=8
Je peux indiquer tous les autres paramètres innodb si nécessaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 innodb_additional_mem_pool_size=2M innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=1M innodb_buffer_pool_size=47M innodb_log_file_size=24M innodb_thread_concurrency=26
Partager