Mysql表的七种类型详细介绍
程序员文章站
2023-12-21 18:00:35
学习mysql数据库,mysql表类型都有哪些是一定需要知道的,下面就为您介绍七种mysql表类型,希望能对您学习mysql表类型有所帮助。 mysql作为当前最为流行的免...
学习mysql数据库,mysql表类型都有哪些是一定需要知道的,下面就为您介绍七种mysql表类型,希望能对您学习mysql表类型有所帮助。
mysql作为当前最为流行的免费数据库服务引擎,已经风靡了很长一段时间,不过也许也有人对于mysql的内部环境不很了解,尤其那些针对并发性处理的机制。今天,我们先了解一下mysql表类型,以及它们的一些简单性质。
截至目前,mysql一共向用户提供了包括dbd、heap、isam、merge、myias、innodb以及gemeni这7种mysql表类型。其中dbd、innodb属于事务安全类表,而其他属于事务非安全类表。
dbd
berkeley db(dbd)表是支持事务处理的表,由sleepycat软件公司开发。它提供mysql用户期待已久的功能--事务控制。事务控制在任何数据库系统中都是一个极有价值的功能,因为它们确保一组命令能成功地执行或回滚。
heap
heap表是mysql中存取数据最快的表。这是因为他们使用存储在动态内存中的一个散列索引,不过如果mysql或服务器崩溃,这些内存数据将会丢失。
isam
isam表是早期mysql版本的缺省表类型,直到myiasm开发出来。建议不要再使用它。
merge
merge是一个有趣的新类型,在3.23.25之后出现。一个merge表实际上是又一个myisam表的集合,合并而成的一个表,主要是为了效率的考虑,因为这样不仅仅可以提高速度、搜索效率、修复效率而且还节省了磁盘空间。
myiasm
myiasm基于了iasm代码,应该可以说是iasm的衍生品,不过增加了不少有用的扩展。它是mysql的默认数据表类型,基于了传统的isam类型,isam是indexed sequential access method(有索引的顺序访问方法)的缩写,一般来说,它是存储记录和文件的标准方法。与其他存储引擎比较,myisam具有检查和修复表格的大多数工具。isam表格可以被压缩,而且它们支持全文搜索,不过它们是事务不安全的,而且也不支持外键。如果事务回滚将会造成不完全回滚,从而不具备原子性。所以假如忽略事务以及访问并发性的话,并且需要执行大量的select检索语句的话,myisam将是最好的选择。
innodb
innodb是mysql 4.0之后推出的一种比较新的数据表类型,这种类型是事务安全的。它与bdb类型具有相同的特性,它们还支持外键。innodb表格速度很快具有比bdb还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它。如果你的数据执行大量的insert或update,出于性能方面的考虑,同样应该使用innodb表。对于支持事务的innodb类型的表来说,影响速度的主要原因是autocommit默认设置是打开的,而且程序没有显式调用begin 开始事务,导致每插入一条都自动提交,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打开也可以),将大大提高性能。
gemeni
gemeni表,据听说也是在mysql 4.0之后推出的,不过截至当前,很少有针对它的介绍,同样应用也就更少了,我们暂时不作介绍。
mysql的数据表类型很多,其中比较重要的是myisam,innodb这两种。
这两种类型各有优缺点,需要根据实际情况选择适合的,mysql支持对不同的表设置不同的类型。下面做个简单的对比:
myisam表类型是一种比较成熟稳定的表类型,但是myisam对一些功能不支持。
mysql作为当前最为流行的免费数据库服务引擎,已经风靡了很长一段时间,不过也许也有人对于mysql的内部环境不很了解,尤其那些针对并发性处理的机制。今天,我们先了解一下mysql表类型,以及它们的一些简单性质。
截至目前,mysql一共向用户提供了包括dbd、heap、isam、merge、myias、innodb以及gemeni这7种mysql表类型。其中dbd、innodb属于事务安全类表,而其他属于事务非安全类表。
dbd
berkeley db(dbd)表是支持事务处理的表,由sleepycat软件公司开发。它提供mysql用户期待已久的功能--事务控制。事务控制在任何数据库系统中都是一个极有价值的功能,因为它们确保一组命令能成功地执行或回滚。
heap
heap表是mysql中存取数据最快的表。这是因为他们使用存储在动态内存中的一个散列索引,不过如果mysql或服务器崩溃,这些内存数据将会丢失。
isam
isam表是早期mysql版本的缺省表类型,直到myiasm开发出来。建议不要再使用它。
merge
merge是一个有趣的新类型,在3.23.25之后出现。一个merge表实际上是又一个myisam表的集合,合并而成的一个表,主要是为了效率的考虑,因为这样不仅仅可以提高速度、搜索效率、修复效率而且还节省了磁盘空间。
myiasm
myiasm基于了iasm代码,应该可以说是iasm的衍生品,不过增加了不少有用的扩展。它是mysql的默认数据表类型,基于了传统的isam类型,isam是indexed sequential access method(有索引的顺序访问方法)的缩写,一般来说,它是存储记录和文件的标准方法。与其他存储引擎比较,myisam具有检查和修复表格的大多数工具。isam表格可以被压缩,而且它们支持全文搜索,不过它们是事务不安全的,而且也不支持外键。如果事务回滚将会造成不完全回滚,从而不具备原子性。所以假如忽略事务以及访问并发性的话,并且需要执行大量的select检索语句的话,myisam将是最好的选择。
innodb
innodb是mysql 4.0之后推出的一种比较新的数据表类型,这种类型是事务安全的。它与bdb类型具有相同的特性,它们还支持外键。innodb表格速度很快具有比bdb还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它。如果你的数据执行大量的insert或update,出于性能方面的考虑,同样应该使用innodb表。对于支持事务的innodb类型的表来说,影响速度的主要原因是autocommit默认设置是打开的,而且程序没有显式调用begin 开始事务,导致每插入一条都自动提交,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打开也可以),将大大提高性能。
gemeni
gemeni表,据听说也是在mysql 4.0之后推出的,不过截至当前,很少有针对它的介绍,同样应用也就更少了,我们暂时不作介绍。
mysql的数据表类型很多,其中比较重要的是myisam,innodb这两种。
这两种类型各有优缺点,需要根据实际情况选择适合的,mysql支持对不同的表设置不同的类型。下面做个简单的对比:
myisam表类型是一种比较成熟稳定的表类型,但是myisam对一些功能不支持。