J'essaie de comprendre comment je peux paralléliser un code de procédure pour créer des enregistrements dans une table.Paralléliser TSQL CLR Procédure
est ici la situation (désolé je ne peux pas donner beaucoup de la manière de code réel):
Je dois prévoir quand un service de véhicule sera nécessaire, en fonction de la date de service précédent, le kilométrage actuel, le kilométrage quotidien prévu et la différence de kilométrage entre chaque service. Dans l'ensemble, c'est très procédural, pour chaque véhicule, je dois prendre en compte son historique, son état de service actuel, le kilométrage journalier (qui peut changer en fonction des plages définies dans le plan de kilométrage), et la séquence de entretien.
Actuellement, je calcule tout cela en PHP, et cela prend environ 20 secondes pour 100 véhicules. Comme cela pourrait être étendu à plusieurs milliers, 20 secondes sont beaucoup trop longues.
J'ai donc décidé d'essayer de le faire dans une procédure stockée CLR. Au début, j'ai pensé que j'essaierais de le multithread, mais j'ai rapidement découvert que ce n'était pas facile à faire dans l'hôte TSQL. Il m'a été recommandé d'autoriser TSQL à travailler sur la parallélisation elle-même. Pourtant, je n'ai aucune idée de comment. S'il n'y avait pas le fait que le code doit créer des enregistrements que je pourrais le définir en fonction et faire:
SELECT dbo.PredictServices([FleetID]) FROM Vehicles
Et TSQL devrait comprendre qu'il peut paralléliser, mais je ne connais pas d'autre alternative pour les procédures.
Y at-il quelque chose que je peux faire pour paralléliser cela?