`
oliver_peng
  • 浏览: 43228 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

关于MySQL Innodb log 日志的一点收获

阅读更多
最近了解Innodb 日志,弄明白了两个问题。

首先Innodb log的功能,有两种log: undo log 和 redo log.

undo log实现事物的回滚(roll back transaction).

redo log用来实现灾难恢复(crash recovery).突然断电会导致Innodb表空间(Table space)中的数据没有被更新到磁盘上,通过重新执行redo log 能够重新执行这些操作来恢复数据。

redo log 还有一个很重要的功能是提升InnoDB的I/O性能. Innodb引擎把数据和索引都载入到内存中的缓冲池(buffer pool)中,如果每次修改数据和索引都需要更新到磁盘,必定会大大增加I/O请求,而且因为每次更新的位置都是随机的,磁头需要频繁定位导致效率低.所以Innodb每处理完一个请求(Transaction)后只添加一条日志log,另外有一个线程负责智能地读取日志文件并批量更新到磁盘上,实现最高效的磁盘写入.

Innodb log文件的尺寸多大合适,首先通过执行以下Query能够算出每分钟写入多少数据到日志文件:

mysql> pager grep sequence
PAGER set to 'grep sequence'
mysql> show innodb status \G; select sleep(60);  show innodb status \G;
Log sequence number 178 764981234
1 row in set, 1 warning (0.01 sec)

ERROR:
No query specified

1 row in set (1 min 0.00 sec)

Log sequence number 178 777500289
1 row in set, 1 warning (0.02 sec)

ERROR:
No query specified

mysql> nopager
PAGER set to stdout
mysql> SELECT (777500289 - 764981234) / 1024 / 1024 AS MB_per_min;
+-------------+
| MB_per_min  |
+-------------+
| 11.93910122 |
+-------------+
1 row in set (0.00 sec)


计算的结果是大概12M每分钟,根据Baron Schwartz的建议,Innodb日志文件能够保存一小时的数据就足够了,所以日志文件设置为720M就可以了.

英文原文: http://www.mysqlperformanceblog.com/2008/11/21/how-to-calculate-a-good-innodb-log-file-size/

另外对于有很频繁增删改操作的数据库,通过将innodb_flush_log_at_trx_commit = 2能够大幅提高I/O性能.
1
0
分享到:
评论

相关推荐

    Mysql 的InnoDB引擎相关读书笔记

    1.2.1.InnoDB内存结构——log buffer.md 1.2.2.InnoDB内存结构——change buffer.md 1.2.3.InnoDB内存结构——额外内存池.md 1.3.0.InnoDB磁盘结构——逻辑存储结构.md 1.3.1.InnoDB磁盘结构——表.md 1.3.2.InnoDB...

    mysql主从复制

    2> log-bin=mysql-bin数据库二进制日志 3> server-id = 1用于设置数据库的主从说明,主的是1,不允许id有重复号 4> innodb_data_home_dir = /usr/local/mysql/var/存放innodb表引擎表空间的地方 5> innodb_data_file...

    InnoDB_Log_Structures

    mysql 存储引擎 innodb 日志结构 非常好用,欢迎大家下载!

    Mysql启动中 InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes 的问题

    Mysql可以正常启动,但innodb的表无法使用 在错误日志里你会看到如下输出: InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes 现在需要做的事情就是把原来的 innodb 的ib_logfile×...

    MySQL日志文件详解

    概述 日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。...5.Innodb的在线 redo 日志(innodb redo log) 6.更新日

    MySQL slow_log表无法修改成innodb引擎详解

    从mysql.slow_log 获取慢查询日志很慢,该表是csv表,没有索引。 想添加索引来加速访问,而csv引擎不能添加索引(csv引擎存储是以逗号分割的文本来存储的),只能改存储引擎来添加索引了 mysql.slow_log表能改成...

    《MYSQL备份与恢复》之 Innodb与 MyISAM引擎

     InnoDB维护了一个redo log,又称为transaction log,事务日志,它包含了innodb数据的所有改动情况。当InnoDB启动的时候,它会先去检查data file和transaction log,并且会做二步操作:  xtraBackup在备份的时候...

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ │ 6_MySQL全量恢复和日志增量恢复.mp4 │ │ 7_xtrabackup全量和增量备份恢复.mp4 │ │ 作业及答案.docx │ │ │ └─MySQL DBA堂命令-mha和备份恢复 │ mysql-master_05-18_10-03-09.log │ mysql-master_05...

    MySQL InnoDB如何保证事务特性示例详解

    前言 如果有人问你“数据库事务有哪些特性”?你可能会很快回答出原子性、一致性、...重做日志 redo log 分为两部分:一部分是内存中的重做日志缓冲(redo log buffer),是易丢失的;二部分是重做日志文件(redo lo

    mysql5.5与mysq 5.6中禁用innodb引擎的方法

    ibdata1 ib_logfile0 ib_logfile1,前者18m,后两个各5m,原来是迁移的时候从mysql5.0迁移到了5.5,而5.5关闭innodb启动不起来,于是我就开启了innodb,由于innodb会默认增加这几个数据文件和日志文件,导致变大。...

    mysql 断电不能启动

    处理一下出现的日志 Plugin 'FEDERATED' is disabled. 2017-11-15 19:23:46 16c0 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, ...

    关于MySQL数据迁移–data目录直接替换注意事项的详解

    近日更换服务器,要做数据库迁移,将数据库内的数据从服务器A迁移到服务器B。...结果启动失败,报出 “无法启动MySQL服务”异常,查看错误日志,发现问题描述如下:InnoDB: Error: log file ./ib_logfile

    mysql 有关“InnoDB Error ib_logfile0 of different size”错误

    1,查看Mysqld(/var/log/mysqld.log)日志,发现以下错误:InnoDB: Error: log file /usr/local/mysql/data/ib_logfile0 is of different size 05242880 bytesInnoDB: than specified in the .cnf file 0 104857600...

    mysql-4.pdf

    理解MySQL中行锁相关的知识点,包括间隙锁是怎么回事 掌握InnoDB的内存结构和一些物理文件 理解RedoLog与UndoLog的关系 理解UndoLog的作用 掌握数据和回滚日志的逻辑存储结构 掌握原子性、一致性和持久性的实现机制 ...

    mysql数据库my.cnf配置文件

    # 0:如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作(执行是由mysql的master thread线程来执行的。 # 主线程中每秒会将重做日志缓冲写入磁盘的...

    MySQL启动报错问题InnoDB:Unable to lock/ibdata1 error

    2016-03-03T00:02:30.483100Z 0 [Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files. 终端不断地重复打印上面的错误日志,从错误日志看起来似乎有...

    基于 nodejs express mysql 开发的留言板 demo.zip

    查询日志(query log):可选地记录所有发送到MySQL服务器的SQL查询,用于调试和审计。 慢查询日志(slow query log):记录执行时间超过指定阈值的查询,帮助识别和优化性能瓶颈。 应用场景 MySQL广泛应用于...

    完美解决mysql启动后随即关闭的问题(ibdata1文件损坏导致)

    查看mysql错误日志如下: 160920 22:41:41 mysqld_safe Starting mysqld daemon with databases from /home/MysqlData/ 2016-09-20 22:41:41 0 [Note] /Data/app/mysql5.6.25/bin/mysqld (mysqld 5.6.25-log) ...

    最新mysql面试题整理大厂必备,你能答对几个?

    25.MySQL 中的重要日志分为哪几个? 26.redo log 和 binlog 有什么区别? 27.慢查询日志的获取方式有哪些? 28.如何定位慢查询? 29.MySQL 中常见的读写分离方案有哪些? 30.怎样保证主备数据库无延迟? 31.什么...

    MySQL 5.1中文手冊

    5.11. MySQL日志文件 5.11.1. 错误日志 5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2....

Global site tag (gtag.js) - Google Analytics