Bug #90641 innobase_commit: invoke log_write_up_to after exit innodb
Submitted: 26 Apr 2018 6:21 Modified: 26 Apr 2018 12:48
Reporter: zhai weixiang (OCA) Email Updates:
Status: Verified Impact on me:
Category:MySQL Server: InnoDB storage engine Severity:S4 (Feature request)
Version:8.0.11 OS:Any
Assigned to: Assigned Account CPU Architecture:Any

[26 Apr 2018 6:21] zhai weixiang
AFAIK, the innodb_thread_concurrency is used to limit the thread number that being actively running inside innodb, to help reducing some scaliability issue. But in MySQL8.0, log_write_up_to is refactored and it doesn't need to acquire innodb mutexs (under heavy workload) but just wait for log_writer/log_flusher threads, so in function innobase_commit, i think trx_commit_complete_for_mysql can be invoked after exit innodb(innobase_srv_conc_force_exit_innodb)

This may help improving the throughput when binlog is disabled, and innodb_thread_concurreny is set to a low value. For example, in my test, i set innodb_thread_concurrency to 16, flush_at_commit=1, skip-log-bin, and run sysbench with oltp_update_non_index.lua, 256 threads, I got 130,000 tps while the orignal version got only 82000 tps  

How to repeat:
read the code 

Suggested fix:
invoke trx_commit_complete_for_mysql after exit innodb
[26 Apr 2018 12:48] MySQL Verification Team

Thank you for your report.

I have read carefully at what you wrote and analysed the code and I think that your idea makes a very valuable feature requests for the stand-alone servers.

Verified as a feature request.