Bug #98164 Issues with docs for innodb_dedicated_server
Submitted: 9 Jan 2020 2:24 Modified: 10 Jan 2020 18:37
Reporter: Rick James Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Documentation Severity:S3 (Non-critical)
Version:8.0 OS:Any
Assigned to: CPU Architecture:Any
Tags: dedicated_server, documentation

[9 Jan 2020 2:24] Rick James
Description:
https://dev.mysql.com/doc/refman/8.0/en/innodb-dedicated-server.html

1.  "consider enabling if you run MySQL Server in a Docker container or dedicated VM"

2. "1GB to 4GB	detected server memory * 0.5"

3. number of log files:  "ROUND(buffer pool size)"

4. "data loss is possible if ... a crash occurs before data file writes are flushed from the device cache"

5. "innodb_log_file_size and innodb_log_files_in_group are automatically configured based on the implicit buffer pool size that is calculated according to the amount of memory detected on the server."

How to repeat:
N/A

Suggested fix:
1.  "consider enabling if you run MySQL Server in a Docker container or dedicated VM or a server that will run only MySQL"

2.  I worry that 0.5 buffer_pool on a 1GB machine may be too tight.

3.  That does not make sense.  innodb_log_files_in_group should be at least 2.  And arguably it should not be more than 2.

4.  If the "device" is a RAID controller with a Battery Backed Write Cache, I suspect this warning does not apply.

5.  Are you sure?  It seems to say that if I set only the buffer_pool_size, it will ignore that when computing the other two.  This could lead to log_file_size being bigger than buffer_pool_size, which is frowned on elsewhere.
[9 Jan 2020 4:02] MySQL Verification Team
Hello Rick,

Thank you for the report and feedback!

Thanks,
Umesh
[10 Jan 2020 18:37] Daniel Price
Posted by developer:
 
1.  The text was revised as suggested.

"... consider enabling if you run MySQL Server in a Docker container 
or dedicated VM that only runs MySQL."

2.  As designed. See /storage/innobase/handler/ha_innodb.cc.

        if (server_mem < 1.0) {
          ;
        } else if (server_mem <= 4.0) {
          srv_buf_pool_size = static_cast<ulint>(server_mem * 0.5 * GB);
        } else
          srv_buf_pool_size = static_cast<ulint>(server_mem * 0.75 * GB);

3.  Content was updated to indicate the the minimum innodb_log_files_in_group minimum value of 2 is adhered to. Related code:

        if (auto_buf_pool_size_in_gb < 1.0) {
          ;
        } else if (auto_buf_pool_size_in_gb < 8.0) {
          srv_n_log_files = static_cast<ulong>(round(auto_buf_pool_size_in_gb));
        } else if (auto_buf_pool_size_in_gb <= 128.0) {
          srv_n_log_files =
              static_cast<ulong>(round(auto_buf_pool_size_in_gb * 0.75));
        } else {
          srv_n_log_files = 64;
        }

4.  The warning does not apply if a device cache is batter-backed. Text was revised. 

5.  An explicitly specified buffer pool size value is ignored. Log file size and the number of log files are based on a "possible" buffer pool size value From the code:

    /* If user has set buffer pool size in .cnf, we will not use it as base
    line for log_file_size auto tuning, instead, we will get the value of
    possible tuned buffer pool size. */
	
Text was revised.
	
Thank you for the bug report.