> For the complete documentation index, see [llms.txt](https://docs.umbraco.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.umbraco.com/umbraco-engage/17.latest/developers/introduction/performance.md).

# Performance

Umbraco Engage is optimized for performance and you configure it to optimize the performance further.

## Separate processes for storing, parsing, and reporting

As documented in the [Dataflow process](/umbraco-engage/17.latest/developers/introduction/dataflow-pipeline.md) there are different steps for [collecting](/umbraco-engage/17.latest/developers/introduction/dataflow-pipeline/data-collection.md), [storing](/umbraco-engage/17.latest/developers/introduction/dataflow-pipeline/data-storage.md), [parsing](/umbraco-engage/17.latest/developers/introduction/dataflow-pipeline/data-parsing.md), and [reporting](/umbraco-engage/17.latest/developers/introduction/dataflow-pipeline/reporting.md) the data. This is primarily done for performance reasons.

The collection is done in memory of the web server (or webservers) if you have multiple web servers in a load-balanced environment.

Storing causes the data to flow from the memory to the database. The memory is free again and can be used for other data. The data is stored in the raw data tables at that moment.

## Optimized infrastructure

You can also optimize your server infrastructure to tweak the performance. There are a few options that you could apply:

* You could set up more web servers in [a load-balanced setup](/umbraco-engage/17.latest/getting-started/for-developers/loadbalancing-and-cm-cd-environments.md). Each web server will collect data from the visitor, but you can specify which web server is responsible for parsing the data in the configuration.
* You can also set up one specific server only to parse the data. In that case, the other web servers will have almost no impact on their performance. To set this up you need to set the parameter '`IsProcessingServer`' to '`false`' in [your configuration file](/umbraco-engage/17.latest/developers/settings/configuration.md) for all servers that do not need to process the data and set it to '`true`' on the server(s) that is responsible for parsing. If there is no server with this setting set to '`true`' the raw data of Umbraco Engage will take place, but the data will never be processed.
* By default, the Umbraco Engage stores its data in the same database as Umbraco. It uses the default connection string of Umbraco (named '`umbracoDbDSN`'). It is possible to specify a separate database for all Umbraco Engage data. This could be another database on the same server or also another database server. To do this you need to specify a new connection string in your application and give that connection string a name. In [the configuration file](/umbraco-engage/17.latest/developers/settings/configuration.md), you can now specify this name in the field '`DatabaseConnectionStringName`'.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.umbraco.com/umbraco-engage/17.latest/developers/introduction/performance.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
