En regardant de plus près les index qui existent sur les tables, je m’aperçois que toutes les colonnes sont indexées. Par exemple dans le cas de la table des TX, cela fait beaucoup de monde !
generateCreateIndexes() {
return this.keys()
.map((fieldName) => {
return `CREATE INDEX IF NOT EXISTS idx_${this.name}_${fieldName} ON ${this.name} (${fieldName});\n`;
})
.join("");
}
keys(): (keyof T)[] {
return Underscore.keys(this.fields);
}
Il s’agit d’un vieux code. Mais cela doit ralentir de beaucoup l’écriture dans la table, non ? D’autant que tout indexés semble inutile.
Par ailleurs je vois dans le constructeur que l’on a pour chaque colonne un SqlFieldDefinition avec un boolean indexed. Le but initial était sans doute d’utiliser cette valeur pour savoir quelle colonne indexées ou pas.
Je me trompes @cgeek ? Redis moi stp, si tu te penses que ca peut-être utile que j’optimise des choses de ce côté là aussi.
La correction semble toute simple, mais globalement il faudra retester une synchro pour voir si ca change quelque chose.
EDIT: j’ai fait une MR !1430 sur la branche release/1.8
Que veux tu dire par synchro ? après un reset data ou pas ?
En effet, Il faut forcément supprimer les tables (.config/duniter/ ... *.db) sinon les ancien index existent toujours
As tu vu que j’ai pousser d’autres modifs sur la MR ? Notamment pour ajouter des colonnes indexées (celles qu’on requête quelque part). Ca peut améliorer encore.
et puis il ya la question de la place, que prennent ces index.
En partant d’une installation toute fraîche. Donc aucune donnée pré-existante.
J’ai buildé l’image docker puis lancé mon test vers 14h. J’ai pas vérifié ensuite si des choses avaient été ajoutées.
EDIT : apparemment tes dernières modifs sont postérieures à mon build. Je rebuild puis relance une synchro. Résultat demain car pas plus de dispo ce soir.
Merci @Pini ! Ce noeud 1.8 est-il accessible quelque part ? Je voudrais bien tester Cesium 1.7 dessus
L’idéal serait de cherry-picker toutes mes dernières MR (fans les branche fix//1.8/
Du coup, pour les perf, même si on ne gagne pas, je suis rassuré. Car cela aurait aussi pu être l’inverse : un oubli d’index de ma part qui ralenti
Et au niveau du volumes des fichier, vois tu une différence ? (fichiers *.db)