频繁插入数据
场景:Kafka的数据插入到MySQL中,Kafka的作用知识作为缓冲,要求实时更新到数据库中。
描述:Kafka的数据量巨大,每次拉取几百条数据,在进行过滤筛选处理之后,再插入到数据库,而插入到数据库也是比较耗时的过程,长此以往,实时性得不到保证。而且,磁盘IO也会很高。
问题:
- MySQL进行大批量insert调优
- MySQL解决磁盘高IO问题
解决方案:
- insert语句values后加多条语句,进行数据库批量插入
多条insert语句的执行是顺序执行的,太多的insert语句会造成延迟。
将自动提交,改为手动提交,因为它会在每次插入时对磁盘进行日志更新 - 索引对数据库的影响
表的记录越多,索引对insert的性能越大,可以适时地关闭索引,再进行批量操作。 - 解决磁盘IO问题
可以通过以下几个参数:
innodb_buffer_pool_size
innodb_io_capacity
innodb_change_buffering
磁盘优化:https://dev.mysql.com/doc/refman/8.0/en/optimizing-innodb-diskio.html