Mysql数据库表的类型有哪些
截⽌⽬前,Myslq⼀共向⽤户提供了包括DBD,HEAP,ISAM,MERFE,MyISAM,InnoDB以及Gemeni这7种Mysql表类型,其中DBD,InnoDB属于事物安全类表,⽽其他属于事物⾮安全类表。
BDB
Berkeley Db(BDB)表是⽀持事物处理的表,由Sleepycat软件公司开发。它提供Mysql⽤户期待已久的功能--事物控制。事物控制在任何数据库系统中国呢都是⼀个极有价值的功能,因为它们确保⼀组命令能成功地执⾏和回滚。
HEAP
HEAP表是MySQL中存取数据最快的表。这是因为他们使⽤存储在动态内存中的⼀个散列索引,不过如果MySQL或服务器崩溃,这些内存数据将会丢失。
ISAM
ISAM表是早期MySQL版本的缺省表类型,知道MyISAM开发出来。建议不要再使⽤它。
MERGE
MERGE是⼀个有趣的新类型,在3.23.25之后出现。⼀个MERGE表实际上⼜⼀个MyISAM表的集合,合并⽽成的⼀个表,主要是为了效率的考虑,因为这样不仅仅可以提⾼速度,搜索效率,修复效率⽽且还节省了磁盘空间。
MyISAM
MyISAM基于ISAM代码,可以说是ISAM的衍⽣品,不过增加了不少好⽤的扩展。它是MySQL的默认数据表类型,基于了传统的ISAM类型,ISAM是Indexed Sequential Access Method(有索引的顺序访问⽅法)的缩写,⼀般来说,它是存储记录和⽂件的标准⽅法。与其他存储引擎相⽐,MyISAM具有检查和修复表格的⼤多数⼯具。ISAM表格可以被压缩,⽽且它们⽀持全⽂索引,不过它们不是事物安全的,也不⽀持外健。如果事物会滚将会造成不完全会滚,从⽽不具备原⼦性。假如忽略事物以及访问并发性的话,并且需要执⾏⼤量的select检索语句的话,MyISAM将是最好的选择。
InnoDB
InnoDB是MySQL4.0之后推出的⼀种⽐较新的数据表类型,这种类型是事物安全的。它与BDB类型具有相同的特性,它们还⽀持外健。InnoDB表格速度很快具有⽐BDB还丰富的特性,因此如果需要⼀个事物安全的存储引擎,建议使⽤它。如果你的数据执⾏⼤量的insert或者update,处于性能⽅⾯的考虑,同样应该使⽤InnoDb表。对于⽀持事物的InnoDB类型的表来说,影响速度的主要原因是autcomm
it设置是打开的,⽽且程序没有显式调⽤begin开始事物,导致每插⼊⼀条都⾃动提交,严重影响了速度。可以在执⾏sql前调⽤begin,多条sql 想成⼀个事物,将⼤⼤提⾼性能。
Gemeni
Gemeni表,据说是在Mysql 4.0之后推出的,不过截⽌当前,很少有针对它的介绍,同样应⽤也就更少了,我们暂时不做介绍。
MySQL的数据类型很多,其中⽐较重要的是MyISAM,InnoDB这两种。
InnoDB和MyISAM的区别与应⽤场景。
1.区别:
(1)事物处理:
MyISAM是⾮事物安全型的,⽽InnoDB是事物安全型的(⽀持事物处理等⾼级处理);
(2)锁机制不同:
MyISAM是表级锁,⽽InnoDB是⾏级锁。
(3)select,update,insert,delete操作:
MyISAM:如果执⾏⼤量的select,MyISAM是更好的选择
InnoDB:如果你的数据执⾏⼤量的insert或update,出于性能⽅⾯的考虑,应该使⽤InnoDB
(4)查询表的⾏数不同:
mysql创建表数据类型
MyISAM:select count(*) from table,MyISAM只是简单的读出保存好的⾏数,注意的是,当count(*)语句包含where条件时,两种表的操作是⼀样的。
InnoDB:InnoDB中不保存表的具体⾏数,也就是说,执⾏select count(*)from table时,InnoDB要扫描⼀遍整个表来计算有多少⾏
(5)外健⽀持:
MyISAM表不⽀持外健,⽽InnoDB⽀持
2.为什么MyISAM会⽐InnoDB的查询速度快?
InnoDB在做select的时候,要维护的东西⽐MyISAM引擎多很多;
1)数据块,InnoDB要缓慢,MyISAM只缓存索引快,这中间还有换进换出的减少;
2)InnoDB寻址要映射到块,再到⾏,MyISAM记录的直接是⽂件的offset,定位⽐InnoDB要快
3)InnoDB还需要维护MVCC⼀致;虽然你的场景没有,但他还是需要去检查和维护
MVCC(Muti-Version Concurrency Control)多版本并发控制
3.应⽤场景
MyISAM适合:(1)做很多count的计算;(2)插⼊不频繁,查询⾮常频繁;(3)没有事务。
InnoDB适合:(1)可靠性要求⽐较⾼,或者要求事物;(2)表更新和查询都相当频繁,并且⾏锁定的机会⽐较⼤的情况。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。