我主要关注以下两个设置,这是我的默认设置:
innodb_log_buffer_size 1048576
innodb_log_file_size 5242880我没有改变他们有两个原因:第一,我不知道他们是什么,而两个改变这是危险的,根据我读过的文章
我的应用程序数据结构是写密集型的,我只使用无害数据库表。目前,我已将innodb_buffer_pool_size设置为5GB,数据库大小约为7GB,每天以400 my的速度增加。还要注意的是,这个400 as的插入是在大约30分钟内完成的,有些人可能会将其称为“大容量插入”。
据我所知,日志文件用于保存所有insert/update操作的记录,为什么需要这样做?
这些日志文件是什么?为什么要增加它们的大小?
最后,如果我不想保存日志,那么应该如何微调我的数据库呢?
发布于 2013-06-17 10:10:51
innodb_log_file_size确定重做日志的大小。简而言之,这是磁盘上的一个临时存储区域,在插入实际表数据文件之前对数据更改进行缓冲。它还存储在事务过程中可能生成的临时数据。
首先,这个缓冲区最明显的优点是它减轻了随机写入的问题,这是在典型的现实情况下会发生的情况。重做日志中的写入是按顺序进行的,这样更快。随机定位的更改可能会在以后某个时候提交到实际数据表中,希望活动会减少。
第二个优点是,它提供了防止数据崩溃的保护措施。由于数据的一致版本(几乎)总是存在于数据表或重做日志中,因此数据损坏的风险会降低,因为恢复数据库到一致状态也是可能的。其他机制也存在于此之上,目的相同(例如。双缓冲)
如手册所述:
合理的值从缓冲池大小的1MB到1/N不等,其中N是组中的日志文件数。(...)值越大,缓冲池中需要的检查点刷新活动就越少,保存磁盘I/O的日志文件越大,崩溃恢复也就越慢。
innodb_log_buffer_size定义存储数据的内存缓冲区的大小,然后再刷新到重做日志。
越大越好,但一定要为其他缓冲区留出足够的内存。此外,我认为没有必要分配超过总重做日志大小(即。innodb_log_file_size x innodb_log_files_in_group.
字典大小的书籍可以写关于数据库调优,这不能在这里解决。这页手册是一个很好的起点。如果您发现了一个特定的瓶颈,请返回相关信息,我(我们)将很高兴帮助您。
https://dba.stackexchange.com/questions/44682
复制相似问题