Bez obrazy, ale przesadzasz z myśleniem.
Zbierz swoje informacje, gdy masz je wszystkie razem, utwórz transakcję i wstawiaj nowe wiersze pojedynczo. Nie ma tutaj spadku wydajności, ponieważ transakcja będzie krótkotrwała.
Problem byłby, gdybyś utworzył transakcję w połączeniu, wstawił wiersz użytkownika, a następnie poczekał, aż użytkownik wprowadzi więcej informacji o profilu, wstawi je, a następnie poczeka, aż doda informacje adresowe, a następnie wstawi je, NIE ZRÓB TO , jest to niepotrzebnie długa transakcja i spowoduje problemy.
Jednak twój scenariusz (w którym masz wszystkie dane) jest prawidłowym wykorzystaniem transakcji, zapewnia integralność danych i nie obciąży bazy danych i nie będzie - sam w sobie - tworzyć zakleszczeń.
Mam nadzieję, że to pomoże.
PS Wadami podejścia Xml jest dodatkowa złożoność, Twój kod musi znać schemat XML, Twoja procedura składowana również musi znać schemat Xml. Procedura składowana ma dodatkową złożoność analizowania pliku xml, a następnie wstawiania wierszy. Naprawdę nie widzę zalet dodatkowej złożoności w przypadku prostej, krótkotrwałej transakcji.