We've done an initial pass to determine the overhead of transactions for write-once/append-only data through Tephra in Phoenix - see
https://issues.apache.org/jira/browse/PHOENIX-1901 for details. Looks like about a 20% perf hit across the board for our concurrent query workloads. The sets of queries between the dashed lines here[1] are run in parallel. The bottom set (prefixed with "Serial") are run serially and these look to be more similar perf-wise with and without transactions. I'm wondering if perhaps we're seeing a bottleneck in the transaction manager. Two questions:
1) Do the canCommit and commit RPCs still happen if the change set is empty? This would be the case in Phoenix connection that is doing only querying.
2) What kind of tuning is available on the Transaction Manager? For example, how big is the thread pool for obtaining transaction ids and can we make it bigger through a config param?
Thanks,
James