面试:你项目遇到什么问题 怎么解决的。

在 使用netty 框架的时候如果用来处理数据 进行数据库的插入从而对后续的检测提供数据。那么如果传感器客户端 发送数据量大的时候 数据库的插入压力会很大。这时候有两种方法一种就是减少客户端传感器的发送检测数据的频率,另一种方式从数据库存储引擎上下功夫。我们知道 innodb_flush_log_at_commit = N 和sysc_binlog = M 这两个参数是十分重要的。
当N= 1 的时候 是十分“严谨”的,即每次事务提交的时候log Thread 不仅将redolog_buffer 中的内容写到redo_log 中,同时将redo_log刷到磁盘中。
当N = 2 的时候,是稍微不严谨的,当你提交事务的时候只是将log_buffer 中写入log_file ,至于数据什么时候真正刷入磁盘中,取决于操作系统的调度大致是每秒一次刷盘。
当N = 0 的时候,是最不严谨的,当你提交事务的时候并不会引起写日志文件 ,或者刷盘,而是直接每秒进行将log buffer 中的写到日志文件和log file 的刷盘操作。性能最好 但是也不安全。

当M = 0 的时候,是指每次写日志文件的时候,不会进行刷盘操作,而是由操作系统控制。
当M > 0 的时候,是每隔N个事务 或者N条sql语句才进行刷盘操作。

我们适当的设置N 为 M 为20 或者50 来减少io压力。
所以 应该 根据业务进行合适的设置值。

回忆一条sql 执行流程:执行sq 修改内存中数据数据 之后应该是写redo log (prepare) 写bin log(commit) 然后提交事务。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值