database performance stability System Administrator Jahia 7.3 Jahia 8 Legacy

What is the purpose of each Jahia database table? Can I remove data from tables to save space in my database?

Question

Please do not attempt to alter the tables content without the validation by Jahia support team.

The customer has several database tables added by Jahia and some of them considerably increase in size with time.

A better understanding of the purpose of such tables is required and if Jahia allows mechanisms to periodically or manually remove data from them.

Answer

Table

Description

Option to Purge Items

jahia_contenthistory

Row represents a content change event entry

Specifying when content history is purged

jahia_db_test

Test only

Manually

jahia_external_mapping

Used in module external-provider to configure an external data provider. Maps a valid internal UUID to org.jahia.services.content.impl.external.ExternalData ID

From Jahia Support Tools -> JCR Providers -> JCR Broswer -> Actions (remove)

jahia_external_provider_id

Used in module external-provider to configure an external data provider. Row represents the key of an external data provider. This list of keys with the respective mount points and the data source class used in the mapping can be found under Administration Mode -> System Components -> External Provider Management

From Jahia Support Tools -> JCR Providers -> JCR Broswer -> Actions (remove)

jahia_journal

This table keeps a full log of all operations made on Jahia so it can be replayed using a remote publication feature

How to disable and purge Jahia Journal

 

jahia_nodetypes_provider

Row represents a cnd file mapped to a filename so they are accessible for all nodes on a cluster. Recommended articles:

How to make a change in definition when content already exists

Moving definitions

Can be purged after stopping Jahia processing node and before starting it again

jahia_qrtz_blob_triggers

Table containing blob data for Quartz triggers.

Quartz Tutorials - More About Triggers

Not used by default

jahia_qrtz_calendars

Table containing Quartz calendars.

Quartz Tutorials - Calendars section

Not used by default

jahia_qrtz_cron_triggers

Table containing Quartz cron triggers configured in Jahia.

How to add a cron job

Quartz Tutorials - CronTrigger

From Jahia Support Tools -> Job Administration -> Show actions -> Cancel Job

jahia_qrtz_fired_triggers

Table shows relevant information about Quartz Jobs which are not currently finished. Successfull executions are automatically removed from this table.

Useful to verify the status of long running Quartz jobs for troubleshooting.

Not recommended

jahia_qrtz_job_details

Display implementation details about Quartz jobs.

Quartz Tutorials - Mora about Job and Job Details

From Jahia Support Tools -> Job Administration -> Show actions/Show all jobs -> Cancel Job

jahia_qrtz_job_listeners

Table containing details about Quartz job listeners.

Quartz Tutorials - TriggerListeners and JobListeners

Quartz Configuration Reference - Configure Global Listeners

Not used by default

jahia_qrtz_locks

Table containing internal Quartz locks.

No

jahia_qrtz_paused_trigger_grps

Table indicating paused Quartz trigger groups.

Not used by default

jahia_qrtz_scheduler_state

Table containing the state of Quartz Schedulers in Jahia.

No

jahia_qrtz_simple_triggers

Table listing Quartz simple triggers.

Quartz Tutorials - SimpleTrigger

Not used by default

jahia_qrtz_trigger_listeners

Table containing details about Quartz trigger listeners.

Quartz Scheduler Tutorials - TriggerListeners and JobListeners

Quartz Configuration Reference - Configure Global Listeners

Not used by default

jahia_qrtz_triggers

Table containing all Quartz triggers.

Jahia Jobs are usually of type CRON.

Quartz Scheduler Tutorials - Mora About Triggers

From Jahia Support Tools -> Job Administration -> Show actions -> Cancel Job

jbpm_attachment

The attachment entity describes attachments that have been added to the task.

jBPM Human Tasks Documentation

Using jBPM6 to create Workflows

Not used by default

jbpm_bamtask_summary

Collects information about tasks that is used by BAM engine to build charts and dashboards.

jBPM Human Tasks Documentation

Using jBPM6 to create Workflows

Not used by default

jbpm_boolean_expression

The booleanexpression entity represents an expression that evaluates to a boolean. These expressions are used in order to determine whether or not a constraint should be applied.

jBPM User Guide - Table 13.15

Using jBPM6 to create Workflows

Not used by default

jbpm_content

The content entity represents the content of a document, output document, fault or other object.

jBPM User Guide - Table 13.23

Using jBPM6 to create Workflows

No

jbpm_context_mapping_info

Entity contains information about contextual information mapped to ksession. This is an internal part of RuntimeManager and can be considered optional when RuntimeManager is not used.

jBPM Persistence and Transactions Documentation

Using jBPM6 to create Workflows

Not used by default

jbpm_correlation_key_info

The CorrelationKeyInfo entity contains information about correlation keys assigned to the given process instance - loose relationship as this table is considered optional used only when correlation capabilities are required.

jBPM Persistence and Transactions Documentation

Using jBPM6 to create Workflows

Not used by default

jbpm_correlation_property_info

The CorrelationPropertyInfo entity contains information about correlation properties for the given correlation key that is assigned to the given process instance.

jBPM Persistence and Transactions Documentation

Using jBPM6 to create Workflows

Not used by default

jbpm_deadline

The deadline entity represents a deadline for a task.

jBPM User Guide - Table 13.4.2

Using jBPM6 to create Workflows

Not used by default

jbpm_delegation_delegates

Join table between the task entity and the organizationalentity for relationships.

jBPM User Guide - Table 13.7

Using jBPM6 to create Workflows

Not used by default

jbpm_email_header

The email_header entity describes an e-mail that will be sent as part of a notification.

jBPM User Guide - Table 13.17

Using jBPM6 to create Workflows

Not used by default

jbpm_escalation

Join table between the task entity and the organizational entity for relationships.

jBPM User Guide - Table 13.14

Using jBPM6 to create Workflows

Not used by default

jbpm_event_types

The eventtypes entity contains information about events that a process instance will undergo or has undergone.

jBPM User Guide - Table 8.3

Using jBPM6 to create Workflows

Not used by default

jbpm_i18ntext

The i18ntext entity is used by a number of different other entities to store text fields. The deadline, notification, reassignment and task entities use this entity to store descriptions, subjects, names and other documentation.

Although all foreign keys are not nullable, they will be set to 0 if they are not being used.

In Jahia's context is used for publications/reviews tasks.

jBPM User Guide - Table 13.24

Using jBPM6 to create Workflows

No

jbpm_node_instance_log

This table contains more information about which nodes were actually executed inside each process instance. Whenever a node instance is entered from one of its incomming connections or is exited through one of its outgoing connections, that information is stored in this table.

jBPM User Guide - Table 8.6

Using jBPM6 to create Workflows

Yes, manually using Jahia Support Tools -> Jahia DB Query Tool

jbpm_notificat_email_headers

Join that describes and qualifies which email_header entities are part of a notification.

jBPM User Guide - Table 13.18

Using jBPM6 to create Workflows

Not used by default

jbpm_notification

The notification entity describes a notification generated by an escalation action.

jBPM User Guide - Table 13.16

Using jBPM6 to create Workflows

Not used by default

jbpm_notification_bas

Join table that describes which business administrators will be notified by a notification.

jBPM User Guide - Table 13.21

Using jBPM6 to create Workflows

Not used by default

jbpm_notification_recipients

Join table that describes which recipients entities will be received a notification.

jBPM User Guide - Table 13.22

Using jBPM6 to create Workflows

Not used by default

jbpm_organizational_entity

The organizationalentity entity is extended to represent the different people assignments that are part of the task.

In Jahia's context represents the Users and Groups allowed to participate in publications tasks.

jBPM User Guide - Table 13.4

Using jBPM6 to create Workflows

No. User/Groups removed from this table will not be part of tasks anymore, therefore not be able to approve or reject publications.

It is recommended to delete obsolete Users or Groups directly from Jahia management.

jbpm_people_ass_excl_owners

Join table that describes which organizationalentity entities are the excluded owners of a particular task.

jBPM User Guide - Table 13.10

Using jBPM6 to create Workflows

Not used by default

jbpm_people_assignm_pot_owners

Join table that describes which organizationalentity entities are potential owners of a particular task.

In Jahia's context indicates which Users or Groups can change the status of a publication.

jBPM User Guide - Table 13.9

Using jBPM6 to create Workflows

Removing a row in this table will terminate the possibility of the respective entity to approve or reject a specific publication.

A row can be manually deleted in Jahia Support Tools -> Jahia DB Query Tool

jbpm_people_assignm_recipients

Join table that describes which organizationalentity entities are notification recipients for a particular task.

jBPM User Guide - Table 13.12

Using jBPM6 to create Workflows

Not used by default

jbpm_people_assignm_stakehold

Join table that describes which organizationalentity entities are task stakeholders of a particular task.

jBPM User Guide - Table 13.8

Using jBPM6 to create Workflows

Not used by default

jbpm_people_assignments_bas

Join table that describes which organizationalentity entities are business administrators of a particular task.

jBPM User Guide - Table 13.11

Using jBPM6 to create Workflows

Not used by default

jbmp_process_instance_info

The processinstanceinfo entity contains the state of the jBPM process instance.

jBPM User Guide - Table 8.2

Using jBPM6 to create Workflows

No

jbmp_process_instance_log

This table contains the basic log information about a process instance.

jBPM User Guide - Table 8.5

Using jBPM6 to create Workflows

No

jbpm_reass_potential_owners

Join table that describes which organizationalentity entities are potential owners if a reassignment happens as part of an escalation.

jBPM User Guide - Table 13.20

Using jBPM6 to create Workflows

Not used by default

jbpm_reassignment

The reassignment entity describes reassignments associated with escalations.

jBPM User Guide - Table 13.19

Using jBPM6 to create Workflows

Not used by default

jbpm_session_info

The sessioninfo entity contains the state of the (knowledge) session in which the jBPM process instance is running.

jBPM Persistence and Transactions Documentation

Using jBPM6 to create Workflows

No

jbpm_task

The task entity contains much of the essential information for describing a task. Although a number of columns are not nullable, many of them are simply set to "-1" if the value used in the column hasn't been set by the task service.

jBPM User Guide - Table 13.2

Using jBPM6 to create Workflows

No

jbpm_task_comment

The task_comment entity describes comments added to tasks.

jBPM User Guide - Table 13.6

Using jBPM6 to create Workflows

Not used by default

jbpm_task_event

This table contains information about changes in task instances. Operations such as claim, start, stop etc are stored here to provide a timeline view of events that happened to the given task.

jBPM Human Tasks Documentation

Using jBPM6 to create Workflows

No

jbpm_variable_instance_log

This table contains information about changes in variable instances. The defaul is to only generate log entries when (after) a variable changes. It's also possible to log entries before the variable (value) changes.

jBPM User Guide - Table 8.7

Using jBPM6 to create Workflows

Yes, manually using Jahia Support Tools -> Jahia DB Query Tool

jbpm_work_item_info

The workiteminfo entity contains the state of a work item.

jBPM User Guide - Table 8.4

Using jBPM6 to create Workflows

Table is automatically cleared when the publication task finishes. If there is no publication task left in Jahia this table might be cleared with caution using Jahia Support Tools -> Jahia DB Query Tool

jgroupsping

Used in Jahia Cluster Discovery Service. Row represents a cluster node, member of a custer named cluster_name, and provides information about address and port used. Cluster nodes and channels can be found under Jahia Support Tools -> Cluster View

Reset cluster discovery info

jr_datastore

The database data store stores data in a relational database. All content is stored in one table, the unique key of the table is the hash code of the content.

Jackrabbit Documentation - Database Data Store section

JCR DataStore garbage collector

jr_default_binval

Jackrabbit table referencing JCR binaries in default workspace.

No

jr_default_bundle

Jackrabbit table referencing JCR bundles data in default workspace.

No

jr_default_names

Jackrabbit table referencing JCR names in default workspace.

No

jr_default_refs

Jackrabbit table referencing JCR references in default workspace.

No

jr_fsg_fsentry

Row represents an entry in Jackrabbit filesystem. Recommended articles:

Repository error when starting Jahia

Errors on startup of Jahia

If error in one of the entries is found after a Jahia version migration or similar operation that caused corruption in data.

jr_j_global_revision

Represents the global revision of the cluster. Should match individual cluster member entries in jr_j_local_revisions table to ensure a complete synchronization of the cluster.

No

jr_j_journal

This table tracks the revisions that have to be processed by each node in the cluster.

Note! This table might grow very quickly if you don't keep a coherence among cluster nodes IDs, which translates to journal_id, since it depends on the value of jr_j_local_revisions which coordinates the local revision of the cluster member.

Is there a clean-up process for Journal entries in database for a Jahia cluster?

jr_j_local_revisions

Row represents the revision_id for a given cluster node member, represented by the column journal_id.

With caution. To remove entries originated in a desynchronization of the cluster or for old cluster members (journal_id).

jr_j_locks

Jackrabbit table. Row represents a lock in node for a given Journal_id. Lock is set in the node of a cluster member when the Journal is created and released when the Journal is commited.

Not usual but can be removed if no Journals are processed at the time.

jr_live_binval

Jackrabbit table referencing JCR binaries in live workspace.

No

jr_live_bundle

Jackrabbit table referencing JCR bundles data in live workspace.

No

jr_live_names

Jackrabbit table referencing JCR names in live workspace.

No

jr_live_refs

Jackrabbit table referencing JCR references in live workspace.

No

jr_v_binval

Jackrabbit table used for JCR versioning.

Jahia Support Tools -> JCR Version History Management

jr_v_bundle

Jackrabbit table used for JCR versioning.

Jahia Support Tools -> JCR Version History Management

DB allocation is too small

jr_v_names

Jackrabbit table used for JCR versioning.

Jahia Support Tools -> JCR Version History Management

jr_v_refs

Jackrabbit table used for JCR versioning.

Jahia Support Tools -> JCR Version History Management