Set of tables within the MessageBoxDb associated per Host. Each time you set up a new BizTalk Host, this tables are going to be created in the MessageBox So, basically, the first time you configure BizTalk server the following set of tables are created for BizTalkServerApplicationHost (by default the first created host):
*note that in the image above the same applies to BizTalkServerIsolatedHost
BizTalk use this tables to keep references of all the messages that are “live” in the system . That is: Messages with active subscriptions, suspended messages and awaiting messages associated to each host.
The word references it is really important here since the messages itself are going to be saved in another set of tables ( messageparts, parts and fragments) and basically the host tables are just pointers to the Spool table.
Let see it more graphically:
You now know what host tables are, and because of that and Microsoft best practices, you should separate hosts based on different BizTalk functionalities available:
Creating multiple BizTalk hosts provides flexibility when configuring the workload in your BizTalk group and is the primary means of distributing processing across the BizTalk Servers in a BizTalk group. Multiple hosts also allow you to stop one host without affecting other hosts. For example, you may want to stop sending messages to let them queue up in the MessageBox database, while still allowing the inbound receiving of messages to occur. Separating host instances by functionality also provides the following benefits:
Since each host instance is a windows service consumes their own BizTalk machine resources (memory, CPU, disk utilization…)
Increasing the number of host instances will directly increase the number of SQL Server connections and generate additional load to the SQL Server machine hosting the MessageBoxDatabse.
BizTalk Server uses a polling mechanism to receive messages from its host queues in the MessageBox. The MaxReceiveInterval value in the adm_ServiceClass table of the BizTalk Management (BizTalkMgmtDb) database is the maximum value in milliseconds that each BizTalk host instance will wait until it polls the MessageBox again. The adm_ServiceClass table contains a record for the following service types:
By default, this value is set to 500 milliseconds and by reducing it, each Host Instance is going to pull their own queues faster.
Decreasing the value for MaxReceiveInterval may cause excessive CPU utilization on the SQL Server computer that houses the MessageBox database instance.