Details
-
Improvement
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
pack-0.3.0
-
postgres and mysql
-
Patch
Description
When the amount of data in the TxEvent table is large, the select SQL statement of method(
findByEventGlobalTxIdAndEventType
) is executed very slowly. Here, an index on globalTxId should be added.
Here is the SQL statement. it will be executed 3 times in a transaction with 2 subtransactions.
@Query("SELECT DISTINCT new org.apache.servicecomb.saga.alpha.core.TxEvent("
+ "t.serviceName, t.instanceId, t.globalTxId, t.localTxId, t.parentTxId, "
+ "t.type, t.compensationMethod, t.payloads "
+ ") FROM TxEvent t "
+ "WHERE t.globalTxId = ?1 AND t.type = ?2 "
+ " AND ( SELECT MIN(t1.retries) FROM TxEvent t1 "
+ " WHERE t1.globalTxId = t.globalTxId "
+ " AND t1.localTxId = t.localTxId "
+ " AND t1.type IN ('TxStartedEvent', 'SagaStartedEvent') ) = 0 ")
Attachments
Issue Links
- links to