• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 为专用的MySQL服务器启用自动配置

    innodb_dedicated_server启用时,InnoDB会自动配置以下变量:

    • innodb_buffer_pool_size
    • innodb_log_file_size
    • innodb_log_files_in_group(自MySQL 8.0.14起)
    • innodb_flush_method

    innodb_dedicated_server当MySQL实例驻留在可以使用所有可用系统资源的专用服务器上时,才考虑启用它。例如,如果您在仅运行MySQL的Docker容器或专用VM中运行MySQL Server,请考虑启用。innodb_dedicated_server如果MySQL实例与其他应用程序共享系统资源,则不建议启用。

    以下信息描述了如何自动配置每个变量。

    • innodb_buffer_pool_size

      根据在服务器上检测到的内存量来配置缓冲池大小。

      自动配置的缓冲池大小

      检测到的服务器内存缓冲池大小
      小于1GB128MiB(默认值)
      1GB至4GBdetected server memory* 0.5
      大于4GBdetected server memory* 0.75

    • innodb_log_file_size

      从MySQL 8.0.14开始,将根据自动配置的缓冲池大小来配置日志文件的大小。

      自动配置的日志文件大小

      缓冲池大小日志文件大小
      小于8GB512MiB
      8GB至128GB1024MiB
      大于128GB2048英里

      注意

      在MySQL 8.0.14之前,该innodb_log_file_size变量是根据服务器上检测到的内存量自动配置的,如下所示:

      自动配置的日志文件大小(MySQL 8.0.13及更低版本)

      检测到的服务器内存日志文件大小
      <1GB48MiB(默认值)
      <= 4GB128MiB
      <= 8GB512MiB
      <= 16GB1024MiB
      > 16GB2048英里

    • innodb_log_files_in_group

      日志文件的数量根据自动配置的缓冲池大小(以GB为单位)进行配置。innodb_log_files_in_group MySQL 8.0.14中添加了变量的自动配置。

      自动配置的日志文件数

      缓冲池大小日志文件数
      小于8GB圆(buffer pool size
      8GB至128GB回合(buffer pool size* 0.75)
      大于128GB64

      注意

      innodb_log_files_in_group如果舍入后的缓冲池大小值小于2GB,则强制使用最小值 2。

    • innodb_flush_method

      冲洗方法设置为O_DIRECT_NO_FSYNCinnodb_dedicated_server被启用。如果该O_DIRECT_NO_FSYNC设置不可用,innodb_flush_method则使用默认设置。

      InnoDBO_DIRECT在刷新I / O期间使用,但fsync()在每次写操作后跳过系统调用。

      警告

      在MySQL 8.0.14之前,此设置不适用于文件系统,例如XFS和EXT4,它们需要fsync()系统调用来同步文件系统元数据更改。

      从MySQL 8.0.14开始,fsync()在创建新文件,增加文件大小和关闭文件后会调用该文件,以确保文件系统元数据更改同步。fsync()每次写操作后,系统调用仍然被跳过。

      如果重做日志文件和数据文件位于不同的存储设备上,则可能会导致数据丢失,并且在从没有电池供电的设备缓存中清除数据文件写入之前,将发生崩溃。如果您使用或打算将不同的存储设备用于重做日志文件和数据文件,并且您的数据文件位于不具有电池后备缓存的设备上,请O_DIRECT改用。

    如果在选项文件或其他文件中显式配置了自动配置的选项,则使用显式指定的设置,并且将类似以下的启动警告打印到stderr

    [警告][000000] InnoDB:对于innodb_buffer_pool_size,选项innodb_dedicated_server被忽略,因为显式指定了innodb_buffer_pool_size = 134217728。

    一个选项的显式配置不会阻止其他选项的自动配置。

    如果innodb_dedicated_server已启用,并且innodb_buffer_pool_size已在选项文件中对其进行了显式配置,innodb_log_file_size并且innodb_log_files_in_group仍会根据根据服务器上检测到的内存量计算出的缓冲池大小值自动进行配置,即使该值未用于配置缓冲区的大小池。

    每次启动MySQL服务器时,都会评估并重新配置自动配置的设置。