Oracle数据库管理之道mysql

数据表的类型及储存位置

2017-02-26  本文已影响53人  全栈coder

MySQL支持MyISAM,InnoDB,GEAP , BOB , ARCHIVE , CSV等多种数据表类型,在创建一个新的MySQL数据表时,可以为它设置一个类型。其中最重要的有MyISAM和InnoDB两种表类型,它们有各自的特性。如果创建一个数据表时没有设置类型,MySQL服务器将会根据它的具体配置情况在MyISAM和InnoDB两个类型之间选择。默认的数据表类型,由MySQL配置文件里的default-table-type选项指定,当用CREATE TABLE命令创建一个新数据表时,可以通过ENGINE或TYPE选项决定数据表类型。

MyISAM数据表

MyISAM 数据表类型的特点是成熟,稳定和易于管理。它使用一种表格锁定机制,来优化多个并发的读/写操作。其代价是你经常需要运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MyISAM强调快速的读写操作,这就是为什么MyISAM受到Web开发人员如此青睐的主要原因。

InnoDB数据表

可以把InnoDB数据表看作是MyISAM的一种更新迭代产品。InnoDB给MySQL提供了具有提交,回滚,和崩溃恢复能力的事务安全储存引擎

如何选择InnoDB 还是 MyISAM表类型

MyISAM数据表和InnoDB数据表可以同时存在与同一个数据库,也就是可以把数据库里的不同数据表设置为不同类型。这样,用户就可以根据每一个数据表的内容和具体用途分别对它们作出最佳的数据表类型。
MyISAM数据表和InnoDB数据表简单的功能对比

表类型功能 MyISAM表 InnoDB
事务处理 不支持 支持
数据行锁定 不支持,只支持表锁定 支持
外键约束 不支持 支持
表空间大小 相对小 相对大,最大是2倍
全文索引 支持 不支持
COUNT问题 执行COUNT(*)速度慢

如果你希望以最节约时间和空间或者响应速度更快的方式来管理数据表,MyISAM数据表就应该是首选。如果应用程序需要用到事务、外键、或更高的安全性,以及需要允许很多用户同时修改某个数据表里的数据,则InnoDB更值得考虑。当你需要创建一个新表时,可以通过添加一个ENGINE或TYPE选项到CREATE TABLE 语句来告诉你MySQL你需要创建什么类型的表

CREATE TABLE t (i INT) ENGINE = INNODB;
CREATE TABLE t (i INT) TYPE = INNODB;

数据表的储存位置

上一篇下一篇

猜你喜欢

热点阅读