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
tfat什么意思
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对⼀些功能不⽀持。
什么是
js添加html标签通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上⼀些⽂件的集合或者⼀些内存数据的集合。
我们通常说的MySql数据库,sql server数据库等等其实是数据库管理系统,它们可以存储数据,并提供查询和更新数据库中的数据的功能等等。根据数据库如何存储数据和如何操作数据的实现机制不同,这些数据库之间即有区别⼜有共同点。
react hooks 生命周期MySql数据库是开放源代码的关系型数据库。⽬前,它可以提供的功能有:⽀持sql语⾔、⼦查询、存储过程、触发器、视图、索引、事务、锁、外键约束和影像复制等。在后期,我们会详细讲解这些功能。
同Oracle 和SQL Server等⼤型数据库系统⼀样,MySql也是客户/服务器系统并且是单进程多线程架构的数据库。    MySql区别于其它数据库系统的⼀个重要特点是⽀持插⼊式存储引擎。
那么什么是存储引擎呢?
存储引擎说⽩了就是如何存储数据、如何为存储的数据建⽴索引和如何更新、查询数据等技术的实现⽅法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。
在Oracle 和SQL Server等数据库中只有⼀种存储引擎,所有数据存储管理机制都是⼀样的。⽽MySql数据库提供了多种存储引擎。⽤户可以根据不同的需求为数据表选择不同的存储引擎,⽤户也可以根据⾃⼰的需要编写⾃⼰的存储引擎。
MySql中有哪些存储引擎?
1 MyISAM:这种引擎是mysql最早提供的。这种引擎⼜可以分为静态MyISAM、动态MyISAM 和压缩MyISAM三种:
静态MyISAM:如果数据表中的各数据列的长度都是预先固定好的,服务器将⾃动选择这种表类型。因为数据表中每⼀条记录所占⽤的空间都是⼀样的,所以这种表存取和更新的效率⾮常⾼。当数据受损时,恢复⼯作也⽐较容易做。
动态MyISAM:如果数据表中出现varchar、xxxtext或xxxBLOB字段时,服务器将⾃动选择这种表类型。
相对于静态MyISAM,这种表存储空间⽐较⼩,但由于每条记录的长度不⼀,所以多次修改数据后,数据表中的数据就可能离散的存储在内存中,进⽽导致执⾏效率下降。同时,内存中也可能会出现很多碎⽚。因此,这种类型的表要经常⽤optimize table 命令或优化⼯具来进⾏碎⽚整理。
压缩MyISAM:以上说到的两种类型的表都可以⽤myisamchk⼯具压缩。这种类型的表进⼀步减⼩了占⽤的存储,但是这种表压缩之后不能再被修改。另外,因为是压缩数据,所以这种表在读取的时候要先时⾏解压缩。
但是,不管是何种MyISAM表,⽬前它都不⽀持事务,⾏级锁和外键约束的功能。
2 MyISAM Merge引擎:这种类型是MyISAM类型的⼀种变种。合并表是将⼏个相同的MyISAM表合并为⼀个虚表。常应⽤于⽇志和数据仓库。
瀑布流怎么删除
3 InnoDB:InnoDB表类型可以看作是对MyISAM的进⼀步更新产品,它提供了事务、⾏级锁机制和外键约束的功能。mysql语句分类
4 memory(heap):这种类型的数据表只存在于内存中。它使⽤散列索引,所以数据的存取速度⾮常快。因为是存在于内存中,所以这种类型常应⽤于临时表中。
5 archive:这种类型只⽀持select 和 insert语句,⽽且不⽀持索引。常应⽤于⽇志记录和聚合分析⽅⾯。
当然MySql⽀持的表类型不⽌上⾯⼏种。
下⾯我们介绍⼀下如何查看和设置数据表类型。
MySql中关于存储引擎的操作
1 查看数据库可以⽀持的存储引擎
⽤show engines; 命令可以显⽰当前数据库⽀持的存储引擎情况,如图1所⽰:
图1 数据库的存储引擎
由上图可见当前系统的默认数据表类型是MyISAM。当然,我们可以通过修改数据库配置⽂件中的选项,设定默认表类型。
2 查看表的结构等信息的若⼲命令
要查看表的定义结构等信息可以使⽤以下⼏种命令:
2.1Desc[ribe] tablename; //查看数据表的结构
例如,查看表t1的结构,可得下图。
图2:查看表t1的结构
2.2 Show create table tablename; //显⽰表的创建语句
同上查询表t1,得下图:
图3 显⽰创建表t1的语句
2.3 show table status like ‘tablename’\G显⽰表的当前状态值
同上查询表t1,得下图:
图4 显⽰表t1 的当前状态值
综上可见,后两种⽅式都可以帮助我们查看某⼀表的存储引擎类型(图中已⽤红⾊⽅框标出)。
3  设置或修改表的存储引擎
3.1创建数据库表时设置存储存储引擎的基本语法是:
Create table tableName(
columnName(列名1)  type(数据类型)  attri(属性设置),
columnName(列名2)  type(数据类型)  attri(属性设置),
……..) engine = engineName
例如,假设要创建⼀个名为user的表,此表包括id,⽤户名username和性别sex三个字段,并且要设置表类型为merge。则可⽤如下的⽅式创建此数据表,
create table user(
id int not null auto_increment,
username char(20) not null,
sex char(2),
primary key(id)
) engine=merge
具体执⾏结果见下图:
图5 创建表user
查看创建后表user的信息,可见表的当前存储引擎是merge,如图所⽰:
图6 显⽰表t1 的当前状态值
3.2修改存储引擎,可以⽤命令Alter table tableName engine =engineName
假如,若需要将表user的存储引擎修改为archive类型,则可使⽤命令alter table user engine=archive。如下图所⽰:图7 修改表user的存储引擎
查看修改后的表类型,可见表类型已经变为archive类型。
图8 显⽰表user修改后的状态值

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