← Retour au portfolio
PREMIER STAGE — BTS SIO SLAM

Outil d'analyse de bases de données

Application WinForms C# pour centraliser MySQL et Azure SQL

C# .NET WinForms MySQL Azure SQL Async / Multithreading information_schema

L'objectif

Développer une application WinForms en C# capable de centraliser, analyser et maintenir plusieurs bases de données MySQL et Azure SQL réparties sur les environnements DEV / PREPROD / PROD.

Le but : faciliter l'administration au quotidien, détecter les anomalies (index inutiles, clés étrangères orphelines, tables surdimensionnées) et automatiser les tâches répétitives. Un véritable mini-outil DBA interne.

Architecture

Fonctionnalités principales

Analyse des tables

Taille, nombre de lignes, nombre d'index, ratio index/données, date de mise à jour. Classe DbStatsExtractor.

Analyse des index

Détection des index non utilisés, doublons, invisibles. Classe IndexAnalyzer. Objectif : optimiser les performances et la taille des bases.

Analyse avancée

Repérage des clés étrangères orphelines, des colonnes / tables / schémas inutilisés.

Export personnalisable

Formats CSV et HTML, sélection des colonnes via checkboxes (taille DB, lignes, index, date, ratio…).

Maintenance

Création automatique de la base interne, reset, suppression, rechargement des métadonnées.

Support Azure SQL

Couverture complète : analyse multi-bases, connexions multiples (une par base), requêtes sys.resource_stats et vues sys.

Monitoring temps réel — verrous & exécutions

Une fonctionnalité dédiée permet de visualiser les verrous actifs et les requêtes en cours d'exécution sur une base.

L'utilisateur choisit le temps de rafraîchissement (polling configurable) pour suivre en direct ce qui se passe côté serveur — utile pour diagnostiquer les blocages et identifier les requêtes longues.

Performance & UX

Difficultés rencontrées

Stack technique

Bilan

Un vrai mini-outil DBA interne. Le stage m'a permis de monter en compétence sur la manipulation SQL avancée, la programmation asynchrone et la conception d'une architecture modulaire en C#.

J'ai aussi appris à penser un outil destiné à des utilisateurs internes plus expérimentés que moi : ergonomie sobre, retours d'information clairs, possibilité de couper un traitement long.

Captures d'écran

[ screenshots à venir ]
[ RETOUR AU PORTFOLIO ] [ ME CONTACTER ]