mysql的innodb存储引擎
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存储引擎的更多相关文章
- MySQL数据库InnoDB存储引擎多版本控制(MVCC)实现原理分析
文/何登成 导读: 来自网易研究院的MySQL内核技术研究人何登成,把MySQL数据库InnoDB存储引擎的多版本控制(简称:MVCC)实现原理,做了深入的研究与详细的文字图表分析,方便大家理解I ...
- MySQL数据库InnoDB存储引擎中的锁机制
MySQL数据库InnoDB存储引擎中的锁机制 http://www.uml.org.cn/sjjm/201205302.asp 00 – 基本概念 当并发事务同时访问一个资源的时候,有可能 ...
- MySql中innodb存储引擎事务日志详解
分析下MySql中innodb存储引擎是如何通过日志来实现事务的? Mysql会最大程度的使用缓存机制来提高数据库的访问效率,但是万一数据库发生断电,因为缓存的数据没有写入磁盘,导致缓存在内存中的数据 ...
- MySQL数据库InnoDB存储引擎
MySQL数据库InnoDB存储引擎Log漫游 http://blog.163.com/zihuan_xuan/blog/static/1287942432012366293667/
- mysql中InnoDB存储引擎的行锁和表锁
Mysql的InnoDB存储引擎支持事务,默认是行锁.因为这个特性,所以数据库支持高并发,但是如果InnoDB更新数据的时候不是行锁,而是表锁的话,那么其并发性会大打折扣,而且也可能导致你的程序出错. ...
- mysql之innodb存储引擎
mysql之innodb存储引擎 innodb和myisam区别 1>.InnoDB支持事物,而MyISAM不支持事物 2>.InnoDB支持行级锁,而MyISAM支持表级锁 3>. ...
- 在MySQL的InnoDB存储引擎中count(*)函数的优化
写这篇文章之前已经看过了很多数据库方面的优化内容,大部分都是加索引.使用事务.要什么select什么等等.然而,只是停留在阅读的层面上,很少有实践,因为没有遇到真实的项目,一切都是纸上谈兵.实践是检验 ...
- MySQL:InnoDB存储引擎的B+树索引算法
很早之前,就从学校的图书馆借了MySQL技术内幕,InnoDB存储引擎这本书,但一直草草阅读,做的笔记也有些凌乱,趁着现在大四了,课程稍微少了一点,整理一下笔记,按照专题写一些,加深一下印象,不枉读了 ...
- 一文带你读懂 Mysql 和 InnoDB存储引擎
作为一名开发人员,在日常的工作中会难以避免地接触到数据库,无论是基于文件的 sqlite 还是工程上使用非常广泛的 MySQL.PostgreSQL,但是一直以来也没有对数据库有一个非常清晰并且成体系 ...
- MySQL 温故而知新--Innodb存储引擎中的锁
近期碰到非常多锁问题.所以攻克了后,细致再去阅读了关于锁的书籍,整理例如以下:1,锁的种类 Innodb存储引擎实现了例如以下2种标准的行级锁: ? 共享锁(S lock),同意事务读取一行数据. ? ...
随机推荐
- Springboot实体类转JSON报错Could not find acceptable representation & 设置访问项目根路径的默认欢迎页面
=================实体类转JSON报错的解决办法============= 之前在springmvc的时候也报过这个错,原因以及springmvc中解决办法参考:https://www ...
- sublime修改侧边栏字体
安装了sublime的material主题后,侧边栏的字体特别小,设置方法如下: 安装插件 用上面的插件打开 Material-Theme.sublime-theme 如下 { "class ...
- Random() 插入数据重复的问题
今天在写一个小测试用例时,想在数据库插入一些数据.造数据时用到了Random函数,之前没有注意到这个问题,看到“Random生成随机数重复的问题”才注意到自己插入的数据有重复. ; i < ; ...
- spring集成cxf实现webservice接口功能
由于cxf的web项目已经集成了Spring,所以cxf的服务类都是在spring的配置文件中完成的.以下是步骤:第一步:建立一个web项目.第二步:准备所有jar包.将cxf_home\lib项目下 ...
- Control算法相关
Control算法相关 添加新的control算法官方指导教程. 创建一个控制器: 在文件control_config中添加新控制器的配置信息: 注册新控制器. 如何添加新的CAN卡. Apollo中 ...
- 转-4年!我对OpenStack运维架构的总结
4年!我对OpenStack运维架构的总结 原创: 徐超 云技术之家 今天 前言 应“云技术社区”北极熊之邀,写点东西.思来想去云计算范畴实在广泛,自然就聊点最近话题异常火热,让广大云计算从业者爱之深 ...
- 一、Windows10下python3和python2同时安装
python2.exe.python3.exe和pip2.pip3设置 说明:安装安装python3和python2请参考本系列教程(一) 1.添加python2到系统环境变量 打开,控制面板\系统和 ...
- 解决:Gitlab的developer角色的人没有push权限无法提交(转)
问题 几位同事合作搞一些东西,打算在Gitlab上建一个仓库,然后协同开发.建好仓库后,将其他几位同事添加进来,角色分配为Developer. 之后提交初始代码到master分支后,他们用source ...
- [Linux]流媒体服务器概述
二.何为流媒体与流式传输? 2.1 流媒体 「流媒体」是指采用「流式传输」的方式在Internet播放的媒体格式,流媒体最大的特点就是「边下边播」,常用的流媒体格式有FLV(使用FLASH作为视频播放 ...
- sql拼接显示table的多个列
SELECT DeptName AS text,CONVERT(VARCHAR(10),ID)+','+DeptCode+','+ISNULL(Remark,'') AS tags,'' AS hre ...