Guidelines for Sizing Database
- Last UpdatedJun 06, 2024
- 9 minute read
This document explains the database growth pattern of AVEVA Work Tasks databases. It is intended to help the user understand about the disk space, memory, and processor speed requirements for best performance of AVEVA Work Tasks.
Note: The performance characteristics presented in this document are not to be interpreted as a benchmark measurement for all the supporting systems. Only empirical testing on the target system can provide accurate data. The actual database size, memory used, I/O required is based on the respective implementation, concurrent user access, and so on.
Overview
AVEVA Work Tasks supports different versions of Microsoft SQL Server to store operational data. The analysis for database sizing is done on Microsoft SQL Server 2008 (SP3) - 10.0.5512.0 (X64).
By default, AVEVA Work Tasks databases are set to grow in an "Auto growth" mode as SQL Server default settings. Based on the best practices recommended by Microsoft and database experts, you should set the size of the repository database depending on the transactions and growth pattern.
A database should be sized appropriately so that the database does not need to auto grow, but should be configured by the user when required. It is recommended to configure the File Growth value to fix growth, based on the database growth pattern.
A desirable approach is to have a separate disk for repository and farm database.

Note: It is highly recommended that a Database Professional performs the tasks mentioned in this document. The purpose of the document is to provide guidelines for sizing AVEVA Work Tasks database. Essential maintenance tasks may vary based on specific implementation.
Farm Database
The farm database is a configuration database, basically used to map repositories, support Enterprise Server configuration, and so on. The database may grow when there is a massive usage of communication activities, such as email and SMS.
Repository Database
The repository database is a database for the repository related data. All the operational data required for the application exists in the database to keep the database healthy. Data such as various activities related information, the list data, forms definition, and workflow definitions is stored in the repository database. The database growth always relates to the features, such as list and queue, used by the application.
BI Database
The BI database is a placeholder for future development on business intelligence reports and does not occupy any space.
Parameters that affect the performance of an application include the environment, various databases involved, kind of workflow, and number and types of activities. For database sizing, the prospective data is captured to show the database growth pattern based on a typical workflow having 72 activities with a combination of engine and human activities. The information of the environment on which the data is captured along with the workflow used is included.
Database Growth Pattern
Table Level Growth
Table level growth is purely based on the features and Workflow used. Based on the sample workflow, the table level record growth is as follows:
|
Table Name |
Number of Records per 5000 instances |
Number of Records per Instance |
Remarks |
|---|---|---|---|
|
SKChannelWorkItem |
20000 |
4 |
|
|
SKHWSActivity |
20000 |
4 |
|
|
SKWorkItem |
20000 |
4 |
|
|
SKWorkItemTransaction |
20000 |
4 |
|
|
SWActionEventLog |
500000 |
100 |
|
|
SWActionEventLong |
500000 |
100 |
|
|
SWExecute |
5000 |
1 |
|
|
SWExecutionDetails |
360000 |
72 |
There are 72 activities for the workflow. Each activity has a record. |
|
SWLong |
5000 |
1 |
|
|
SWVariables |
45000 |
9 |
Table Size
Farm Database
The details regarding the table size help in arriving at the maximum database growth pattern.
To calculate the storage needs, multiply the average row length and the number of records per month that will be entered into the database. This provides the details of the amount of storage required by each table. If a table has any variable length string fields, add 4 bytes to the average row length to account for overhead, which SQL Server requires when maintaining the table.
The following table shows different tables of the repository database and their size:
|
Table_name |
Byte_Length |
|---|---|
|
SKActivityNameConcurrency |
1220 |
|
SKActivityTypeConcurrency |
720 |
|
SKAddInProviders |
1983 |
|
SKASServerStatus |
1057 |
|
SKAzureServiceBusSettings |
2776 |
|
SKBizTalkMessages |
77 |
|
SKBizTalkRules |
1109 |
|
SKCacheInfo |
224 |
|
SKConcurrentThreadPools |
520 |
|
SKConcurrentUsers |
32 |
|
SKDataSource |
1106 |
|
SKDBScriptVersionStamp |
204 |
|
SKDeviceRegistration |
3610 |
|
SKEventServicePorts |
548 |
|
SKFarm |
1244 |
|
SKInMemoryActivityCount |
1020 |
|
SKNotificationMessage |
1261 |
|
SKProduct |
553 |
|
SKRepository |
5357 |
|
SKRepositoryMapping |
72 |
|
SKServer |
1861 |
|
SKService |
1276 |
|
SKServiceMapping |
1336 |
|
SKSiteUserGroups |
1124 |
|
SKWebSite |
3762 |
|
SWProcessedMails |
16 |
|
SWProcessedSMS |
16 |
|
SWSMSException |
20 |
|
SWSMSFilters |
2740 |
|
SWSMSs |
48 |
|
SWSMTPMailException |
20 |
|
SWSMTPMailFilters |
2740 |
|
SWSMTPMails |
48 |
|
SWTaskBizTalkMsgTimeout |
542 |
|
SWTaskEmailTimeout |
1042 |
|
SWTaskSMSTimeout |
1030 |
|
All_Tables |
42314 |
Repository Database
Default table size of the repository database is as follows and this may help to arrive at maximum database growth pattern.
|
Table_name |
Byte_Length in KB |
|---|---|
|
SKAddInProviders |
1983 |
|
SKAddInProviderSettings |
1057 |
|
SKAlternateActorRules |
1175 |
|
SKBamAlertManager |
1040 |
|
SKBAMConditionWorkItemFields |
808 |
|
SKBAMConditionWorkItems |
596 |
|
SKBamDashboard |
1042 |
|
SKBamMenu |
3640 |
|
SKBAMResourceWorkAnalysis |
636 |
|
SKBAMTypeofWork |
24814 |
|
SKBAMUniqueTypeOfWork |
2121 |
|
SKBAMWebService |
6516 |
|
SKCalendar |
1114 |
|
SKCalendarDay |
764 |
|
SKCalendarWeekDays |
560 |
|
SKChannelWorkItem |
6820 |
|
SKChildWorkflows |
2454 |
|
SKCrossDomainUserRoles |
2524 |
|
SKDBScriptVersionStamp |
204 |
|
SKDeviceSubscription |
2403 |
|
SKEAssemblyList |
8093 |
|
SKEAuditTrail |
5283 |
|
SKEBizTalkConnections |
5539 |
|
SKEConnection |
10335 |
|
SKECustomControls |
2478 |
|
SKEDynamicLists |
5508 |
|
SKEEventAssociations |
11103 |
|
SKEEventProviders |
5961 |
|
SKEFolderList |
9653 |
|
SKEForm |
6007 |
|
SKEFormDataGridViews |
2592 |
|
SKEFormDefinition |
1526 |
|
SKEGridConfigurations |
3247 |
|
SKEImpersonationUsers |
6527 |
|
SKEListDefinition |
1907 |
|
SKEListFormAssociation |
1551 |
|
SKEListItemDataNV |
99599 |
|
SKEListItemDataTemp |
1064 |
|
SkeListItemWorkflow |
1341 |
|
SKEListOperations |
3284 |
|
SKEListTemplateTable |
1411 |
|
SKEListViews |
2245 |
|
SKEListWIPItems |
673 |
|
SKELookup |
6223 |
|
SKENavigationDetails |
8238 |
|
SKEntity |
1272 |
|
SKEntityDataSourceProvider |
1756 |
|
SKEPopupTemp |
56 |
|
SKERightsControlProviders |
1604 |
|
SKERightsListMapping |
548 |
|
SKEscalation |
1825 |
|
SKESecurityGroup |
5558 |
|
SKESecurityRights |
6727 |
|
SKESGResourceMapping |
5667 |
|
SKESGRightsMapping |
628 |
|
SKESGViewRightsMapping |
617 |
|
SKESSRSConnection |
4412 |
|
SKESSRSReports |
3639 |
|
SKESSRSTemplate |
3411 |
|
SKEUsers |
6663 |
|
SKEventBindings |
16436 |
|
SKEventServicePorts |
548 |
|
SKEVirtualTable |
1773 |
|
SKEWebPartLayouts |
1056 |
|
SKEWebParts |
1566 |
|
SKEWebPartTemplates |
2036 |
|
SKEWorkflow |
5507 |
|
SKEWorkflowDefinition |
1348 |
|
SKEWPApplications |
1552 |
|
SKEWPPaths |
1056 |
|
SKEWPPersonalizationAllUsers |
40 |
|
SKEWPPersonalizationPerUser |
72 |
|
SKEWPRoles |
1568 |
|
SKEWPSchemaVersions |
513 |
|
SKEWPUsers |
1097 |
|
SKEWPUsersInRoles |
32 |
|
SKExecutionInstanceData |
544 |
|
SKExternalConnectionDetails |
2587 |
|
SKExternalConnections |
1711 |
|
SKFavouritesURI |
1816 |
|
SKFWFolderList |
5707 |
|
SKHWSActivity |
7881 |
|
SKInvokeWebServices |
3141 |
|
SKListDefinitionVersionStamp |
20 |
|
SKListTables |
1025 |
|
SKMultipleTimeoutWarning |
833 |
|
SKPackage |
5507 |
|
SKPackageAttachment |
2682 |
|
SKPackageConfigurations |
1148 |
|
SKPackageDataTemp |
540 |
|
SKPackageDetails |
977 |
|
SKPackageHistory |
3361 |
|
SKPackageTemplate |
5507 |
|
SKPackageTemplateAttachment |
2683 |
|
SKPackageTemplateDetails |
977 |
|
SKPersistedException |
3912 |
|
SKPersonalization |
640 |
|
SKQueue |
1389 |
|
SKQueueAccessRights |
1042 |
|
SKQueueParticipants |
588 |
|
SKReplaceUserLog |
4623 |
|
SKRibbonBarXmlInfo |
1832 |
|
SKRoleRefresh |
559 |
|
SKScheduler |
1661 |
|
SKSchedulerHistory |
9728 |
|
SKSchedulerProcessInfo |
1128 |
|
SKSPAlertedWorkflows |
5062 |
|
SKSPWebSettings |
3216 |
|
SKTaskStatusTypes |
1341 |
|
SKTempFormPrint |
556 |
|
SKTemplates |
2833 |
|
SKTemplatesLong |
48 |
|
SKTimeZones |
1016 |
|
SKUserReports |
1733 |
|
SKUserReportsDetails |
1227 |
|
SKVirtualActor |
6126 |
|
SKVirtualRole |
5386 |
|
SKWorkflowCorrection |
1101 |
|
SKWorkflowEvents |
882 |
|
SKWorkItem |
1521 |
|
SKWorkItemCounter |
1268 |
|
SKWorkItemData |
540 |
|
SKWorkItemFields |
4392 |
|
SKWorkItemFieldsDefinition |
2986 |
|
SKWorkItemFieldTypeCounts |
804 |
|
SKWorkItemTransaction |
946 |
|
SKWorkItemTransactionTypes |
522 |
|
SKWorkItemView |
1288 |
|
SWActionEventLog |
20 |
|
SWActionEventLong |
20 |
|
SWCode |
9648 |
|
SWCustomTimerDetails |
598 |
|
SWExecute |
1276 |
|
SWExecutionDetails |
946 |
|
SWFECount |
1032 |
|
SWFileMonitor |
721 |
|
SWLong |
20 |
|
SWProduction |
1020 |
|
SWProductionLong |
20 |
|
SWRaw |
20 |
|
SWReportSets |
1424 |
|
SWScriptCode |
2248 |
|
SWStaging |
1076 |
|
SWStagingLong |
20 |
|
SWTaskForResuming |
532 |
|
SWTaskList |
1332 |
|
SWVariables |
292 |
|
SWWebServiceDetails |
4648 |
|
SWWorkflowEventLog |
20 |
|
All_Tables |
504837 |
|
Bytes |
KB |
MB |
|---|---|---|
|
504837 |
493.0049 |
0.48145 |
Environment
The environment used to capture the database sizing related information is the Enterprise server with two web server nodes, two workflow engine servers, and an SQL Server mentioned as Database Server. The system configuration of the environment is as follows:
Web Server Configuration

Engine Servers
The configurations for the engine servers are same as that of the Web Server.
Database Server

|
Server Startup Time |
Aug 16 2013 4:30PM |
|
Server Instance Name |
SKELTARND2 |
|
Product Version |
10.0.5512.0 |
|
Edition |
Developer Edition (64-bit) |
|
Windows ProcessID |
2232 |
|
Active Sessions |
1 |
|
Active Transactions |
9 |
|
Active Databases |
50 |
|
Total Server Memory (KB) |
29810440 |
Workflow Used
The database growth pattern is captured based on the performance test workflows, which include 72 activities altogether and 5 queues with a combination of automatic dispatch pattern and manual pick. In parallel, work item tasks are assigned to the queues. The workflow diagram is as follows:

LogFile Size
Every SQL Server database has a transaction log, which records all the transactions and the database modifications made by each transaction. The transaction log must be truncated on a regular basis to keep it from filling up. However, some factors can delay log truncation. Therefore, monitoring log size is important. This can be achieved by logging some operations minimally to reduce their impact on transaction log size.
The transaction log is a critical component of the database. If there is a system failure, the transaction log is required for database recovery to bring the database back to a consistent state.
Note: Ensure that the transaction log is never deleted or moved without having a clear understanding of its effects.
For more information regarding management of log files, it is recommended to consult a Database Professional.
|
Number of Workflow instances |
Log file Growth MB |
|---|---|
|
433000 |
9697 |
|
438000 |
9697 |
|
443000 |
9697 |
|
448000 |
9697 |
|
453000 |
9697 |
|
458000 |
9697 |
|
463000 |
9697 |
|
468000 |
9697 |
|
473000 |
9697 |
|
478000 |
9697 |
|
483000 |
9697 |
TempDB
A temporary database is not directly used by AVEVA Work Tasks. However, the SQL Server internally uses this database for operations, such as sorting indexing. Therefore, it is recommended to maintain an ideal space for this database, to facilitate the above mentioned SQL server internal operations.
A default installation of any SQL Server edition will create a TempDB database with an 8MB data file and a 1MB transaction log file. For a lot of SQL Server installations, these file sizes are not sufficient. However, they are configured to auto grow by 10% as needed.
The auto grow feature enables a more hands-off approach to maintaining many SQL Server installations. However, this approach is not recommended because the database storage files cannot be used while they are autogrowing. This can lead to fragmentation of the files on the hard disk; thereby, leading to poor performance.
This recommendation is applicable to any SQL Server database, but it is even more relevant for the TempDB. When you restart your SQL Server instance, the TempDB is re-created (files will be reused if they already exist) and sized to the value specified in the database properties. The default values are 8MB for the data file and 1MB for the log file.
Note: The I/O operations are the most time consuming processes and the TempDb is being used exclusively by SQL Server for most of its operations. Therefore, it is recommended to have a separate disk for the TempDb than the operational database. A managed growth gives better performance. Please consult the Database Professional for the desired settings.
CPU Utilization
The CPU utilization on the database server is based on the queries or updates considered as a part of the workflow engine database activities. The CPU utilization varies with user interaction taken place as part of the UI activities. Various other parameters such as file fragmentation, I/O overheads, and so on also affect the CPU utilization. For more realistic information on the implementation, please consult a Database Professional.
Graph shows the CPU utilization.

I/O Statistics
Reading and writing to the disk is the heart of any database management system. Input/Output (I/O) performance is critical for databases and can make or break an application. In many environments, I/O is the main bottleneck for the database performance. The main task of I/O is to retrieve and to store records within files. The I/O performance can be improved by analyzing the specific issues by a Database Professional. Various SQL Server reports are available for analyzing the I/O related performance. The I/O performance purely depends on the specific environment. Thus, providing a snapshot of the I/O statistics may not be helpful.
http://blogs.msdn.com/b/sqljourney/archive/2013/06/04/how-to-troubleshooting-sql-server-i-o-bottlenecks.aspx
http://www.quest.com/backstage/images/promotions/SQLServer-Perfmonance-Poster.pdf
Performance Matrix
Following are some of the important parameters to consider for database sizing. Ideally, an implementation should provide the following performance. Count values above the following are not advisable.
|
Area |
Maximum Value |
Type |
Remarks |
|---|---|---|---|
|
Number of Unattended Work items across queues |
60000 |
Supported |
Ideally there should not be this many items |
|
Number of not acted Items in a Queue |
15000 |
Supported |
In the test environ 4 queues populated with 15000 items each |
|
Execution Time in ms for an action on 100GB data |
65 |
Threshold |
Execution time in ms for an activity |
|
Time taken in ms for 72 Actions on 100GB |
4750 |
Threshold |
Execution time in ms for a workflow instance |
|
Number of execution of Workflow instance at any point of time on a Server |
32 |
Threshold |
At any point of time on any server, 32 instances of workflow can be running |
References
For further information, refer the following links.
http://technet.microsoft.com/en-us/magazine/2008.08.database.aspx
Definitions
|
Term |
Definition |
|---|---|
|
Logfile |
Database log file |
|
TB |
Tera Bytes |
|
GB |
Giga Bytes |
|
MB |
Mega Bytes |
|
DB |
Database |
Special Notes
-
Actual growth pattern will be based on the implementation.
-
Set the size of the database for a better performance.
-
Keep enough space in the SQL Server TempDB.
-
Use 64-bit SQL server environment for better performance based on business requirement.
-
Actual server configuration purely depends on business requirement, such as concurrent users and workflow instances.
-
Every implementation should have proper database management monitored by a Database Professional.
-
I/O statistics must be monitored to check if it affects the actual performance an application.
Conclusion
The following values are approximate values, and might vary based on the implementation:
-
Average Growth of Database per instance is 118.1726 KB.
-
Average Growth of Database per instance per Action is 1.641286 KB.
-
Database size requirement per day for a workflow having 10 activities and 100 instance is 1.6412 * 10 * 100 = 1641.2 KB, that is, 1.627MB approximately.