mysql优化——数据导入优化

  • 数据导入

  • 对于批量数据导入的优化思路

  • 插入操作的耗时

  • 连接:30%
  • 向服务器发送查询:20%
  • 解析查询:20%
  • 插入行:10%*行的大小
  • 插入索引:10%*索引数
  • 结束:10%
  • 由此可见客户端与服务端通信所耗费的时间最多,因此应该通过一次插入多个值来减少插入次数从而提高效率
  • 大批量数据导入

  • 优化方案:
  • 有大批量导入时,推荐一条insert语句插入多行数据
  • 关闭自动提交模式(自动提交模式下,每次插入语句为一个事务,进行一次通信,极其耗时)
  • 参数调整

  • 影响MYSQL写入速度的主要两个参数:innodb_flush_log_at_trx_commit,sync_binlog
  • innodb_flush_log_at_trx_commit
  • 控制重做日志刷新到磁盘的策略,有0、1和2三种值
  • 0:master线程每秒吧redo log buffer 写到操作系统缓存,再刷到磁盘
  • 1:每次提交事务都将redo log buffer 写到操作系统缓存,再刷到磁盘
  • 2:每次事务提交都将redo log buffer写到操作系统缓存,
  • sync_binlog
  • 控制binlog的刷盘时机,可配置0、1或者大于1的数字
  • 0:二进制日志从不同步到磁盘,依赖OS刷盘机制
  • 1:二进制日志每次提交都会刷盘
  • n(n>1):每n次提交落盘一次
  • 优化方案:将两个参数均设置为0时速度最快,但有丢失数据的风险,均设置为1时速度最慢

你可能感兴趣的:(mysql,后端)