Displayed times and their meaning

In the various views of the Visual UI, you'll see all kinds of time values: DB time, .NET time and in different contexts, on different views. This section will briefly describe what these times mean in the contexts they're displayed in. In all different views which display hierarchical data, the following rule is applied: a parent node's times are the sum of all times of its children, eventually increased with a timing of the parent itself.

All times are specified in milliseconds. A Connection Usage Period is the period between Connection.Open and Connection.Close. As all activity takes place over an open connection, the times shown of activity over an open connection are always lower than or equal to the duration of the connection usage period in which the activity took place. This is easy to see on the Connections in chronological order as all activity nodes are children of the connection usage period's Open node.

View: Queries in context, grouped by method

This view contains two time columns: DB time and .NET time. The nodes which contain time data are the query / command nodes, the method call nodes simply contain the sum of all times of their children.

DB time means: the total time it took to execute the query on the database. This is measured by clocking the time the execute method on the DbCommand took to complete. This time includes the time it took to send the query and its parameters to the database and receive the acknowledgement that the query was execute. It doesn't include the time it took to read the result.

.NET time means: the total time it took to read and consume the results returned by the query in the form of a datareader. This is measured by clocking the time the enumeration through the datareader's rows took to complete, starting when the first Read() action is executed on the datareader. In general data-access code loops over the data-reader to materialize the rows into objects (e.g. entity class instances) so this time is a good indication how fast the entity objects are created using the datareader.
As it measures the active data read action on the datareader, the time it takes to read the resultset from the database server, including network latency, is included in this time. Large blocks of data returned by a query therefore will therefore show bigger .NET times.

View: Connections in chronological order

This view contains three time columns: Duration, DB time and .NET time. DB time and .NET time are identical to Queries in context, grouped by method.

Duration means: For a transaction, the time between Start Transaction and Commit / Rollback, displayed next to Commit / Rollback. For a connection usage period, it's the time between Open and Close, displayed next to Close. The time next to 'Connection #number' is the sum of all times of the children of the collection.
There can be a difference between the connection usage period duration time and the total DB times and .NET times. This is caused by the overhead inside the used ADO.NET provider to open / close a connection or commit a transaction, and overhead inside the used data-access system due to code executed after a connection was opened and before it was closed.

View: Queries, grouped

This view contains three time columns: DB time, .NET time and Total time. DB time and .NET time are identical to Queries in context, grouped by method. Total time is the DB time + .NET time. The view calculates an average per query group over the total time of each query and displays that in the column Total time at the bottom.