query_cache_size, key_buffer_size
query_cache_size=350M --> 50M -- Do not set higher than 50M; it is inefficient at high values.
table_cache=1520 --> 500
key_buffer_size=548M --> 40M -- Used only for MyISAM, but you are using only InnoDB.
innodb_flush_log_at_trx_commit=1 -- This is safer, but hits the disk on every COMMIT. I assume you have autocommit=1, so that means it hits the disk on every write query.
innodb_buffer_pool_size = 10G -- Good. (But overkill if you have only 500M of data)
long_query_time = 5 --> 1 -- then (after some time) check the slowlog for what queries are slowest.
SHOW VARIABLES LIKE 'innodb%';
SHOW GLOBAL STATUS LIKE 'Innodb%';
SHOW GLOBAL STATUS LIKE 'Uptime';
More discussion of these topics:
http://mysql.rjweb.org/doc.php/memory