TrimTables Script Share Share via LinkedIn Reddit Email Copy Link Print On This Page Beginning with Appian 25.4, all new versions of Appian will require containers managed by Kubernetes to run in a self-managed environment. Review the 24.4 release notes and frequently asked questions to learn more. Purpose 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. When to Use 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 you've recently run the Sizing Script and the "Pre-Allocated Space Size" column reveals large values If you've recently executed a large bulk delete or archival of process data 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 No Appian components need to be stopped in order to run this script Although this script can be run while a site is fully up, it can be resource intensive and should only be run during non-business hours Trimmed rows are beneficial in that it allows the system to write new data to them. In order to release the memory, an engine restart would still be required. For sites with a High Availability (HA) configuration, this script only needs to be run on the primary engine, but all replicas of that engine would need to be restarted in order to release memory Location <APPIAN_HOME>/server/_scripts/tools/trimtables.sh (.bat) Script Options 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. Script Usage 1 ./trimtables.sh <option> <parameters> Help This command returns the help text for the script and usage information for each command. Usage 1 ./trimtables.sh help Show 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. Parameters and Usage 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 Stats This command returns detailed information for each of the above tables that are eligible to be trimmed. Parameters and Usage 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 Detailed Table Information 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 Trim This command will trim the eligible entries from the specified engines and tables. Parameters and Usage 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 Status Codes 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. Feedback Was this page helpful? SHARE FEEDBACK Loading...