InnoDB index concurrent inserts
SHOW CREATE TABLE -- need to see the PRIMARY KEY and the "index".

100-1000 is optimal (10K might be ok) for "batching" INSERTs -- That is, a single INSERT statement with 100 to 1000 rows in it.

You have shown a single row being inserted.  Will it work change to

values ('a', 'b', 3), ('c', 'd', 4), ...


That might give you a 10-fold speedup.

That is also pretty good for the size of a transaction.  You could also set innodb_flush_log_at_trx_commit = 2.

Parallel threads might help.  In that case, transactions are vital, plus code to replay a transaction if it fails.  And you might be better off with 100 rows at a time -- to minimize deadlocks or delays due to other locking.

innodb_buffer_pool_size should be 70% of available RAM (assuming you are using ENGINE=InnoDB).