innodb是支持事务的存储引擎,支持ACID特性的ACID(指数据库事务正确执行的四个基本要素的缩写)

      包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

      更适合处理大量的小事务,小事务正常都会被提交,很少会被回滚,在数据存储的方式上也有很大不同

      innodb有自己的表空间,数据存储在自己的表空间中的,存储在什么样的表空间中,主要由innodb_file_per_table

      这个参数决定,如果这个参数为on,则建立独立表空间,则为每个innobd表建立一个以.idb为扩展名的系统文件,如果为off则建立共享(系统)表空间,存储为ibdataX(x为数字)

  1.set global innodb_file_per_table=off;   设置为off

  2.show variable like 'innodb_file_per_table';  查看表空间
  3.create table myinnodb_g(id int,c1 varchar(10)) engine='innodb'; 当关闭innodb表时就会发现存储为idbdata1,共享表空间

系统表空间和独立表空间如何选择

在mysql5.5之前是默认关闭innodb_file_per_table的,存储在系统表空间中,

  1.系统表空间无法简单的收缩文件大小,产生磁盘碎片,空间浪费,降低系统性能

   系统表空间产生IO瓶颈,独立表空间可以同时向多个文件刷新数据

  2.独立表空间可以通过optimize table 命令收缩系统文件。mysql5.6后默认开启

1.将原来存在于系统表空间中的表转移到独立表空间中的方法:

  1.1、使用mysqldump导出所有数据库数据,如果有存储过程、触发器,计划事件等要一起导出

  1.2、停止mysql服务,(主从架构先从从进行操作)修改my.cnf文件并加入innodb_file_per_table=on参数(修改参数,并删除原来innodb表空间相关文件)

      如果之前做过备份,这里可以重建data目录,使用mysql的初始化start脚本

  1.3、重启mysql服务,重建innodb系统表空间

  1.4、重新导入数据

2.系统表空间中的数据字典

  innodb数据字典:是数据库对象结构的源数据的信息,存储表、列、索引

  frm文件是服务器所产生的文件,可以理解为服务器层的数据字典,简单二进制文件

  innodb内部数据字典,引擎相关的一些内容

  undo回滚段:mysql5.6 就已经支持啦

3、innodb是如何实现完全支持事务的ACID特性的

  实现原子性、持久性、一致性使用了两个日志类型,

  redo log 重做日志:实现事务的持久性,内存中的重做日志缓冲区,重做日志文件

           show variables like 'innodb_log_buffer_size';

            以字节为单位的大小,不需要太大,data目录下看到ib_logfil0/1,有两个,show variables like 'innodb_log_files_in_group'; 看到默认两个,存储已提交事务

         

  undo log 回滚日志:帮助未提交事务进行回滚和实现mvcc多版本并发控制,存储未提交的事务

            

  

  

mysql的innodb存储引擎的更多相关文章

  1. MySQL数据库InnoDB存储引擎多版本控制(MVCC)实现原理分析

    文/何登成 导读:   来自网易研究院的MySQL内核技术研究人何登成,把MySQL数据库InnoDB存储引擎的多版本控制(简称:MVCC)实现原理,做了深入的研究与详细的文字图表分析,方便大家理解I ...

  2. MySQL数据库InnoDB存储引擎中的锁机制

    MySQL数据库InnoDB存储引擎中的锁机制    http://www.uml.org.cn/sjjm/201205302.asp   00 – 基本概念 当并发事务同时访问一个资源的时候,有可能 ...

  3. MySql中innodb存储引擎事务日志详解

    分析下MySql中innodb存储引擎是如何通过日志来实现事务的? Mysql会最大程度的使用缓存机制来提高数据库的访问效率,但是万一数据库发生断电,因为缓存的数据没有写入磁盘,导致缓存在内存中的数据 ...

  4. MySQL数据库InnoDB存储引擎

    MySQL数据库InnoDB存储引擎Log漫游  http://blog.163.com/zihuan_xuan/blog/static/1287942432012366293667/

  5. mysql中InnoDB存储引擎的行锁和表锁

    Mysql的InnoDB存储引擎支持事务,默认是行锁.因为这个特性,所以数据库支持高并发,但是如果InnoDB更新数据的时候不是行锁,而是表锁的话,那么其并发性会大打折扣,而且也可能导致你的程序出错. ...

  6. mysql之innodb存储引擎

    mysql之innodb存储引擎 innodb和myisam区别 1>.InnoDB支持事物,而MyISAM不支持事物 2>.InnoDB支持行级锁,而MyISAM支持表级锁 3>. ...

  7. 在MySQL的InnoDB存储引擎中count(*)函数的优化

    写这篇文章之前已经看过了很多数据库方面的优化内容,大部分都是加索引.使用事务.要什么select什么等等.然而,只是停留在阅读的层面上,很少有实践,因为没有遇到真实的项目,一切都是纸上谈兵.实践是检验 ...

  8. MySQL:InnoDB存储引擎的B+树索引算法

    很早之前,就从学校的图书馆借了MySQL技术内幕,InnoDB存储引擎这本书,但一直草草阅读,做的笔记也有些凌乱,趁着现在大四了,课程稍微少了一点,整理一下笔记,按照专题写一些,加深一下印象,不枉读了 ...

  9. 一文带你读懂 Mysql 和 InnoDB存储引擎

    作为一名开发人员,在日常的工作中会难以避免地接触到数据库,无论是基于文件的 sqlite 还是工程上使用非常广泛的 MySQL.PostgreSQL,但是一直以来也没有对数据库有一个非常清晰并且成体系 ...

  10. MySQL 温故而知新--Innodb存储引擎中的锁

    近期碰到非常多锁问题.所以攻克了后,细致再去阅读了关于锁的书籍,整理例如以下:1,锁的种类 Innodb存储引擎实现了例如以下2种标准的行级锁: ? 共享锁(S lock),同意事务读取一行数据. ? ...

随机推荐

  1. python模块-----time

    说明 time模块提供各种时间相关的功能 与时间相关的模块有:time,datetime,calendar 这个模块的功能不是适用于所有的平台 这个模块中定义的大部分函数是调用C平台上的同名函数实现 ...

  2. 关于Jonathan S. Weissman与RIT(罗切斯特理工学院,位于纽约)

    信息来源于:edx平台的 RITx: CYBER501xCybersecurity Fundamentals  课程的介绍(https://courses.edx.org/courses/course ...

  3. 【ARTS】01_14_左耳听风-20190211~20190217

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  4. 利用binlogserver恢复单表实验【转】

    使用场景 每次开启binlogserver 指定了mysql-bin.0000XX 后都会从该点从头进行传输一次 创建binlogserver [root@mysql-zst3 binlogserve ...

  5. 【51nod1847】 奇怪的数学题

    就当我是 A 了此题吧... 首先预备知识有点多(因为题目要处理的东西都挺毒瘤): 杜教筛运用(当然你可以用其他筛?) 第二类斯特林数相关定理 下降阶乘幂相关定理 min25 筛运用 好了可以关掉本题 ...

  6. $Django 站点:样式--文章--分类文章--文章详情--文章评论点赞--文章评论点赞统计(数据库优化)

    <h3>个人站点下的</h3> 知识点 url (r'(?P<username>\w+)/p/(?P<id>\d+)', xiangxi,name='x ...

  7. Java多线程之控制执行顺序

    概念: 多线程在并发环境中的正常执行顺序是随机无序的,并不能按照期盼的结果输出. 因为启动一个线程时,线程并不会立即执行,而是等待CPU的资源调度,CPU能调度哪个线程,是通过多种复杂的算法计算而来. ...

  8. C# 封装微信的模板消息

    1.先新建一个类库,以方便以后移植到其他的项目上继续使用,如何新建类库就自己去百度了哈,这里就不描述了,若有不会的朋友请留言哈.标红了的都要注意下咯. 2.先看看WxTemplate这个类文件的代码 ...

  9. python 列表,字典,元组,字符串,常用函数

    飞机票 一.列表方法 1.ls.extend(object) 向列表ls中插入object中的每个元素,object可以是字符串,元组和列表(字符串“abc”中包含3个元组),相当于ls和object ...

  10. 【Shared Server Mode】测试调整shared_servers参数对数据库的影响

    本文来源于:secooler  的 <[Shared Server Mode]测试调整shared_servers参数对数据库的影响> 关于Shared Server模式的配置方法请参见文 ...