InnoDB Insert(插入)操作(下)--mysql技术内幕

接上一篇文章,最后做的那个实验,我是想证明mysql innodb存储引擎,commit操作与flush数据到磁盘之间的关系,当与同事交流之后,他说,你应该把innodb_buffer_size的大小考虑到里面,其实我是有考虑的,在开始的部分就有做过假设,假如buffer大小为1G,数据大小为2G,那么在进行事务插入操作时,势必是要在commit操作之前,将缓存数据进行写入磁盘的吧。

再者而言,接上篇实验,我分别进行了两组,一组是进行了rollback操作,另外一组是进行了commit,发现,rollback的操作时间远远大于commit操作的。是否可以假象为,其实数据已经落盘,只不过在数据页面上,存在一个事务标识符,实现事务的隔离机制,对于其他session不可见。而此时rollback操作就要把数据一条一条的从磁盘中清除,这个速度肯定会比较缓慢,当然这个删除的机制,我还是不太清楚,是重新走一边buffer,还是直接消失掉;而且,在进行了rollback操作之后,数据文件大大小并没有改变,是否可以假象为,曾经分配的物理空间,并没有及时收回,以便下次重新利用。再说commit操作,它是在极短的时间内完成的,有可能的原因就是,这个操作只是把磁盘中数据页上的事务标识信息移除掉,就ok了。好吧,秉着严谨的实验态度,再来进行一次实验。(下班回去再做吧)

innodb_buffer_size= ,确保足够新插入数据的缓冲。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 06:59:58

InnoDB Insert(插入)操作(下)--mysql技术内幕的相关文章

MySQL技术内幕-InnoDB存储引擎-读书笔记(二)

MySQL技术内幕-InnoDB存储引擎-读书笔记(二) 作为php开发,使用mysql总是少不了的 系列文章博客链接 http://itsong.net/articles/466.html 第三章 文件 mysql与innodb几个类型的文件 参数文件,配置路径.初始化参数.内存大小等 日志文件,包括错误日志,二进制日志,慢查询日志,查询日志 socket文件,用unix域套接字,unix domain socket来进行连接时需要的文件,这一般是本机连接,比通常tcp快 pid文件,进程id

《mysql技术内幕 InnoDB存储引擎(第二版)》阅读笔记

一.mysql架构 mysql是一个单进程多线程架构的数据库. 二.存储引擎 InnoDB: 支持事务 行锁 读操作无锁 4种隔离级别,默认为repeatable 自适应hash索引 每张表的存储都是按主键的顺序记性存放 支持全文索引(InnoDB1.2.x - mysql5.6) 支持MVCC(多版本并发控制)实现高并发 MyISAM: 不支持事务 表锁 支持全文索引 三.InnoDB体系架构 1.后台线程 Master Thread 负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性 IO

MySQL技术内幕-InnoDB存储引擎-读书笔记(一)

MySQL技术内幕-InnoDB存储引擎-读书笔记(一) 作为php开发,使用mysql总是少不了的 博客链接 http://itsong.net/articles/466.html 第一章 MySQL体系结构和存储引擎 MySQL被设计为一个单进程多线程架构的数据库 ./mysql --help | grep my.cnf 可以查看mysql数据库实例启动时,它会在哪些位置查找配置文件. 配置文件中有一个datadir参数,指定了数据库所在的路径.默认为/usr/local/mysql/dat

mysql技术内幕InnoDB存储引擎-阅读笔记

mysql技术内幕InnoDB存储引擎这本书断断续续看了近10天左右,应该说作者有比较丰富的开发水平,在源码级别上分析的比较透彻.如果结合高可用mysql和高性能mysql来看或许效果会更好,可惜书太厚,还在啃当中,希望能早点读完……. 应该说与oracle相比,mysql数据库还是相对比简单,以后还是深入学习下oracle去. 搞数据库也比搞应用运维相对单纯,不用知道各种应用架构,不用写各种脚本工具,只要掌握这个软件就足够了.当然希望自己的知识还是全面一些好.

Mysql技术内幕——表&索引算法和锁

表 4.1.innodb存储引擎表类型 innodb表类似oracle的IOT表(索引聚集表-indexorganized table),在innodb表中每张表都会有一个主键,如果在创建表时没有显示的定义主键则innodb如按照如下方式选择或者创建主键.首先表中是否有唯一非空索引(unique not null),如果有则该列即为主键.不符合上述条件,innodb存储引擎会自动创建一个6字节大小的指针,rowid(). 4.2.innodb逻辑存储结构 innodb的逻辑存储单元由大到小分别是

MyBatis在insert插入操作时返回主键ID的配置

转:http://www.cnblogs.com/icerainsoft/p/4648900.html 很多时候,在向数据库插入数据时,需要保留插入数据的id,以便进行后续的update操作或者将id存入其他表作为外键. 但是,在默认情况下,insert操作返回的是一个int值,并且不是表示主键id,而是表示当前SQL语句影响的行数... 接下来,我们看看MyBatis如何在使用MySQL和Oracle做insert插入操作时将返回的id绑定到对象中. MySQL用法: <insert id=&qu

《MySQL技术内幕InnoDB存储引擎》读书笔记 第一章

Mysql体系结构和存储引擎 1.1 定义数据库和实例 数据库:物理操作系统文件或其他形式文件类型的集合.    数据库文件可以使frm,MYD,MYI,ibd结尾的文件. 实例:MySQL数据库由后台线程以及一个共享内存区组成.    数据库实例才是真正用于操作数据库文件的. 实例与数据库的关系通常是一一对应的,在集群情况下可能存在一个数据库被多个数据实例使用的情况. MySQL被设计为一个单进程多线程架构的数据库,这点与SQL Server比较类似,但与Oracle多进程的架构有所不同(Or

《Mysql技术内幕》札记(上)

第一章   MYSQL体系结构和存储引擎 一.数据库的概念 数据库:数据库文件类型的集合,以frm与ibd结尾等. 数据库实例:数据库后台的进程/线程 以及共享内存组成,实例操作数据库文件数据库与实例一一对应,一个实例对应一个数据库Mysql是单进程多线程,这就意味着一个实例一个进程 MYSQL架构    SQL接口组件   查询分析器组件    优化器组件    缓存                       插件式存储引擎(基于表)                           物理

mysql技术内幕之InnoDB Insert(插入)操作

当客户端发出一条insert指令后,对于一张innodb类型的表,它的内部究竟会做出怎样的反应呢?本文章将为大家揭开这 一内幕.当然,本人才疏学浅,如果你发现了什么不对的地方,可以指出来,大家一起讨论. 突然发现用文字很难解释清楚这个过程,那么就用一张图来代替吧,反而更加清晰明了.我还没有搞清楚的问题是:bin_log的写入时间,commit操作对应redo跟innodb_buffer分别所处的位置. 版权声明:本文为博主原创文章,未经博主允许不得转载.