We have setup temporal.io with mysql database. Currently we have around 2000 workflows in open state. We are observing extremely high requests per minute(rpm) SQL calls to database.
1
INSERT INTO buffered_events(shard_id, namespace_id, workflow_id, run_id, data, data_encoding)
VALUES (?, ?, ?, ?, ?, ?) -
63292 rpm
2
SELECT
shard_id, namespace_id, workflow_id, run_id, create_request_id, state, status, start_version, last_write_version
FROM current_executions WHERE shard_id = ? AND namespace_id = ? AND workflow_id = ?
72181 rpm
3
SELECT next_event_id FROM executions
WHERE shard_id = ? AND namespace_id = ? AND workflow_id = ? AND run_id = ? FOR UPDATE
77756 rpm
4
UPDATE executions SET
next_event_id = ?, last_write_version = ?, data = ?, data_encoding = ?, state = ?, state_encoding = ?
WHERE shard_id = ? AND namespace_id = ? AND workflow_id = ? AND run_id = ?
77756 rpm
5
SELECT
shard_id, namespace_id, workflow_id, run_id, create_request_id, state, status, start_version, last_write_version
FROM current_executions WHERE shard_id = ? AND namespace_id = ? AND workflow_id = ? FOR UPDATE
77757 rpm
6
UPDATE current_executions SET
run_id = ?,
create_request_id = ?,
state = ?,
status = ?,
start_version = ?,
last_write_version = ?
WHERE
shard_id = ? AND
namespace_id = ? AND
workflow_id = ?
77788 rpm
7
SELECT range_id FROM shards WHERE shard_id = ? LOCK IN SHARE MODE
77824 rpm
What tuning we should look into?