#informatique Bot Logged User list

Network: Zeolia
Modes: +nrt
Last Seen: 23 minutes ago
Topic: Canal d'aide informatique - Développement / Web / Windows - Pour les questions linux, rejoindre #linux
#3
Rank
11
Users

Channel Log Archive for #informatique

Prev
Next

* All times are UTC
Sunday, November 13, 2022
[05:40:02] * Amand quit (Quit: Connection closed for inactivity)
[13:06:30] * Amand joined #informatique
[13:06:30] * [Guru] set mode +h Amand
[13:13:23] % Amand CrazyCat: je sais pas si tu as rep à mon msg ou si ta compris quelques choses :')
[13:13:58] @ CrazyCat Si j'ai bien compris, ta vue est longue à se rafraichir lorsque tu importes beaucoup de données ?
[13:14:46] % Amand bah enfaite c'est au niveau de ma procédure restore_logsusers , pour importer mes millions de données de ma table "logs_users" dans ma vue
[13:14:49] % Amand c'est hyper lent
[13:15:05] % Amand j'ai mis 2 semaines à importer à peine 1 million de donnée
[13:15:38] @ CrazyCat Il faudrait que je vois la procédure, mais je ne comprends pas ce que tu entends par importer dans une vue
[13:15:52] @ CrazyCat Une vue, c'est juste une requête pré-enregistrée
[13:16:02] % Amand pas ma vue mes nouvelles tables relié à ma vue
[13:16:08] % Amand je te montre
[13:16:18] @ CrazyCat Oui, ce sera plus simple
[13:17:33] % Amand https://imgur.com/pWgQhZz.png ( ne prends pas compte de la table "logsusers" , c'est celle ou j'ai mes millions de donnée, tu te rappeles celle ou j'avais des grosses lenteurs de chargement avec le ORDER BY )
[13:17:44] % Amand du coup j'ai crée les 3 tables juste en dessous
[13:18:13] % Amand relié à ma vue USER_INFO_FULL
[13:18:16] % Amand avant je faisais :
[13:19:43] % Amand SELECT COUNT(DISTINCT id) AS nbc, MAX(`time`) AS lasttime, codepays, nick, username, ip, host, realname, webirc, sslco, `time` FROM logsusers GROUP BY nick, username, ip ORDER BY lasttime DESC LIMIT 100
[13:19:50] % Amand ça mettait plus d'une minute à charger
[13:20:05] % Amand et maintenant je fais :
[13:20:07] % Amand SELECT * FROM `USER_FULL_INFO` ORDER BY `USER_FULL_INFO`.`LAST_CONNECT` DESC LIMIT 100
[13:20:57] % Amand mais il va falloir que tu vois un dump de la structure pour voir en globalité
[13:21:04] % Amand là je peux pas le faire, je te ferais ça je pense demain
[13:22:04] % Amand la structure de ma table logsusers : https://imgur.com/hVZ5TL2.png
[13:22:44] % Amand en gro depuis ma procédure :
[13:22:47] % Amand DROP PROCEDURE IF EXISTS `restore_logsusers`$$
[13:22:47] % Amand CREATE PROCEDURE `restore_logsusers` () BEGIN
[13:23:12] % Amand je devrais pouvoir importer mes données de la table logsusers sur mes nouvelles tables, relié à la vue
[13:23:23] % Amand pour accelerer le temps de chargement grâce à ma nouvelle requête
[13:23:30] % Amand SELECT * FROM `USER_FULL_INFO` ORDER BY `USER_FULL_INFO`.`LAST_CONNECT` DESC LIMIT 100
[13:24:51] @ CrazyCat C'est amusant de créer une table USER_FULL_INFO pour la supprimer et ensuite créer une vue du même nom
[13:25:01] @ CrazyCat (je ne vois pas l'intérêt)
[13:25:24] % Amand y'a peut être des choses à améliorer
[13:25:27] % Amand (sûrement)
[13:27:12] @ CrazyCat Et j'ai l'impression que tu t'es bien embêtée à faire des procédures avec une boucle qui les appelle
[13:27:41] @ CrazyCat Tu aurais pu faire une procédure qui lance juste 3 requêtes sans boucler
[13:29:29] @ CrazyCat Mais déjà il faut que je comprenne exactement ce que tu mets dans tes 3 tables
[13:30:11] * [Guru] quit (Shutting down)
[13:33:23] % Amand yep , je fais ça avec zartek pour pouvoir le proposer en tant qu'outil
[13:33:29] % Amand je vais lui dire de venir
[13:35:58] @ CrazyCat Pour l'instant je tente de migrer mes services, je vais être peu dispo pendant 1/2h
[13:36:29] % Amand pas de problème, je voulais avoir une 3eme paire de n'oeil
[13:36:38] % Amand pour voir des trucs qu'on ne voit pas forcément
[13:37:30] * MalaGaM joined #informatique
[13:37:39] * MalaGaM is now known as zartek
[13:38:17] % Amand re zartek, donc on discute avec CrazyCat du dernier pastebin
[13:38:34] zartek ok
[13:38:49] zartek il va peut-être voir plus claire
[13:39:31] % Amand il a déjà vu une anomalie , on aurait pu faire une procédure qui lance juste 3 requêtes sans boucler
[13:39:50] % Amand il doit comprendre l'acheminement de notre réflexion
[13:39:58] % Amand au niveau de la création des 3 tables relié à la vue
[13:40:07] zartek Oui, déjà dans ton pastebin tu creer CREATE TABLE `USER_FULL_INFO` (
[13:40:19] zartek ensuite tu la suprime DROP TABLE IF EXISTS `USER_FULL_INFO`;
[13:40:51] zartek et avant la creation tu drop la vue USER_FULL_INFO
[13:41:04] zartek y a du avori des soucis de copie/coller
[13:41:43] zartek Pour moi, la table a de toute facon rien a faire la
[13:41:48] zartek seul la vue doit existé
[13:42:05] zartek surement un mauvais export qui a replacer la vue en table
[13:43:47] zartek Je vais te refaire au propre
[13:47:04] zartek Tu peux deja effacer les residu que tu as chez toi, les tables (logs_connections, logs_links, logs_users, (USER_FULL_INFO?) ), les vues (USER_FULL_INFO) , les procedures/fonctions (FUNC_Get_Connection, FUNC_Get_Connection, CONNECTION_NEW, restore_logsusers)
[13:47:21] zartek et eventuellement d'autres risidu
[13:49:49] % Amand yes j'ai tout supprimé
[13:50:51] % Amand pour éviter d'avoir des collisions , je supprime à chaque fois
[13:57:20] zartek Tu as bien regarder pour les fonctions procedure et vue?
[13:57:29] zartek (désolé je demander double confirmations)
[13:57:50] % Amand oui c'est supp
[14:02:02] * [Guru] joined #informatique
[14:02:03] * [Guru] set mode +o [Guru]
[14:03:18] @ CrazyCat Bon, le souci est bien dans restore_logsusers qui rame ?
[14:05:52] % Amand oui , attends que zartek met au propre le pastebin pour analyser dans un code assez clean
[14:06:11] % Amand ça évitera qu'on se dispatche sur différent pastebin
[14:06:48] @ CrazyCat Si oui, vu que cette fonction est là pour remplir les 3 tables à partir de logusers, pourquoi ne pas juste faire un "insert into tableX (champ, champ, champ) select (champ, champ) from logusers ?
[14:10:01] zartek https://tools.eggdrop.fr/privatebin/?e7a6a8cfd2353cd7#CPKedEPbz9kKLEKM8joJtbciPFoqzf5A5wayq8SdLqiK J'ai tout revérifié, chez moi restore_logsusers avec 1.000 entrée 23sec
[14:12:15] % Amand c'est normal de crée la table et la supprimer encore?
[14:13:35] @ CrazyCat Je dois avoir un souci avec weechat, j'ai l'impression qu'on ne voit pas mes questions
[14:13:49] zartek pourquoi ne pas juste faire un "insert into tableX (champ, champ, champ) select (champ, champ) from logusers ? parce que logs_connections et logs_users doivent avoir un ID unique et etre mis dans logs_links et logs_users; sa implique un insert ignore et select de ID, pour creer si n'exiete pas ou prendre l'id si existe deja (les donénes unique), et logs_links incremente un table pourle
[14:13:49] zartek nombre de connexions
[14:14:38] @ CrazyCat Bon, alors je vais reprendre depuis le début: qu'est-ce que vous mettez dans ces 3 tables ?
[14:14:53] zartek Amand non pas normal, je ne sais pas pourquoi il fait ca a l'export phpmyadmin
[14:14:55] @ CrazyCat (en français, sans rien de technique)
[14:15:34] % Amand ( je laisse zartek te rep pour ne pas avoir 10 explications )
[14:22:39] zartek Lors de la connexion d'un utilisateur, nous avons besoin de recuprer les informations suivant country, nick, username, ip, hosrt cloacked, realname, si webirc, et ssslco, nous avons besoin en valeur unique le nick nickname, et ip et et avoir avec ca, la date/heure de derniere connexion et le nombre de connexion avec les valeurs unique
[14:23:35] @ CrazyCat Oui, ça c'est le remplissage en mode normal
[14:24:01] @ CrazyCat Mais la procédure restore_logsusers, pourquoi elle est si compliquée et fait une boucle
[14:24:19] @ CrazyCat (surtout avec un order qui ralentit un max)
[14:25:51] @ CrazyCat en jouant avec count, max et group by, on peut remplir les tables sans faire de boucle
[14:26:54] @ CrazyCat 3 requêtes dans la procédure et le tour est joué
[14:27:18] zartek !inventory
[14:28:47] zartek Tu as sans doute raison. A l'origine j'avais creer pour prendre des nouvelles valeurs lros de la connexion de l'utilisateur, la proc restore_logsusers a été fais par apres; et j'ai simuler l'insert normal et legerement modifier pour prendre les valeurs plus agé vers plus jeune
[14:29:10] zartek j'imagine que si tu insert tout, et que tu fais ta requette coutnt sa ira plus vite
[14:30:52] @ CrazyCat Comment ça insert de tout puis count ?
[14:31:20] zartek Je ne sais pas ce que tu veux dire
[14:31:39] zartek <@CrazyCat> en jouant avec count, max et group by, on peut remplir les tables sans faire de boucle
[14:31:48] @ CrazyCat Pour chaque table à remplir, tu peux le faire avec une et une seule requête
[14:31:58] zartek Je te laisse faire, je sais aps comment tu vois la chose
[14:33:17] zartek mais tu as sans aucun doute raison qui a mieux a faire qu'en "mode normal" bidouillé pour importer un part un avec moulte requettes. j'imagine qui a count vu tu sugere en jouant avec count, max et group by, on peut remplir les tables sans faire de boucle
[14:34:41] @ CrazyCat insert into logs_connections (CONNECT_TLS, CONNECT_WEB, HOST_CLOACKED, HOST_CLOACKED) select distinct sslco, webirc, host, realname from logusers group by sslco, webirc, host, realname;
[14:36:35] @ CrazyCat là c'est qu'un exemple pas forcément le bon, j'ai pas fais gaffe à quelle clé unique vous voulez utiliser
[14:44:53] @ CrazyCat Le seul truc qui peut être chiant, c'est pour avoir le dernier realname utilisé qui aura peut-être besoin d'une requête supplémentaire comportant un MAX(time) (très mauvais choix de nom de colonne d'ailleurs)
[14:45:40] @ CrazyCat Encore qu'avec une requête imbriquée on peut le remonter
[14:48:44] % Amand déjà avec cette modif c'est nettement plus rapide
[14:48:47] % Amand je re
[14:56:50] % Amand ok donc là en 8 minutes 140 000 importations de donnée
[14:56:53] % Amand c nettement plus rapide
[14:57:34] zartek Amand, tu pourrais faire un EXPLAIN EXTENDED SELECT `codepays`, `nick`, `username`, `ip`, `host`, `realname`, `webirc`, `sslco`, `time` FROM `logsusers` ORDER BY `logsusers`.`time` ASC;
[14:57:50] zartek Parce que a mon avis, c'est ce qui ralentis le tout
[14:58:48] zartek a mon avis, TYPE est en ALL et possible_keys en NULL
[14:59:48] % Amand bah déjà là, c'est bien plus rapide
[15:00:06] % Amand j'en suis quasiment à 200 000 , alors qu'avant hier j'avais mis 2 semaines pour avoir à peine 900 000 importations
[15:00:16] % Amand et là en 10 minutes, 200 000 , c'est largement mieux
[15:00:46] zartek Ouais, mais il doit recreer toutes les données dans une fichier pour trier (filesort) pour le ORDER BY `logsusers`.`time` ASC;
[15:01:10] zartek Mais si tu estime que c'est assez rapide, laisse tourné comme ca
[15:01:23] % Amand si vous avez mieux à me proposer, je suis preneuse
[15:03:29] zartek La il te faudra genre 4-5heures dapres mes calcules a l araches
[15:03:35] zartek pour l'import
[15:03:48] % Amand c'est beaucoup mieux que 2 semaines pour a peine 900 000 :')
[15:03:59] % Amand 4h c'est plus logique
[15:04:12] zartek c'est presque jouissif :')
[15:04:22] * [Guru] quit (Shutting down)
[15:04:45] * [Guru] joined #informatique
[15:04:46] * [Guru] set mode +o [Guru]
[15:05:18] @ CrazyCat Hum, ce serveur se fout de ma gueule
[15:05:27] @ CrazyCat Mais ça me va
[15:09:05] zartek Il ce passe quoi avec [guru] ?
[15:09:19] @ CrazyCat Je le migre de serveur
[15:09:27] @ CrazyCat (enfin non, je l'ai migré)
[15:19:39] zartek Il aurais pas un soucis de droits sur le fichier backups/db file ? Si il plante tout les x temps, tetre a l ecriture dun fichier. car j'imagine que ta mis ntp time pour etre syncrho avec le temps
[15:22:38] @ CrazyCat Non, il ne plante pas
[15:22:59] @ CrazyCat J'ai arrété les services sur un serveur et les ai démarrés sur l'autre
[15:23:18] zartek Ok, désolé je viens avec des trucs qui te font perte du temps à repondent pour rien.
Prev
Next