mysql 优化innodb_flush_log_at_trx_commit的案例介绍,供大家学习参考。

问题描述:

Win7上装了一个MYSQL,需要向表中插入160多万条数据,SQL文件大概126M,发现速度奇慢。

解决办法:

找到C:\Program Files\MySQL\MySQL Server 5.5\my.ini;修改其中一项为:innodb_flush_log_at_trx_commit=0。

为什么这样修改?

1,原文是这样的:

# If set to 1, InnoDB will flush (fsync) the transaction logs to the

# disk at each commit, which offers full ACID behavior. If you are

# willing to compromise this safety, and you are running small

# transactions, you may set this to 0 or 2 to reduce disk I/O to the

# logs. Value 0 means that the log is only written to the log file and

# the log file flushed to disk approximately once per second. Value 2

# means the log is written to the log file at each commit, but the log

# file is only flushed to disk approximately once per second.

即如果将参数innodb_flush_log_at_trx_commit设置为1,每当事务提交,InnoDB引擎就会将事务日志写入硬盘,这可以完整保证数据库的ACID特性。

如果您觉得这样的保证没有必要,并且你的事务都是比较小的事务(运行时间比较短、逻辑比较简单),你可以将innodb_flush_log_at_trx_commit设置为0或者是

2,这样可以减少访问磁盘日志的次数。0意味着日志只写入日志文件,日志文件大约每秒钟向磁盘写一次;2意味着日志在每次事务提交的时候写入日志文件,且大约每秒钟日志文件写入一次磁盘。

上面这个方法貌似可以解决问题,也确实可以,但是隐患很大、影响很大。数据之所以插入慢,是因为MYSQL默认情况下是自动提交的,即没插入一条记录就是一个事务,就要写一次文件,所以很慢。可以在一个session中把自动提交设成false(set @@autocommit=0),然后执行所有的(或者分批) insert,然后来一个commit。

mysql 5.1 innodb trx_mysql 优化innodb_flush_log_at_trx_commit的案例介绍相关推荐

  1. mysql using mrr_MySQL InnoDB MRR优化指南

    前言 MRR 是 Multi-Range Read 的简写,目的是减少磁盘随机访问,将随机访问转化为较为顺序的访问.适用于 range/ref/eq_ref 类型的查询. 实现原理: 1.在二级索引查 ...

  2. MySQL · 引擎特性 · InnoDB COUNT(*) 优化(?)

    在5.7版本中,InnoDB实现了新的handler的records接口函数,当你需要表上的精确记录个数时,会直接调用该函数进行计算. 使用 实际上records接口函数是在优化阶段调用的,在满足一定 ...

  3. mysql table combine_Mysql系列-性能优化神器EXPLAIN使用介绍及分析

    MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化. EXPLAIN 命令用法十分简单, 在 SEL ...

  4. Mysql Innodb 引擎优化(-)

    作/译者:吴炳锡,来源:http://imysql.cn & http://imysql.cn/blog/3208 转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 介绍: Inno ...

  5. MySQL中Myisam、InnoDB碎片优化

    起因:查看线上数据库中Table Information时发现有一个日志表数据大小和索引大小有915M,但实际行数只有92行.该表需要频繁插入并且会定时去删掉旧的记录.表类型为Myisam,已建立一个 ...

  6. MySQL高级 - 内存优化 - InnoDB内存优化

    InnoDB 内存优化 innodb用一块内存区做IO缓存池,该缓存池不仅用来缓存innodb的索引块,而且也用来缓存innodb的数据块. innodb_buffer_pool_size 该变量决定 ...

  7. mysql count 优化索引_如何通过使用索引在InnoDB上优化COUNT(*)性能

    我有一个小而狭窄的InnoDB表,大约有900万条记录.在桌子上count(*)或count(id)桌子上做的速度非常慢(超过6秒): DROP TABLE IF EXISTS `perf2`; CR ...

  8. MySQL · 引擎特性 · InnoDB 崩溃恢复过程

    在前面两期月报中,我们详细介绍了 InnoDB redo log 和 undo log 的相关知识,本文将介绍 InnoDB 在崩溃恢复时的主要流程. 本文代码分析基于 MySQL 5.7.7-RC ...

  9. MySQL探秘(三):InnoDB的内存结构和特性(可靠性和持久性)

     MySQL区别于其他数据库的最为重要的特点就是其插件式的表存储引擎.而在众多存储引擎中,InnoDB是最为常用的存储引擎.从MySQL5.5.8版本开始,InnoDB存储引擎是默认的存储引擎.  I ...

最新文章

  1. 多个矩形,求覆盖面积,周长,及交点
  2. mSystems:华中农大郝秀丽组发现稀有/丰富微生物类群对镉污染土壤改良剂的不同反应!...
  3. (SpringMVC)Controller返回JSON数据
  4. Objective-C之run loop详解
  5. ZYNQ7000程序编译成功但烧写报错(使用Vitis2020.2)
  6. jqGrid(转)--一个前端表格控件
  7. iphone有什么软件可以修改html,现在iPhone组装机太可怕,修改数据即可变原装?...
  8. 要素集获取要素_OGC的网络要素服务(WFS)(持续更新。。。)
  9. css3为图片添加鼠标移入放大效果
  10. Modernizr 浏览器兼容功能检测
  11. 六石管理学:使用排除法解决问题
  12. 海康VisionMaster-脚本模块
  13. 三菱plc控制步进电机实例_电工想做PLC工程师?那步进电机的编程控制指令你一定要了解...
  14. Ehcache开源解读
  15. System State 转储分析案例一则
  16. 五大学科竞赛(一)介绍
  17. C语言判断日期是这一年的第几天
  18. 构建之法阅读笔记002
  19. 富斯i6航模遥控器翻译
  20. 分布式数据库系统作业

热门文章

  1. note同步不及时 one_高速路失灵/A柱断裂…理想ONE的自动驾驶还能信吗?
  2. 计算机专业毕业生管理制度,管理制度建设
  3. android 驻留广播,Android实现Service永久驻留
  4. C语言函数strcmp()(比较两个字符串)
  5. 【car】几款电动代步车参数
  6. Intel Realsense D435 是否启动pipeline.start()就开始传输帧,还是只有我们调用wait_for_frames()函数时它才会传输帧?(任务管理器USB带宽内存测试)
  7. 【放置奇兵】算法 酒馆攻略
  8. tensorflow dataset_ops shuffle()方法 (随机重新排列此数据集的元素)
  9. pytorch 常用的 loss function
  10. 当前线程等待某些线程运行结束再执行的几种方案。CountDownLatch机制简单解读以及简单实现