Bonjour,
Nous disposons d'une base de données SQL qui est partitionnée pour chaque client selon un ID (ce n'est pas une partition par RANGE).
Mon problème est double : lorsqu'on crée ou supprime une partition, avec les requêtes :
SQL réalise un full scan de la table même s'il n'y a encore aucune ligne qui corresponde à la nouvelle partition. C'est gênant dans la mesure où nos tests fitnesse commencent par créer un client test (et ajoutent une nouvelle partition), et finissent en supprimant le client (et la partition), donc les changements dans le partitionnement sont relativement fréquents.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ALTER TABLE "table_name" ADD PARTITION (PARTITION "client_id_value" VALUES IN ("client_id_value")); ALTER TABLE "table_name" DROP PARTITION "client_id_value";
Le deuxième problème est plus gênant, c'est que le full scan est aussi effectué lors d'un INSERT. Le code est dans une procédure stockée de la forme générale :
Selon la documentation, ajouter l'argument PARTITION dans un INSERT ne fait que vérifier que la ligne à insérer appartient bien à la partition.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 START TRANSACTION; INSERT INTO "table_name" (column_names) VALUES (values) ON DUPLICATE KEY UPDATE (updated_values) COMMIT;
Avez vous des pistes ?
Merci d'avance
Partager