美文网首页Oracle数据库管理之道mysql
数据表的类型及储存位置

数据表的类型及储存位置

作者: 全栈coder | 来源:发表于2017-02-26 21:41 被阅读53次

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;

数据表的储存位置

  • 数据库目录是存储MySQL数据库服务器存放数据文件的地方,不仅包括有关的表的文件,还包括数据文件和MySQL的服务器选项文件。不同的安装包,数据库的目录默认位置是不同的,除了可以在MySQL配置文件中指定,也可以在启动服务器时通过--dayadir = /path/to/dir 明确指定。假设MySQL将数据库目录存放在服务器的C:/Appserv/mysql/data/目录下面,则MySQL管理的每个数据库都有自己的数据库目录,它们是C:/Appserv/mysql/data/目录下面的子目录,是与所表示的数据库目录相同的名称。例如,数据库bookstore在服务器中对应的目录是C:/Appserv/mysql/data/bookstore。
  • MySQL将数据以记录形式存在表中,而表则以文件的形式存放在磁盘中的目录中,这个目录就是一个数据库目录。而MySQL每种表在该目录中有不同的文件格式,但有一个共同点,就是每种表至少有一个存放表结构定义的.frm文件。一个MyISAM数据表则有三个文件,它们分别是:以.frm为后缀的结构定义文件,以.MYD为后缀的数据文件,和以.MYI为后缀的索引文件。而InnoDB由于表空间的概念管理数据表,它只用一个与数据库表对应的并以.frm为后缀名的文件,同一个目录下的其他文件表示为表空间,储存数据表的数据和索引。创建、修改和删除数据表,其实就是对数据库目录下的文件进行操作。
  • 可以直接对数据文件进行操作,以实现某些数据管理的功能,例如,数据表具有的可移植性,意思就是可直接把数据表文件复制到磁盘上,再把磁盘里的文件直接复制到另一台MySQL服务器主机的某个数据库目录里,而那台主机上的MySQL服务器就能直接使用该数据表了。

相关文章

  • 数据表的类型及储存位置

    MySQL支持MyISAM,InnoDB,GEAP , BOB , ARCHIVE , CSV等多种数据表类型,在...

  • 数据表

    数据表类型一、 创建数据表 二、 mysql 数据类型 整数类型(重点重点重点) 整数类型 字节数 无符号范围 有...

  • 前端Day21

    数据类型 1.原始数据类型:在内存中,存放在栈中的简单数据段,即储存在变量访问的位置 undefinded:有定义...

  • JDBC 向数据表中插入Blob类型数据

    向数据表customers中插入Blob类型的字段 查询数据表customers中Blob类型的字段 向MySql...

  • Xcode代码块备份方法

    代码块储存位置:

  • MySQL数据表类型

    MySQL数据表类型 作者:vwFisher时间:2019-11-08 目录 1 概述 2 数据表类型2.1 My...

  • NSString对象的储存位置

    NSString *str1 = @“abc”str1保存在常量区。 NSString *str2 = [NSSt...

  • Swift 给内置类型添加储存属性中的坑

    由于在Swift中通过扩展(Extension)只能添加计算类型,不能添加储存类型,所以在需要添加储存类型的时候,...

  • MySql笔记

    Mac安装并运行MySql MySql数据库、数据表的操作 MySql数据类型及常见约束 MySql表操作 MyS...

  • Java集合

    基本概念: 数组可以储存基本类型和数组,集合类只能储存引用对象,不能储存基本类型 Collection接口和Ite...

网友评论

    本文标题:数据表的类型及储存位置

    本文链接:https://www.haomeiwen.com/subject/bkhawttx.html