mysql 的储存引擎

1. 储存引擎的概念

       储存引擎(储存引擎也可以成为表类型)其实就是如何储存数据,如何为储存的数据建立索引和如何更新,查询数据等技术的实现方法。mysql中的数据用各种不同的技术储存在文件(或内存)中。这些技术中的每一种技术都使用不同的储存机制,索引技巧,锁定水平并且最终提供广泛的,不同的功能和能力,这些不同的技术及配套的相关功能在myql中被称为储存引擎。可以选择适用于服务器,数据库,表格的储存引擎。

 

2 .Mysql 中支持的储存引擎

查询Mysql支持的储存引擎

      mysql>show engines ;   

     show engines 语句可以用“;”,也可以用“\G”,j结尾 。“\G”可以让结果显示得更美观,          

  从图中可以看出mysql支持的储存引擎有MyISAM,CSV,InnoDB,BLACKHOLE,MEMORY,PERFORMANCE_SCHEMA,ARCHIVE,MRG_MYISAM。
    并可以看出 InnoDB 为默认储存引擎,并且 InnoDB支持 事务,行级别锁,外键。XA(分布式事务),Savepoints(保存点)

 

 

查看默认的储存引擎

      mysql>show variables like "storage_engine%" ;

  可以看出 InnoDB 为默认储存引擎

 

 Mysql常用的储存引擎

1.  InnoDB储存引擎 (支持事务,行级锁)

  innodb 储存引擎中支持自动增长列 AUTO_INCREMENT 。自动增长列的值不能为空,且值必须唯一。 Mysql中规定自动增长列必须为主键,在插入值时,如果自动增长列不输入值,则插入的值为自动增长后的值,如果输入的值为0或空(NULL),则插入的值也为自动增长后的值,如果插入某个确定的值,且该值在前面没有出现过,则可以直接插入。

  innodb 储存引擎中支持外键(FOREIGN KEY),外键所在的表为子表,外键所依赖的表为父表。父表中被子表外键关联的字段必须为主键,当删除,更新父表的某条信息时,子表也必须有相应的改变。

  innodb储存引擎是唯一支持事务的标准mysql储存引擎,

  innodb 储存引擎中,创建的表的表结构储存在.frm文件中,数据和索引储存在innodb_data_home_dir 和innodb_data_file_path 表空间中

  innodb 储存引擎的优势在于提供良好的事务管理,崩溃修复能力和并发控制,缺点是其读写效率稍差,占用数据空间相对比较大

    Innodb 储存引擎的表在文件系统里储存成2个文件(每表一个表空间文件)

                    . frm 储存表结构

                     .ibd 表空间文件(储存数据和索引)

2.  MyISAM 储存引擎(不支持事务,表锁)

  MyISAM 储存引擎的表储存成3个文件,文件的名称与表名相同,扩展名包括frm,MYD,MYI。

     .frm: 储存表的结构

     .MYD: 储存数据,MYDATA的缩写

     .MYI:  储存索引,MYIndex的缩写

基于MyISAM储存引擎的表支持3种不同的储存格式,包括静态型,动态型,压缩型

 MyIsam静态

  如果所有表列的大小都是静态的(既不使用xBLOB,xTEXT,VARCHAR数据类型)就会自动使用静态MYISAM

  

  

 持续跟新中。。。。。。

posted @ 2018-03-02 11:11  IT小能手  阅读(363)  评论(0编辑  收藏  举报