2.mysql存储引擎

Posted li-jing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2.mysql存储引擎相关的知识,希望对你有一定的参考价值。

常见的mysql存储引擎有MyISAM,InnoDB

1.存储引擎MyISAM

  (1)它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表

  (2)每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:

    .frm(表结构信息)

    MYD(MYData,数据信息)

    MYI(MYIndex,索引信息)

  特性:

    并发性与锁级别:表级锁(并发性差,对只读还可以)

               表损坏修复:check table tableName; repair table tableName

  支持的索引类型

  支持数据压缩:myisampack –b –f myIsam.MYI命令(对已经压缩的表不能进行写操作)

  限制:

  使用场景:非事务型应用(非财务应用);只读类应用(报表应用);空间类应用(空间函数jps等)

2.存储引擎InnoDB

  (1)Innodb使用表空间进行数据存储

    使用表空间配置参数:innodb_file_per_table

    ON:每一个独立表空间:tablename.ibd;

    OFF:系统表空间:ibdataX

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

    比较:

    1.系统表空间无法简单的收缩文件大小;独立表空间可以通过optimize table命令收缩文件。

    2.系统表空间会产生IO瓶颈;独立表空间可以同事向多个文件刷新数据。

    3.建议使用独立表空间(6以后为默认配置)

    把原来在系统表空间的表转移到独立表空间中的方法,步骤:

    1.使用mysqldump导出所有数据表数据;

    2.停止Mysql服务,修改参数,并删除Innoda相关文件;

    3.重启mysql服务,重建Innodb系统表空间;

    4.重新导入数据。

  (2)存储引擎Innodb特性

    Innodb数据字典信息,frm是mysql系统产生的,Undo回滚段,支持外键,AUTO_INCREMENT自动增加列属性

    Innodb是一种事务性存储引擎,完全支持事务的ACID特性(atomicity,consistency,isolation,durability),Redo Log(持久性)和Undo Log(未提交事务的回滚)

  (3)支持行级锁,可以最大程度支持并发,行级锁是由存储引擎层实现的;

    锁对主要作用是管理共享资源的并发访问,锁用于实现事务的隔离性;

    锁的类型:1.共享锁(也称读锁)2.独占锁(也称写锁)

    锁的粒度:粒度越小并发性越高1.表级锁,在mysql服务层实现2.行级锁,在存储引擎中实现

    阻塞和死锁:

      阻塞:一个事务等在另一个是事务的锁释放,称为阻塞

      死锁:两个或两个以上的事务,在执行过程中,相互占用对方的等待的资源出现的异常。系统会对其自动处理。选取对其占用资源最少的进行回滚。

    Inoodb状态检查:show engine inoodb status

     (4)适用场景:适用大多数OLTP应用

     数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。 

    OLTP :系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作;
    OLAP :系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等。 

 

以上是关于2.mysql存储引擎的主要内容,如果未能解决你的问题,请参考以下文章

四MySQL 存储引擎及数据类型

转!!MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)

2.mysql存储引擎

mysql数据库之 存储引擎事务视图触发器存储过程函数流程控制

存储引擎,MySQL中的数据类型及约束

MySQL存储引擎与体系结构