二、mysql存储引擎之InnoDB
一、存储引擎简介
mysql采用业务逻辑和数据存储分离的架构,底层的存储引擎为上层的SQL层提供了支持;mysql采用的是插件的方式将存储引擎直接加载到正在运行的MySQL中,这是mysql的一个重要特性;
以下命令可以查询当前mysql支持的存储引擎:
show engines;
本文环境:
1)mysql版本为:5.7.18
2)系统: mac os
存储引擎9种:

除了FEDERATED以外的8种都是支持的,默认是InnoDB;
二、InnoDB特点
1)存储限制:64TB
2)事务安全:支持
3)锁机制:行级锁
4)B-tree索引:支持
5)哈希索引:不支持
6)全文索引:不支持
7)集群索引:支持
8)数据缓存:支持
9)索引缓存:支持
10)数据可压缩:不支持
11)空间使用:高
12)内存使用:高
13)批量插入速度:低
14)支持外键:支持
三、InnoDB主要特点介绍
InnoDB存储引擎是第三方公司开发的,目前应用最广泛的数据库存储引擎除了MyISAM之外就是InnoDB了,InnoDB写的处理速度相对于MyISAM效率低一些,牺牲了存储和查询的效率,支持事务安全,支持自动增长列,对事务安全的支持是InnoDB成为mysql最为流行的存储引擎之一的重要原因。
1)支持事务
Mysql支持对InnoDB存储事务控制,实现了SQL92标准所定义的4个级别:
1、read uncommintted
2、repeatable read
3、read committed
4、serializable
mysql通过commit、rollback、set autocommit、start transaction 等语法支持本地事务
2)自动增长列
InnoDB表的自动增长需要在列的后面添加auto increment属性,在添加表数据的过程中,可以插入空值,该列可以自动增加数据;
3)外键约束
InnoDB实现了外键这一数据库重要功能,从数据库性能上讲数据库外键降低了数据库查询的效率,数据库表之间耦合度更加紧密,但是对于不少用户来讲,采用外键约束可能是最低成本的选择方式。Mysql支持外键的引擎只有InnoDB。在创建外键的时候,要求父表必须又对应的索引,子表在创建外键的时候会添加对应的索引。
在物理存储上,InnoDB有自己的存储方式,表结构信息也是存放在.frm文件里面的,但是表数据和索引数据是存放在一起的。InnoDB的存储表数据和索引数据的方式有两种:
1)共享表空间存储
也就是所有的表数据和索引数据存放在同一个表空间中,数据和索引在innodb_data_home_dir和innodb_data_file_path定义的表空间中,可以使用一个或者多个数据文件(.ibdata文件);
2)多表空间存储(独享表空间)
这种存储方式创建的表结构存放在.frm文件中,但是每个表数据和索引数据存放在一个单独的.ibd文件中。如果是分区表,则每个分区对应单独的.ibd文件,文件名称是“表名+分区名”,可以在创建分区的时候指定每个分区的数据文件的路径,这样的好处是可以将表的读取平均分布到若干个磁盘分区文件上,提高数据访问的效率。
要使用多表空间存储方式,需要设置:innodb_file_per_table参数。该参数可以修改InnoDB为独立的表空间模式,每个数据库的表都会生成一个数据空间。
可以用以下命令查看多表空间模式是否已经开启:
SHOW VARIABLES LIKE '%per_table%'
在设置innodb_file_per_table之前,需要先关闭数据库,然后在my.cnf文件中设置或者添加参数:innodb_file_per_table=1,并重启数据库生效。
使用多表空间特性的表,可以比较方便的进行表备份和恢复,但是直接复制.idb文件是不行的,可以通过以下命令:
ALTER TABLE table_name DISCARD TABLESPACE; ALTER TABLE table_name IMPORT TABLESPACE;
InnoDB在功能上跟MyISAM存储引擎有很大的不同,在参数配置上,InnoDB也是单独处理的,InnoDB所有的参数基本上都是加了前缀"innodb_"。
如果想屏蔽InnoDB存储引擎,在my.cnf文件中,将skip-innodb参数前的#去除,这样就无法创建InnoDB类型的表了。
参考:《mysql技术内幕》
二、mysql存储引擎之InnoDB的更多相关文章
- {MySQL存储引擎介绍}一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用
MySQL存储引擎介绍 MySQL之存储引擎 本节目录 一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用 一 存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是 ...
- mysql 存储引擎 myisam innodb 区别
虽然MySQL里的存储引擎不只是MyISAM与InnoDB这两个,但常用的就是它俩了.可能有站长并未注意过MySQL的存储引擎,其实存储引擎也是数据库设计里的一大重要点,那么博客系统应该使用哪种存储引 ...
- MySQL存储引擎【InnoDB、MyISAM、Memory】
数据库,MySQL这样存在多存储引擎的数据库软件,清楚常见的存储引擎的区别,使用合适的存储引擎,使得项目跑的更顺畅,有时候对于一个项目,甚至比项目本身都重要.这篇文章,旨在浅谈常见的三种存储引擎的区别 ...
- MySQL存储引擎:InnoDB和MyISAM的差别/优劣评价/评测/性能测试
InnoDB和MyISAM简介 MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的 顺序访问方法) 的缩写 ...
- MySQL系列(二)--MySQL存储引擎
影响数据库性能的因素: 1.硬件环境:CPU.内存.存盘IO.网卡流量等 2.存储引擎的选择 3.数据库参数配置(影响最大) 4.数据库结构设计和SQL语句 MySQL采用插件式存储引擎,可以自行选择 ...
- 浅谈MySQL存储引擎选择 InnoDB还是MyISAM
如果是一些小型的应用或项目,那么MyISAM 也许会更适合.当然,在大型的环境下使用MyISAM 也会有很大成功的时候,但却不总是这样的.如果你正在计划使用一个超大数据量的项目,那么你应该直接使用In ...
- MySql存储引擎:innodb myisan memory
一.MySQL存在的常用存储引擎 存储引擎就是指表的类型,数据库的存储引擎决定了表在计算机中的存储方式. 使用show engines; (show engines\G;)可查看数据库支持的存储引擎 ...
- Mysql 存储引擎中InnoDB与MyISAM差别(网络整理)
1. 事务处理 innodb 支持事务功能,myisam 不支持. Myisam 的运行速度更快,性能更好. 2,select ,update ,insert ,delete 操作 MyISAM:假设 ...
- Mysql 存储引擎中InnoDB与Myisam的主要区别
一直以为我spring事物没有配置好,结果发现是mysql的表本身设置成了Myisam 引擎.改成innodb就支持事物了. 1, 事务处理 innodb 支持事务功能,myisam 不支持. Myi ...
随机推荐
- CookieJar和HTTPCookieProcessor
CookieJar和HTTPCookieProcessor 我们在使用爬虫的时候,经常会用到cookie进行模拟登陆和访问.在使用urllib库做爬虫,我们需要借助http.cookiejar库中的C ...
- 爬虫开发.2urllib模块
一.urllib库 概念:urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urll ...
- linux 安装python3.7 报错No module named '_ctypes'
ModuleNotFoundError: No module named '_ctypes' 操作系统:centos yum install libffi-devel ./configure --en ...
- PTA 7-2 深入虎穴 (30 分)
著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报.已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门.每一扇门背后或者是一个房间,或者又有很多条路,同样是每条 ...
- Windows下使用DOS命令进入MySQL数据库
先要配置环境变量 MYSQL_HOME : D:\mysql-8.0.11-winx64 Path:%MYSQL_HOME%\bin 1)新建MYSQL_HOME变量,并配置:C:\Program F ...
- 快速启动工具Rulers 4.1
Rulers 4.1 Release 360云盘 https://yunpan.cn/cSbq5nx9GVwrJ 访问密码 0532 百度云 http://pan.baidu.com/s/1czCNR ...
- MySQL直接导出CSV文件,并解决中文乱码的问题
需求: 需要导出hr_users 表中的部分字段的数据,以前是用PHP写脚本,然后导出CSV文件. 在MySQL中,它自己就能导出CSV文件 ,只不过是有如下几个问题需要大家解决. 1. 生成文件不成 ...
- java架构师之路,享学课堂VIP课程视频下载
享学课堂并发编程:百度网盘 链接:https://pan.baidu.com/s/10O8oXC0yNRArUh3WKkXayg 提取码:o01s 更多视频获取方式请留言
- abp部署端口和域名映射配置
前引 apb部署 后端服务9900端口,域名访问地址是:http://nihao-api.hellow.com: 前端4200端口,域名访问地址是:http://nihao.hellow.com: 前 ...
- 神奇的树上启发式合并 (dsu on tree)
参考资料 https://www.cnblogs.com/zhoushuyu/p/9069164.html https://www.cnblogs.com/candy99/p/dsuontree.ht ...