Mysql存储引擎之InnoDB

2018-08-17  本文已影响0人  _陆春阳_

在mysql5.58版本之后,InnoDB替代了myisam成为了mysql数据库的默认引擎。

和myisam不同的是,InnoDB是一种事物的存储引擎,在存储方式上面有有不同,

InnoDB有表空间的概念,我们可以根据innodb_file_per_table 参数来确认,是否开启独立的表空间: show variables like 'innodb_file_per_table'

查看是否开启表空间

ON > 独立表空间 tablename.idb

OFF> 系统表空间 ibdaraX(x代表数字)

mysql5.5之前默认配置的是系统表空间,5.5之后默认的是独立表空间,那么,应该选择系统表空间还是独立表空间呢???

比较:

    1.系统表空间无法简单的收缩文件大小,如果表空间不足的时候,我们删除数据后,系统表空间并不会减少 ,独立表空间可以通过optimize table 命令来收缩系统文件。不需要重启。

    2.系统表空间是多表存在一起的,所有对IO会产生瓶颈,独立表空间可以同时向多个文件刷新数据。

强烈建议 使用独立表空间

那么如果想将现有的系统表空间的数据如果转移到独立表空间呢?

1.使用mysqldump 导出所有数据库的表数据。

2.停止mysql服务,修改参数,并删除innoDB相关文件。

3.重启mysql服务,重建InnoDB 系统表空间。

4.重新导入数据。

表空间就先介绍到这里,下面介绍下它的一些特性

1.InnoDB是一种事物存储引擎,完全支持事物的ACID特性,它是使用日志来保证事物的,也就是Redo log(重做日志) 和 Undo log(回滚日志)。

查看redo log 数据缓存区大小  show variables like 'innodb_log_buffer_size',我们会每个1秒将缓冲区上面的内容持久化到磁盘上面,所有缓冲区大小不用太大。

Redo log 主要储存已经提交的事物

Undo log 主要是储存未提交事物

2.支持行级锁,行级别锁可以最大程度支持并发,行级锁是由存储引擎层来实现的。

3.InnoDB状态检查

show engine innodb status

适用场景

适合多大数OLTP应用。

上一篇 下一篇

猜你喜欢

热点阅读