All the active triggers are stored in the database in the system table gn_TriggerTable. When a trigger is added or removed the system inserts or deletes it from the table, and then records the current data/time in another new database table called gn_ModifiedTable.
All the application and Back4 servers connected to the same database load the triggers from gn_TriggerTable when they need them (i.e. every time they perform a modification of some kind - object creation/modification/deleting/unspiking). They use the last modification date/time read from gn_ModifiedTable to avoid re-loading the triggers if they have not been modified since the last load, and (as a further optimization) check gn_ModifiedTable only every XX seconds. 'XX' is the value of the new 'TriggersDBCheckPeriod' parameter in ServerConfig:
<ServerConfig
xmlns="http://www.teradp.com/schemas/GN4/1/ServerConfig.xsd"
DatabaseAccessInterval="1000"
PublishRetryNumber="3"
PublishRetryInterval="1000"
TempDir=""
PrefetchItemCount="100"
PrefetchFulltextItemCount="10"
ResultsCachePurgePeriod="300"
TreeCachePurgePeriod="60"
AlivePeriod="300"
TriggersDBCheckPeriod="10">
. . .
The default value is 10 seconds.