The Resource profiler results are stored in the number of tables within the specified database. The contents of these tables correspond to the contents of AQTime panels in which the profiling results are stored. This topic describes the structure of a database that stores the exported Resource profiler results.
The database consists of the following tables:
RESOURCE_PROFILER_CLASSES_DATA
RESOURCE_PROFILER_CREATION_CALL_STACK
RESOURCE_PROFILER_META_CLASSES_DATA
The relationship between the mentioned tables is illustrated in the image below. This relationship is similar to the relationship of the data in AQTime’s Explorer, Report and Details panels that hold the Performance profiler results.
The top-level table of the database is the INSTANCES one. It stores the list of exported result sets. Each exported result set has its unique identifier contained in the INST_ID field. All other tables of the database also have INST_ID fields. The values stored in these fields indicate to which result set a specific table item belongs.
The profiling results in the Explorer panel are organized into three categories, Classes Data, Objects and Errors. The Resource profiling information on classes, objects and errors, which is displayed in AQTime’s Report panel, is stored in the RESOURCE_PROFILER_CLASSES_DATA, RESOURCE_PROFILER_OBJECTS and RESOURCE_PROFILER_ERRORS tables, respectively. The profiling results displayed in the AQTime’s Details panel for the Objects category depends on which item of the Report panel is selected. That is why the tables storing the information displayed in the Details panel have a special PARENT_ID field that specifies the object to which a specific record relates.
The Resource profiler saves the call stack for each allocated memory block, created object or detected error. Information about call stack entries collected for objects and memory blocks are saved in the RESOURCE_PROFILER_CREATION_CALL_STACK table. Information about call stack entries collected for errors are saved in the RESOURCE_PROFILER_CALL_STACK table. Each row in these “call stack” tables correspond to a call stack entry. Both columns have the PARENT_ID column that contains the identifier of the object (or error). This is the same value that is stored in the ID column of the RESOURCE_PROFILER_OBJECTS and RESOURCE_PROFILER_ERRORS tables correspondingly.
The database tables having the META suffix in their names contain meta data about the profiled elements - classes, routines and lines.
The RESOURCE_PROFILER_META_ROUTINES table stores the information about profiled routines. The information about routine code lines is stored in the RESOURCE_PROFILER_META_LINES table. The PARENT_ID field of this table specifies the routine to which a specific line belongs.
Note: | The ID and REC_ID columns of the RESOURCE_PROFILER_xxxx tables are not key columns. They may contain repetitive values. In queries you should use these values along with the INST_ID value (the result set identifier). |
Below is detailed information about the tables.
The INSTANCES table
This table contains a list of exported result sets. Each result set is identified by the INST_ID value.
Field Name | Description |
---|---|
CAPTION | String. The name of the result set. |
COUNTER_DESCRIPTION | Not used for the Allocation Profiler. |
COUNTER_FREQUENCY | Not used for the Allocation Profiler. |
COUNTER_NAME | Not used for the Allocation Profiler. |
INST_ID | Integer. The result set’s identifier. |
The RESOURCE_PROFILER_CALL_STACK table
This table stores information about function calls that caused an error. The fields of this table are similar to the Call Stack table shown in AQTime’s Details panel when it displays the call stack for errors that occur during the application's execution. The PARENT_ID field value corresponds to the ID field value of items held in the RESOURCE_PROFILER_ERRORS table. Note that this value cannot be used as a record identifier. To find the corresponding record in the errors table you should also use the INST_ID value.
Table Field Name | Description |
---|---|
COL_ROUTINERID | Integer. Specifies the identifier of a routine (the REC_ID value) in the RESOURCE_PROFILER_META_ROUTINES table. To search for the routine in this table, you should use the COL_ROUTINERID value and the INST_ID value. |
ID | Integer. This field stores the identifier of an item within the list of items that are stored in the table and have the same INST_ID value. |
INST_ID | Integer. Identifier of the result set (the same value that is stored in the INST_ID column of the INSTANCES table). |
PARENT_ID | Integer. This field stores the identifier of an RESOURCE_PROFILER_ERRORS table row that is a parent for a specific item of the RESOURCE_PROFILER_CALL_STACK table. |
REC_ID | Integer. The identifier of a specific call stack item within the object’s call stack. The REC_ID value of the topmost routine in the stack is 0. |
The RESOURCE_PROFILER_CLASSES_DATA table
This table stores the information about the classes instances that were created during profiling. The fields of this table correspond to the fields of the Report panel for the Classes category.
Table Field Name | Description |
---|---|
COL_CLASS_NAME | This field stores the same values as the Class Name field on the Report panel for the Classes category. |
COL_LIVE_COUNT | Decimal. This field stores the same values as the Live Count field on the Report panel for the Classes category. |
COL_LIVE_SIZE | Decimal. This field stores the same values as the Live Size field on the Report panel for the Classes category. |
COL_MODULE_NAME | This field stores the same values as the Module Name field on the Report panel for the Classes category. |
COL_PEAK_CREATED | Decimal. This field stores the same values as the Peak Created field on the Report panel for the Classes category. |
COL_PEAK_SIZE | Decimal. This field stores the same values as the Peak Size field on the Report panel for the Classes category. |
COL_TOTAL_CREATED | Decimal. This field stores the same values as the Total Created field on the Report panel for the Classes category. |
COL_TOTAL_SIZE | Decimal. This field stores the same values as the Total Size field on the Report panel for the Classes category. |
ID | Integer. Identifier of the class within the result set. |
INST_ID | Integer. Identifier of the result set (the same value that is stored in the INST_ID column of the INSTANCES table). |
PARENT_ID | Not used. Always contains -1. |
REC_ID | Integer. Used as identifier of the class within the result set. |
The RESOURCE_PROFILER_CREATION_CALL_STACK table
This table stores the information about function calls that led to a specific object creation. The fields of this table are similar to the Creation Call Stack AQTime panel ones. The PARENT_ID field value corresponds to the ID field value of items held in the RESOURCE_PROFILER_OBJECTS table.
Table Field Name | Description |
---|---|
COL_HIT_COUNT | Integer. This field stores the same values as the Hit Count field of the table situated on the Creation Call Stack tab on the Details panel. |
COL_LINERID | Integer. This field stores the identifier of a source line that corresponds to the call stack entry. This is the same value that is stored in the REC_ID column of the RESOURCE_PROFILER_META_LINES table. |
COL_ROUTINERID | Integer. This field stores the identifier of a routine to which the call stack entry corresponds. This is the same value that is stored in the REC_ID column of the RESOURCE_PROFILER_META_ROUTINES table. |
ID | Integer. Identifier of the call stack entry in the list of items that are stored in the table and have the same INST_ID value. |
INST_ID | Integer. Identifier of the result set (the same value that is stored in the INST_ID column of the INSTANCES table). |
PARENT_ID | Integer. This field contains the identifier of an object, to whose call stack entry corresponds. This is the same value that is stored in the ID column of the RESOURCE_PROFILER_OBJECTS table. |
REC_ID | Integer. Position of a specific call stack entry within the object’s call stack. The REC_ID value of the topmost entry is 0. |
The RESOURCE_PROFILER_ERRORS table
This table stores the information about errors that occurred in resource management functions when the results were generated. The fields of this table are similar to the fields of the AQTime’s Report panel for the Errors category. The PARENT_ID field value corresponds to the ID field value of items held in the RESOURCE_PROFILER_THREADS table.
Table Field Name | Description | ||||||
---|---|---|---|---|---|---|---|
COL__ | Integer. Specifies the creation number of the error. This is the same value that is displayed in the # column of the Report panel. | ||||||
COL_DESCRIPTION | String. Specifies the error description. This is the same value that is shown in the Description field of the Report panel. | ||||||
COL_ERROR_CODE | Integer. Specifies the error code. This value is displayed in the Error Code column of the Report panel. | ||||||
COL_KIND | Integer. Contains one of the following values that specify the category of the resource management function that caused the error:
The field is used to display values in the Kind column of the Report panel. |
||||||
COL_NAME | String. The name of the function that caused the error. This is the same value that is displayed in the Name column of the Report panel. | ||||||
ID | Integer. This field stores the identifier of an item within the list of items that are stored in the table and have the same INST_ID value. | ||||||
INST_ID | Integer. Identifier of the result set (the same value that is stored in the INST_ID column of the INSTANCES table). | ||||||
PARENT_ID | Integer. This field stores the identifier of a thread, in which the error occurred. This is the same value that is stored in the ID field of the RESOURCE_PROFILER_THREADS table. | ||||||
REC_ID | Integer. The error identifier within the thread’s errors list. |
The RESOURCE_PROFILER_META_CLASSES_DATA table
This table stores the information about the classes whose instances were created during profiling. The fields of this table correspond to the fields of the Report panel for the Classes Data category.
Table Field Name | Description |
---|---|
COL_CLASS_NAME | String. This field stores the same values as the Class Name field on the Report panel for the Classes category. |
COL_MODULE_NAME | String. This field stores the same values as the Module Name field on the Report panel for the Classes category. |
COL_SYMBOL_MONIKER | String. This field stores the symbol moniker for the class whose data is held in a specific item. |
ID | Integer. Identifier of the class within the result set. |
INST_ID | Integer. Identifier of the result set (the same value that is stored in the INST_ID column of the INSTANCES table). |
PARENT_ID | Not used. Always contains -1. |
REC_ID | Integer. Used as identifier of the class within the result set. |
The RESOURCE_PROFILER_META_LINES table
This table stores the information about which code lines of the profiled module belongs to a certain routine. This table is related with the RESOURCE_PROFILER_META_ROUTINES table.
Table Field Name | Description |
---|---|
COL_SOURCE_LINE | Integer. This field stores the number of a code line that belongs to a specific routine. |
ID | Integer. Identifier of the line in the result set. |
INST_ID | Integer. Identifier of the result set (the same value that is stored in the INST_ID column of the INSTANCES table). |
PARENT_ID | Integer. Specifies the identifier of the routine, to which a specific code line belongs. This is the same value that is stored in the ID column of the RESOURCE_PROFILER_META_LINES table. |
REC_ID | Integer. The line’s identifier within the routine’s lines list. |
The RESOURCE_PROFILER_META_ROUTINES table
This table stores results for each single routine that was included in profiling tasks whose results were exported.
Table Field Name | Description |
---|---|
COL_HIT_COUNT | Integer. The number of routine calls that were profiled. |
COL_COMPILER | The information about which compiler was used to compile a specific routine. This field can store one of the following values:
|
COL_ADDRESS | Decimal. Routine’s address in memory. |
COL_ANALISYS_RESULT | String. Specifies if the routine was instrumented or not. If the routine was instrumented, this column is empty. Otherwise, the column displays a short description why the routine was not instrumented:
Less than 5 bytes - The routine occupies less than 5 bytes in memory (fo 32-bit applications). Less than 6 bytes - The routine occupies less than 6 bytes in memory (fo 64-bit applications). No line info - The routine was added to a line-level area, but the debug information stores no info about routine lines. Unsafe code - AQTime was not able to instrument the routine safely. This typically occurs when the routine’s binary code is intermixed with data areas. No ret instruction - The routine’s binary code does not contain the Duplicated code - The routine whose code coincides with code of another routine. |
COL_CLASS_NAME | String. Name of the class where the method is defined. |
COL_CODE_TYPE | String. Specifies the type of the routine’s code. The following values are possible:
|
COL_MODULE_NAME | String. The name of the module which contains the profiled routine. |
COL_NAMESPACE | String. Namespace of the method’s class (this column is used for managed routines only). |
COL_PROFILELINES | Integer. This field indicates whether a specific routine was profiled by lines. |
COL_ROUTINE_NAME | String. Method name. |
COL_SOURCE_FILE | String. Name of the source file for the method. The values for this column are read from the application’s debug info. If debug info does not contain information on the file name, the column is empty. |
COL_SOURCE_LINE | Integer. Source file’s line number where the method’s implementation begins. The values for this column are read from the application’s debug info. |
COL_SYMBOL_MONIKER | String. Symbol moniker for a specific routine. |
COL_TOKEN | Integer. The routine’s token. |
COL_UNIT_NAME | String. Name of the linkage unit that stores the routine. This column is used for unmanaged (native-code) routines only. |
ID | Integer. This field stores the identifier of an item within the list of items that are stored in the table and have the same INST_ID value. |
INST_ID | Integer. Identifier of the result set (the same value that is stored in the INST_ID column of the INSTANCES table). |
PARENT_ID | Not used. Always contains -1. |
REC_ID | Reserved. |
The RESOURCE_PROFILER_OBJECTS table
This table stores the information about the objects created during profiling. The fields of this table correspond to the fields of the Report panel for the Objects category. Each row corresponds to a row displayed in the Report panel.
Table Field Name | Description |
---|---|
COL__ | Decimal. This field stores the same values as the # field on the Report panel for the Objects category. |
COL_ADDRESS | Decimal. This field stores the same values as the Address field on the Report panel for the Objects category. |
COL_CLASSRID | Integer. Specifies the identifier of the object’s class. This field contains the same value as the one that is stored in the REC_ID column of the RESOURCE_PROFILER_META_CLASSES_DATA table. |
COL_GET_ | Integer. This field stores the same values as the Get # field on the Report panel for the Objects category. |
COL_SIZE | Decimal. This field stores the same values as the Size field on the Report panel for the Objects category. |
COL_THREADID | Integer. This field stores the identifier of a thread in within the RESOURCE_PROFILER_THREADS table. |
ID | Integer. Identifier of the object within the result set. |
INST_ID | Integer. Identifier of the result set (the same value that is stored in the INST_ID column of the INSTANCES table). |
PARENT_ID | Not used. Always contains -1. |
REC_ID | Reserved. |
The RESOURCE_PROFILER_THREADS table
This table stores the information on operating system identifiers of threads used during profiling.
Table Field Name | Description |
---|---|
COL_SIZE | Integer. This field stores the size of memory used by threads. |
COL_WIN32THREADID | Integer. This field stores the operating system identifiers of threads. |
ID | Integer. This field stores the identifier of an item within the list of items that are stored in the table and have the same INST_ID value. |
INST_ID | Integer. Identifier of the result set (the same value that is stored in the INST_ID column of the INSTANCES table). |
PARENT_ID | Not used. Always contains -1. |
REC_ID | Reserved. |
The RELATIONS table
This table contains the information about parent-child relationships between the database tables holding the Resource profiler results.
Field Name | Description |
---|---|
COL_CHILD_TABLE | String. The name of a child table. |
COL_PARENT_TABLE | String. The name of a parent table. The NULL value means that the table specified by the COL_CHILD_TABLE is a top-level table. |
ID | Integer. The identifier of a specific relation within the RELATIONS table. |
INST_ID | Integer. Identifier of the result set (the same value that is stored in the INST_ID column of the INSTANCES table). |
See Also
Resource Profiler
Resource Profiler Panels Reference
Exporting Profiling Results to Database