IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration MySQL Discussion :

Concerne la perte de connexion


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 83
    Par défaut Concerne la perte de connexion
    Bonjour ,

    En C++ j'ai une boucle qui fait démarrer la requête SELECT pour vérifier si la valeur existe.
    Cette boucle tourne environ 17.000 fois.
    malheureusement aux alentours de 16314 exécution , la connexion se perd. (je pense qu'il y a un timing )

    comment peut-on augmenter cette valeur ?

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 83
    Par défaut
    exemple de code que j'ai


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for (int i=1; i<17000; i++)
    {
     
      	QUERY->SQL->Text = "select * from tableau where id=:id";
    	QUERY->ParamByName("id")->AsInteger = i;
    	QUERY->Active  = true ;
            bool empty = QUERY->IsEmpty();
    	QUERY->Active  = false ;		
     
            // code à continuer
     
    }
    la boucle ne dépasse jamais 16500 ( une fois c'est 16214, une fois c'est 16230)


    La connexion se perd.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 617
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Vérifiez vos paramètres de connexion, cf. le manuel de référence ICI

    Quelques remarques :
    • si l'identifiant de la table est de type "auto_increment", il y a, et c'est tout à fait normal, des trous de numérotation.
      Il faudra en tenir compte dans votre traitement, ce n'est pas une erreur, plusieurs causes sont possibles : lignes supprimées par DELETE, INSERT non comités, arrêt relance du serveur...
    • vérifier l'existence en faisant un SELECT * est une très mauvais idée. Pour vérifier l'existence, faites un select d'une constante (par exemple SELECT 1), ça allegera la charge réseau en évitant de transporter des colonnes inutiles et ça permettra d'utiliser les index couvrants s'il en existe.
      Voyez dans mon article de blog sur l'utilisation du SELECT *

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 83
    Par défaut
    Merci,

    Votre conseil pour le (select 1 ) est pour l'optimisation. je l'ai changé.

    j'ai mis toutes les valeurs au maximum dans my.ini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
     
    connect_timeout=1000000
    max_execution_time=1000000
    max_connections=10000000
    table_open_cache=200000
    tmp_table_size=2G
    skip_name_resolve
    thread_cache_size=1000
    myisam_max_sort_file_size=100G
    myisam_sort_buffer_size=2G
    key_buffer_size=16M
    read_buffer_size=128K
    read_rnd_buffer_size=512K
    tmp_table_size=128M
    net_buffer_length=32768
    innodb_flush_log_at_trx_commit=1
    innodb_log_buffer_size=16M
    innodb_buffer_pool_size=1G
    innodb_log_file_size=256M
    innodb_thread_concurrency=65
    innodb_autoextend_increment=64
    innodb_buffer_pool_instances=8
    innodb_concurrency_tickets=5000
    innodb_old_blocks_time=1000
    innodb_open_files=300
    innodb_stats_on_metadata=0
    innodb_file_per_table=1
    innodb_checksum_algorithm=0
     
     
    back_log=80
    flush_time=90000
    join_buffer_size=256K
    max_allowed_packet=1073741824
    max_connect_errors=100
    open_files_limit=4161
    sort_buffer_size=256K
    table_definition_cache=1400
    binlog_row_event_max_size=8K
    sync_master_info=10000
    sync_relay_log=10000
    sync_relay_log_info=10000
    loose_mysqlx_port=66060
     
     
    delayed_insert_limit=200
    innodb_fill_factor=200
    innodb_idle_flush_pct=200
    key_cache_division_limit=200
    max_connect_errors=200
    mysqlx_max_connections=200
    performance_schema_max_cond_classes=200
    performance_schema_max_thread_classes=200
    net_buffer_length=20000
    max_prepared_stmt_count=20000
    innodb_lock_wait_timeout=100
    regexp_time_limit=64
     
    slave_net_timeout=120
    mysqlx_idle_worker_thread_timeout=120
    mysqlx_write_timeout=120
     
    interactive_timeout=55000
    mysqlx_interactive_timeout=55000
    mysqlx_wait_timeout=55000
    wait_timeout=55000
    net_read_timeout=6000
    j'ai fait un net stop & net start.
    Je tourne sous windows & mysql server 8.0 avec workbench

    Une petite info :
    Dans mon deuxième post, j'ai mis mon code comme exemple . le but c'est de ne pas parcourir les ID .
    Au fait, je voulais parcourir la table avec plusieurs clés primaires. Si l'info ne figure pas dans le tableau, il l'ajoute dans la partie suivante.
    Le FOR parcours un tableau qui contient 80.000 lignes.

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 617
    Billets dans le blog
    10
    Par défaut
    Les SGBD sont optimisés pour traiter les données de façon ensembliste, donc sauf besoin impérieux, il est très nettement préférable de faire des requêtes ensemblistes que de traiter les lignes une à une.*
    Quel est le besoin fonctionnel ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 83
    Par défaut
    au fait, le but c'est de transférer toutes les données du fichier Excel dans le tableau SQL.
    au lieu de travailler sur Excel avec des Vlookup, pivottable etc , j'aimerais tout transférer dans le tableau SQL et travailler en SQL .

    Au moment de transfert, j'aimerais faire un select pour vérifier que l'info n'y figure pas, si oui, il passe à la ligne suivante, si non , il l'insert.

    J'ai +- 80.000 lignes pour chaque mois. Donc au total pour une année complète j'aurai +- 1.000.000 de lignes

    au total je sais faire +- 16000 requêtes . entre chaque 16.000 je dois attendre +- 1 minute environ.

    Merci

Discussions similaires

  1. Perte de connexion réseau
    Par Gege70 dans le forum Administration
    Réponses: 3
    Dernier message: 06/05/2005, 10h09
  2. [IB6.0]-Perte de connexion Client
    Par GroupeEL dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 21/03/2005, 15h43
  3. [JNDI] Problème en cas de perte de connexion
    Par Marc_P dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 19/10/2004, 14h45
  4. Perte de connexion BD
    Par Sylvain James dans le forum XMLRAD
    Réponses: 2
    Dernier message: 30/10/2003, 10h23
  5. Perte de connexion (bis)
    Par rgarnier dans le forum XMLRAD
    Réponses: 7
    Dernier message: 28/05/2003, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo