【问题标题】:What is innodb_buffer_pool_size & innodb_log_file_size?什么是 innodb_buffer_pool_size 和 innodb_log_file_size?
【发布时间】:2010-01-20 09:50:06
【问题描述】:

谁能告诉我 innodb_buffer_pool_size 和 innodb_log_file_size 是什么?增加它的大小后会发生什么..

【问题讨论】:

    标签: mysql innodb


    【解决方案1】:

    innodb_buffer_pool_size 是用于缓存表、索引和其他一些东西的内存量。这是主要的可调参数,出于性能原因,您需要将其设置得相当高 - 有很多资源在讨论这个问题。

    innodb_log_file_size 是提交日志文件的大小(通常有两个),它确实会影响性能,但影响不大。阅读文档以获取更多信息。

    innodb_log_file_size 不应设置为与当前文件大小不同的值,否则服务器将无法启动。这意味着如果你想改变它,你应该彻底关闭服务器,删除现有的日志,它会创建新的。

    另一方面,如果数据库在需要恢复时没有完全关闭,则不应删除日志。

    【讨论】:

    • +1!我可能只是注意到 innodb_log_file_size 会极大地影响性能(但如果他们的数据库完全被读取,并不是每个人都会看到它)。盲目地提出这个也有更多的担忧,因为一个非常大的值会增加恢复时间。
    • 实际上,innodb_log_file_size 值对性能影响很大。不幸的是,大多数系统管理员认为缓冲池大小是唯一重要的事情,但事实并非如此。
    • 在具有 16GB RAM 的开发机器上设置这些用于本地测试的合适大小是多少?默认大小 50m 日志 + 512m 缓冲区导致进程使用 900MB ram - 并且 ram 供不应求,其他一切都在运行。 16m 日志 + 64m 缓冲区是否足以满足此目的?它将进程使用量减少到大约 350MB。但我不确定我是否真的用这么小的尺寸让事情变得更糟
    【解决方案2】:

    只需在现有答案中添加更多详细信息,

    innodb_buffer_pool_size 是 MySQL 的总缓存大小。
    每当有读请求时,MySQL 服务器以 BufferPagesLinkedList 的形式将数据缓存在 RAM 中。当写入恰好已加载到内存 (RAM) 中的行时,MySQL 会更新内存中的行并将页面(现在是脏的)转移到另一个 LinkedListBufferPool的成员>.
    另一个名为 PageCleaner 的组件在后台运行并释放内存并将数据写入磁盘。

    innodb_log_file_size 是日志文件的大小(以字节为单位)。存在多个日志文件供 MySQL 写入数据。这个特定的系统变量告诉其中一个日志文件的文件大小。 recoverylog-replication 需要这些日志文件,即确保在主节点死亡时,从节点拥有所需的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 1970-01-01
      • 2022-01-21
      相关资源
      最近更新 更多