innodb存储引擎的核心参数: innodb_flush_log_at_trx_commit=1/0/2 回看上面解释。 双一标准之一:redo_log 刷写参数。 =1时在每次事务提交时立即刷新redo到磁盘,commit成功 =0时每秒刷新日志到os cache,fsync到磁盘,异常宕机时会丢失1秒内事务 =2时每次事务提交都立即刷新redo buffer 到os cache再每秒fsync()刷新到磁盘 异常宕机会丢失1秒内事务。 1.目前默认是1,安全方式。另外redobuffera跟操作系统的缓存机制有关系 2.redo还有group commit的功能。可以理解为每次刷新已提交redo 顺便将未提交的redo一起刷新到磁盘。为了区分不同状态的redo会增加特殊标记 innodb_flush_method=fsync/O_DIRECT/O_DSYNC 作用:控制mysql刷写磁盘时是否使用os_cache fsync不更改的话会被mysql日志和会话内存刷到os_cache中 默认的是fsync,运行时间久了会出现OOM innodb_buffer_pool_size(设置很大)=80%*total fsync建议特性: buffer_pool 在落盘时都会经过os_cache再落盘 redo_buffer 在落盘时都会经过os_cache再落盘。 O_DSync: buffer_pool与fsync是一样的。 redo_buffer 在落盘时则会越过不经过os_cache O_direct(生产建议) buffer_pool:在落盘时则会越过不经过os_cache redo_buffer:在落盘时会经过os_cache再落盘 因为直接落盘产生I/O,所以建议O_direct配合ssd盘。 3,必设置:innodb_buffer_pool_size 作用:数据缓冲区总大小,缓冲数据页和索引页,是mysql的最大内存区域 默认:128M 官方建议:80-90% 物理内存 生产建议:75%以下 按需设置 show engine status\G (看引擎相关参数和状态) 使用建议: 最高安全模式 innodb_flush_log_at_trx_commit=1 Innodb_flush_method=O_DIRECT 最高性能: innodb_flush_log_at_trx_commit=0 Innodb_flush_method=fsync redo日志有关的参数: innodb_log_buffer_size=16777216 innodb_log_file_size=50331648 innodb_log_files_in_group = 3
8.31笔记innodb存储引擎的核心参数:
最新推荐文章于 2023-07-28 17:23:14 发布