`

理解mysql_事务原理及常见优化思路

阅读更多
WAL机制, 先采用日志的方式将操作记录下来,然后刷新磁盘。
InnoDB遵循WAL协议,在日志持久化到磁盘之后,才会将日志对应的脏页刷 回磁盘;

InnoDB内存中,DML操作顺序如下:
   – 写Undo(获取ROLLBACK_PTR系统列)
   – 修改Page
   – 写Redo的顺序

不同的Update语句,写的日志量有较大差异(三种Update Case);
    – In Place Update日志量最小,操作最简单;
    – 不修改主键列,日志量其次;
    – 修改主键列,日志量最大,操作最复杂;


日志文件:
     redo:保证事务的持久性
                顺序写,基本上不用读操作,只有在异常down机后才会读进行数据恢复操作。
                何时写:  事务提交时
                                当log buffer中有一半的内存空间已经被使用时
                                log checkpoint时
                               实例shutdown时
                                binlog切换时
     undo:
               保证事务的原子性
                事务回滚及mvcc控制
                随机读写。

     每执行一次事务,都需要做一次fsync操作,因此磁盘的性能影响fsync的性能,  fsync性能也就影响到数据库的性能。 数据库可以通过参数来控制,提交事务时不写日志,而是由异步操作来刷日志,但是异常时会丢一个周期内的事务数据。

      innodb_flush_log_at_trx_commit参数设置 0\1\2
      默认 1
      1 : 每commit一次调用一次fsync写日志,写数据文件
      0:  异步控制,mysql线程每隔1秒异步执行fsync, db crash 会有1秒的数据丢失
      2:  异步控制,写入操作系统缓存,不进行fsync,由操作系统进行调度fsync,操作系统crash会有数据丢失。

     二进制日志与重做日志的区别:
     1、二进制日志所有存储引擎都有的,而重做日志只有innodb才有
     2、二进制日志是逻辑日志,里面记录了sql语句,而重做日志是物理日志,记录的是每个页的修改page位置等信息
分享到:
评论

相关推荐

    MySQL DBA求职技巧_MYSQL_

    2. **MySQL架构**:理解MySQL的架构,包括存储引擎(如InnoDB、MyISAM)、复制机制、主从复制配置、以及如何进行读写分离。 3. **性能优化**:掌握索引原理、查询优化技巧,了解如何通过EXPLAIN分析SQL执行计划,...

    案例加持:一小时掌握这套MySQL故障排查思路方法_崔虎龙.pdf

    解决这类问题通常需要深入理解MySQL复制机制以及并行复制的实现细节。 总结来说,这份文档为数据库管理员提供了一套完整的MySQL故障排查思路和方法,通过案例的形式深入浅出地讲解了故障排查的每个环节。通过系统性...

    MySQL技术原理和常见高可用架构

    MySQL是一个广泛使用的开源关系型数据库管理系统,其技术原理和高可用架构是数据库...对于希望入门MySQL学习的朋友,理解这些概念至关重要,它们不仅会帮助你设计和维护数据库系统,也会在你遇到问题时提供解决思路。

    MySQL实战优化-整理版

    以上内容全面涵盖了MySQL实战优化中的关键知识点,从数据库架构设计到具体的优化实践案例,旨在帮助读者深入理解MySQL的工作原理及优化技巧。通过对这些知识点的学习,可以有效地提升MySQL数据库的性能和稳定性。

    mysql学习思路总结

    总结来说,学习MySQL需要深入理解存储结构、索引优化、并发事务处理、日志系统以及如何从单机扩展到分布式架构。通过不断实践和理论学习,才能更好地掌握MySQL并应用于实际项目,从而提升系统的稳定性和性能。

    javaEE_原生Servlet_MySql网络考试系统的设计与实现(源码+数据库sql+lun文+视频齐全).rar

    论文文档则详细阐述了系统的架构设计、功能模块、性能优化等方面,有助于深入理解项目的整体思路。通过阅读论文,可以了解到系统的模块化设计,如用户模块、试题模块、考试模块等,以及它们之间的交互方式。 教学...

    数据库原理多套期末试卷含答案

    6. **索引与查询优化**:索引的作用、类型(如B树和哈希索引),以及查询优化器的工作原理,如何通过EXPLAIN分析查询性能。 7. **数据库恢复**:涉及事务日志、检查点和崩溃恢复机制,理解如何在系统故障后恢复数据...

    PHP实例开发源码—so700 MYSQL在线数据库管理工具.zip

    【PHP实例开发源码—so700 MYSQL在线数据库管理工具.zip】是一个包含PHP源代码的压缩包,专为MySQL...对于初学者,这是一个很好的实战项目,而对于有经验的开发者,这个源码可能提供了一些新的设计思路和优化方法。

    自考数据库系统原理试题

    本资料包包含的是自考数据库系统原理的历年真题及答案,覆盖了从2007年至2017年十年间的考试内容。这是一份极有价值的学习资源,可以帮助考生全面了解考试的命题趋势、重点难点和解题策略。 1. 数据库系统基础:...

    常见后端面试几部分答案

    3. 数据库:深入理解关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的原理,包括ACID特性、索引、事务、查询优化等。熟悉SQL语言,能写出高效的查询语句。 4. 编程语言:对于Java、Python、C++或Go等后端...

    山东交通学院《数据库》期末复习资料汇总.pdf

    同时,对于文档中提到的“数据库原理及应用A卷”和“数据库原理及应用B卷”,以及“数据库原理与应用A卷答案”,应当详细阅读这些试卷和答案,从中提炼出考试的常见题型、重点、难点以及解题思路,从而进行有效的...

    21-面试宝典(进一般互联网公司必看).docx

    * ConcurrentHashMap 的工作原理及代码实现 * 线程创建的方式及实现 * sleep()、join()、yield() 的区别 * CountDownLatch 的原理 * CyclicBarrier 的原理 * Semaphore 的原理 * Exchanger 的原理 * ThreadLocal 的...

    去年底写的mysql分库分表中间件heisenberg

    通过深入阅读和理解这份开发手册,开发者可以熟练掌握Heisenberg的使用,并可能发现优化数据库架构的新思路,提高系统的稳定性和效率。对于想在数据库领域深化技术的IT专业人士,Heisenberg是一个值得研究的项目。

    基于PHP的鱼福CMS企业网站系统PHP5+MYSQL版源码.zip

    MySQL的事务处理、索引机制和优化查询性能的能力,确保了网站在处理大量数据时的性能。配合PHP,两者共同构建了高效的数据交互环境。 鱼福CMS的核心功能可能包括但不限于以下几个方面: 1. **模板引擎**:系统可能...

    java书店系统 在线图书商店书城 商城管理系统设计与实现 项目源代码下载 javaweb jsp ssh ssm mysql

    4. **MySQL数据库设计**:设计符合业务需求的数据库模型,学习SQL语句的编写,以及事务处理和索引优化。 5. **商城系统功能实现**:用户注册登录、商品浏览、购物车管理、订单创建和支付、库存控制等核心功能的实现...

    mysql代码-面试题题目

    2. **索引**:理解B树和哈希索引的工作原理,知道如何创建、删除和优化索引,以及何时使用主键、唯一索引和全文索引。索引在提高查询性能上起着关键作用。 3. **存储引擎**:InnoDB和MyISAM是MySQL中的两个主要存储...

    mysql分库分表sharding-jdbc-sharding-jdbc-demo.zip

    MySQL数据库在处理大数据量时,性能可能会受到挑战,此时就需要采用分库分表策略来提升系统性能。Sharding-JDBC是阿里巴巴开源的一...同时,这也有助于理解分布式数据库系统的设计和优化思路,提升系统性能和可扩展性。

    数据库课程设计(简单)

    理解索引的工作原理和创建、优化方法,能提升数据库性能。 6. **数据库备份与恢复**:文件名为“程序及数据库备份”提示我们课程设计可能涉及到数据库的备份和恢复策略。备份是为了防止数据丢失,可以定期或在重要...

    Java思维导图xmind文件+导出图片

    redis使用常见问题及性能优化思路 redis高可用及高并发实战 缓存击穿、缓存雪崩预防策略 Redis批量查询优化 Redis高性能集群之Twemproxy of Redis 数据存储 MongoDB NOSQL简介及MongoDB支持的数据类型分析 ...

Global site tag (gtag.js) - Google Analytics