# FAQ

**Q1: Is Saga executed synchronously or asynchronously？Will Saga not be finished until all sub-transaction finished?**

Currently Saga is executed synchronously. Asynchronous mode will be implemented in future.


**Q2: How are sub-transactions executed by Saga, in parallel or in sequence?**

How Saga pack executes sub-transaction depends on your code. If you call `@Compensable` method in parallel, then Saga Alpha will process in parallel. 


**Q3: Any requirements on `@Compensable` method and compenstation method？**

Here are the requirements：

1. Both methods should be idempotent.
1. Both methods have exactly same parameter list.
1. Both methods are in same class.
1. Parameter should be serializable.
1. They should be commutative. For example, if given same parameters, the result should be same regardless the order of execution.


**Q4: Does Saga guarantee ACID?**

Saga guarantees Atomicity, Consistency, Durability, but not guarantee Isolation。


**Q5: Can Saga be nested?**

Yes, Saga can be nested.


**Q6: How to scale Saga Alpha horizontally?**

Saga Alpha is stateless, all data is persisted in database, so it supports horizontal scale.


**Q7: Will Saga continue if some services crashed in execution?**

Saga Alpha will try to continue Saga execution after service restart.


**Q8: How to use MySQL as alpha's backend database?**

Check this [doc](docs/faq/en/how_to_use_mysql_as_alpha_backend_database.md)

**Q9: How to resolve the issue that Omega cannot run the command from Alpha?

Check this [doc](docs/faq/en/omega-cannot-run-command-from-alpha.md)
