New table entries are constantly being added to the Appian engines as various functions are executed throughout the system. Although the data may clear from these table entries when specific actions occur, like deletions and removals, there is still underlying metadata that remains which doesn’t allow the table entry to fully clear from the engine.
In certain circumstances, it may be beneficial for the system to clear, or “trim”, these excess table entries from the engine in order to reduce memory usage and reclaim some performance, provided that the rows exist at the end of the table. This script is a utility that allows the administrator to view and identify potential tables which can be trimmed, view basic statistics for these specified tables, and ultimately request the engines to trim off excess rows of the specified tables. These functions can all be performed without having to restart the system.
It is best practice to consult and work with the Appian Support team before executing this script in order to determine what kind of performance, if any, may be reclaimed. There are a few common scenarios where running this script can be effective:
If any of the above scenarios are true, then run the stats
function of this script to determine if any tables may be marked as ready for trimming, indicated by wherever the isTableReadyForTrim
column is true
. Work with the Appian Support Team to determine if then running the trim
function of this script to clear the unused entries of these tables may result in memory savings on the engine.
Additional Notes on Usage
<APPIAN_HOME>/server/_scripts/tools/trimtables.sh (.bat)
Option | Parameters Required | Meaning |
---|---|---|
help | No | Show usage information |
show | Yes | List of all the tables which are ever eligible to be trimmable on each engine |
stats | Yes | Statistics for all of the eligible trimmable tables |
trim | Yes | Issues a call to each specified engine to trim the specified tables. For each engine and table pair, a status code indicating the result of the trim is displayed. |
1
./trimtables.sh <option> <parameters>
This command returns the help text for the script and usage information for each command.
1
./trimtables.sh help
This command returns a list of the engines on the system and internal tables that exist on the engines, which are ever eligible to be trimmed.
Parameter | Required | Function |
---|---|---|
-e | Yes | Accepts one or more engine names or "all" |
1
./trimtables.sh show -e <engines>
Examples
1
2
./trimtables.sh show -e all
./trimtables.sh show -e process-analytics process-design process-execution0
This command returns detailed information for each of the above tables that are eligible to be trimmed.
Parameter | Required | Function |
---|---|---|
-e | Yes | Accepts one or more engine names or "all" |
-t | Yes | Accepts one or more table names or "all", where "all" will return stats for all trimmable tables on each engine specified in the -e parameter. |
1
./trimtables.sh stats -e <engines> -t <tables>
Examples
1
2
3
4
./trimtables.sh stats -e all -t all
./trimtables.sh stats -e all -t ilst workq
./trimtables.sh stats -e process-analytics process-design process-execution0 -t all
./trimtables.sh stats -e process-analytics process-design process-execution0 -t ilst
The following table statistics will be returned:
Column Name | Description |
---|---|
Engine | The engine that the trimmable table is located on |
Table | The name of the trimmable table |
isTableReadyForTrim | Boolean value to determine if the eligible table can be trimmed or not, based on table conditions like overall size and free rows |
usedRows | Of the number of allocated rows, the number of rows that have data present |
freeRows | Of the number of allocated rows, the number of rows that are without data |
excludedRows | Of the number of allocated rows, the number of rows that are currently inaccessible to any data processing |
allocatedRows | The total number of rows allocated for the table by the engine |
This command will trim the eligible entries from the specified engines and tables.
Parameter | Required | Function |
---|---|---|
-e | Yes | Accepts one or more engine names or "all" |
-t | Yes | Accepts one or more table names or "all", where "all" will trim all tables on each engine specified in the -e parameter. |
1
./trimtables.sh trim -e <engines> -t <tables>
Examples
1
2
3
4
./trimtables.sh trim -e all -t all
./trimtables.sh trim -e all -t ilst workq
./trimtables.sh trim -e process-analytics process-design process-execution0 -t all
./trimtables.sh trim -e process-analytics process-design process-execution0 -t ilst
For each engine and table pair, the following status codes indicating the result of the trim will be displayed after the command execution:
Status | Description |
---|---|
SUCCESSFUL_TRIM | The specified rows were trimmed off of the end of the table successfully |
LARGE_EXCLUDED_LIST_NO_TRIM | Tables with a large amount of excluded rows will only be trimmed once a day. If another attempt to trim these tables is made, the trim will be aborted, and this status code is returned. |
FREE_ROWS_BELOW_THRESHOLD | There are not enough free rows to trim off of the specified table at this time |
TRIMMABLE_ROWS_BELOW_THRESHOLD | There are enough free rows to trim, however there are not enough free rows at the end of the table, which is the only supported part of the table to trim. |
TrimTables Script