Another tip from Hans-Peter Mayr at TechEd 2004, which I forgot to mention is to keep your schema small (less descriptive). Smaller schemas make for smaller message instances and a smaller impact on performance.
Don’t promote properties that are not to be used for routing purposes. Use distinguished properties if you need to use a message’s value within an orchestration.
As most of you know, BizTalk Server 2004 persists data at many points within the lifetime of a message. If you can keep persistence points down to a minimum, performance will increase. One tip I think Carlo Poli
already mentioned is to move your mappings from an external format into an internal format out of your orchestrations (where they shouldn’t reside in the first place) and place the map on the receive port which will be bound to your orchestration. This saves you 1 persistence point per message, again enhancing performance.
Wrapping an atomic scope around subsequent send shapes within your orchestration will also save you persistence points. Imagine a simple orchestration in which you subsequently have 1 receive shape, followed by 2 send shapes
Moving the 2 send shapes into an atomic scope together
will save you 1 persistence point and thus performance.
A common mistake made is not having SQL Server Agent running. This will avoid cleaning up DTC packages from being run and your DBMS will grow unchecked.