`
skudy
  • 浏览: 19656 次
  • 性别: Icon_minigender_1
  • 来自: 江西
社区版块
存档分类
最新评论

MySQL表类型

 
阅读更多
MySQL表类型:MyISAM、ISAM、HEAP、BerkeleyDB、InnoDB,MERGE表类型

MyISAM表类型:
MyISAM表(TYPE=MYISAM)是ISAM类型的一种延伸,具有很多优化和增强的特性。
是MySQL的默认表类型。
MyISAM优化了压缩比例和速度,并且可以很方便的在不同的操作系统和平台之间进行移植。
MyISAM支持大表文件(大于4G)
允许对BLOB和TEXT列进行索引
支持使用键前缀和使用完整的键搜索记录
表数据和表索引文件可以依存在不同的位置,甚至是不同的文件系统中。
即使是具有相当多的插入、更新和删除操作的表,智能防碎片逻辑也能保证其高性能的协作性。

ISAM表类型:
ISAM表(TYPE=ISAM)和MyISAM表相似,但是其没有MyISAM格式的很多增强性能,因而不能像MyISAM类型那样提供很好的优化和执行效率。因为ISAM索引不能被压缩,它比在MyISAM中的相同索引战胜较少的系统资源。ISAM索引需要较多的磁盘空间,这对于像本站的这种小型环境很是问题。呵呵。
和MyISAM一样,ISAM表可以是固定长度的,也可以是可变长度的,但是其格式的最大键长度比较小,ISAM格式处理的表不能大于4G,而且表不能在不同的平台间移植。另外,ISAM表容易分裂,这会降低查询速度,对数据/索引的压缩产生限制。

HELP表类型:
HEAP表(TYPE=HEAP)是内存中的表,它使用能够比较快速的散列索引(当运行INSERT查询时,独立评价指出HEAP表最少比MyISAM表快30%),因此,对于临时表可以优化。经和MyISAM或ISAM表的访问规则和使用方式一样。存储在里面的数据只在MySQL服务器的生命期内存在,如果MySQL服务器崩溃或者被关掉,都会使其中的数据消失不见。虽然HEAP表具有性能方面的好处,但是由于它的临时性和一些其他功能限制,在实际中不可能经常使用。
HEAP表的大小只受到系统上可用内存的限制,MySQL是很聪明的,其具有内建保护来阻止无意识地使用所有可用内存。所以我们不用担心内存会被HEAP表用尽。HEAP表不支持BLOB或TEXT列,不能超过max_heap_table_size变量指定的大小。

BerkeleyDB表类型:
BerkeleyDB表(TYPE=BDB)是为了满足MySQL开发者对事务安全表日益增长的需求而发展起来的。BerkeleyDB表具有很多有趣的鹅,包括提交和回滚操作、多用户并发访问、检查点、次要索引、通过日志恢复崩溃、连续地和键控地访问数据等,这便利复杂的、基于事务的SQL有了可行的选择。
不过BerkeleyDB表也有一些限制,让我们简单的了解一下:
它的移动比较困难(在创建时,表路径硬编码在表文件中)
不能压缩表索引,而且其表通常比MyISAM相应的表要大
有点鸡肋的感觉,因为现在InnoDB格式很大程度上可以取代BerkeleyDB格式

InnoDB表类型:
InnoDB表(TYPE=INNODB),是一个完全兼容ACID(事务的原子性、一致性、独立性及持久性)的、高效率的表完全支持MySQL的事务处理并且不会btwagkyaakftntce。精细的(行级和表级)锁提高了MySQL事务处理的带走度,同时其也支持无锁定读操作(以前只在Oracle中包含)和多版本的特性。
异步输入/输出和一系列的读缓冲将提高数据检索速度,同时可以进行文件的优化和内存的管理。需要的基础上支持自动在内存上创建散列索引来提高性能,使用缓冲来提高可靠性和数据库操作的速度。InnoDB表的恨不能可以和MyISAM相媲美,甚至已经超过了MyISAM。
在不同的操作系统和体系结构上是完全可移植的。由于一直处于一致的状态(MySQL通过在启动时检查错误并修复错误来使它们更加健壮)。对外键、提交、回滚和前滚的操作的支持,使其成为MySQL中最完善的表格式。

MERGE表类型:
MERGE表(TYPE=MERGE)是通过把多个MyISAM表组合到一个单独的表来创建的一种虚拟表。
只有涉及到的表具有完全相同的表结构时才能对表进行组合。字段类型或者索引的任何不同都不能进行成功的结合。
MERGE表使用组成表的索引,并且不能维持它本身的索引,在某种情况下可以提高速度。
允许SELECT,DELETE,UPDATE操作
在需要把不同表的数据放到一起提高连接的性能或者在一系列表中进行搜索时,这种表很实用。
处理大的MyISAM表时,我们可以通过压纹或者使用MySQL发布中包含的myisampack实用工具进行“打包”来减少这些表战胜的空间。myisampack创建比较小的只读表,而不会在使用智能压缩时导致任何大的性能开销。

mysql表类型MyISAM和InnoDB区别
MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量的SELECT,MyISAM是更好的选择。
InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,
对于支持事物的InnoDB类型的标,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打开也可以),将大大提高性能。
分享到:
评论

相关推荐

    MYSQL表的类型.rar

    本压缩包文件“MYSQL表的类型.rar”包含了一个名为“MYSQL表的类型.pdf”的文档,很可能是详细介绍了MySQL中的不同表类型。下面我们将深入探讨这些类型。 首先,MySQL支持四种主要的表类型,每种都有其特定的特性和...

    Java数据类型和MySql数据类型对应表

    Java 数据类型和 MySql 数据类型对应表 在 Java 编程中,了解 Java 数据类型和 MySql 数据类型的对应关系非常重要。这是因为在 Java 应用程序中,我们经常需要与数据库进行交互,而 MySql 是一种常用的关系数据库...

    MYSQL优化-一篇很好的优化文章

    18. MYSQL行类型(专指IASM/MYIASM表) 19. MYSQL缓存 20. MYSQL表高速缓存工作原理 21. MYSQL扩展/优化-提供更快的速度 22. MYSQL何时使用索引 23. MYSQL何时不使用索引 24. 学会使用EXPLAIN 25. 学会使用...

    Mysql数据库优化详细大全

    18. MYSQL行类型(专指IASM/MYIASM表) 8 19. MYSQL缓存 8 20. MYSQL表高速缓存工作原理 9 21. MYSQL扩展/优化-提供更快的速度 9 22. MYSQL何时使用索引 10 23. MYSQL何时不使用索引 10 24. 学会使用EXPLAIN 10 25. ...

    mysql innodb类型数据库表 根据ibd文件获取表 space id

    mysql innodb类型数据库表 根据ibd文件获取表 space id,用于恢复innodb类型数据表数据

    Java数据类型和MySql数据类型对应一览

    Java 数据类型和 MySql 数据类型对应一览 在 Java 编程语言中,数据类型是指变量或函数可以持有的值的类型。 MySql 数据库也具有其自己的数据类型,用于存储和管理数据。在本文中,我们将对 Java 数据类型和 MySql ...

    mysql时间类型对应的java类型1

    本文将深入探讨MySQL数据库中的时间类型以及它们在Java编程语言中相对应的数据类型,以及如何在两者之间进行转换。 MySQL数据库提供了多种时间类型来处理日期和时间数据: 1. **DATE**:这个类型仅存储日期,格式...

    mysql表结构导出成world文档

    在配置好连接后,工具会解析MySQL的表结构信息,包括字段名、数据类型、主键、外键等,并将这些信息格式化为Word文档。这样,用户不仅可以查看表结构,还可以方便地编辑和分享,尤其适合编写数据库设计报告或进行...

    MySQL面试题含答案

    1.MySQL 数据库作发布系统的存储,一天五万条以上的增量, 预计运维三年,怎么优化? 2.SQL注入漏洞产生的原因?... MYSQL 表类型是使用 InnoDB Tables 或 BDB tables 的话,你的 MYSQL 就 可 以 使 用 事 务 处 理。

    mysql中插入多text类型问题

    Mysql 中插入多 text 类型问题解决方案 ...通过修改 MySQL 的配置文件和表的行格式,我们可以解决 MySQL 中插入多个 text 类型字段的问题。同时,我们也可以根据实际情况选择合适的行格式来存储数据。

    mysql实现char类型主键自增长

    本文将深入探讨如何在MySQL中利用触发器实现CHAR类型主键的自增长功能,这将为我们提供一种灵活且独特的主键生成策略。 ### MySQL中CHAR类型主键自增长的原理 在传统的数据库设计中,我们通常使用整型数据类型作为...

    MySQL索引类型大汇总

    MySQL 索引类型大汇总 MySQL 索引类型是数据库性能优化的关键所在。索引可以大幅度提高查询速度,提高数据库的高效运行。在 MySQL 中,索引可以分为单列索引和组合索引两种。 1. 普通索引 普通索引是最基本的索引...

    Oracle的表结构转成Mysql的表结构

    ### Oracle的表结构转成MySQL的表结构 #### 功能概述 本文介绍了一种将Oracle数据库中的表结构转换为MySQL数据库表结构的方法。通过编写一个PL/SQL函数`fnc_table_to_mysql`来实现这一目标。该函数可以接受四个参数...

    0.2 MySQL表操作及数据类型

    MySQL表操作及数据类型 MySQL是当前最流行的关系型数据库管理系统之一,广泛应用于各种行业和领域。在数据库设计中,了解MySQL表操作及数据类型是非常重要的。本节将详细介绍MySQL表操作及数据类型。 表操作 在...

    Mysql面试题60个带答案

    BDB、HEAP、ISAM、MERGE、MyISAM、InnoDB以及Gemeni这7种Mysql表类型 #### 3.简述在MySQL数据库中MyISAM和InnoDB的区别 MyISAM: ```` 不支持事务,但是每次查询都是原子的; 支持表级锁,即每次操作是对整个表...

    银行BIN码表(mysql表)

    内含中国所有银行的BIN码,区分信用卡与借记卡和贷记卡,包含卡片名等信息

    MySQL数据类型全掌握

    ### MySQL数据类型全掌握 #### 一、概述 在数据库设计和开发过程中,正确选择数据类型对于确保数据的准确性和优化存储空间至关重要。MySQL作为一款广泛使用的开源关系型数据库管理系统,提供了丰富的数据类型来...

    Mysql的表对象Sql语句转换单表,转换成Oracle创建表sql

    1. **数据迁移需求分析**:在开始转换之前,了解源MySQL表的结构和数据类型至关重要。这包括表的名称、列名、数据类型、主键、外键、索引、约束等。 2. **SQL语法差异**:MySQL与Oracle之间的主要语法差异包括: -...

    java、mysql以及oracle数据类型对照表

    标题"java、mysql以及oracle数据类型对照表"揭示了本主题的核心,即比较Java、MySQL和Oracle数据库的数据类型。Java的数据类型主要分为基本类型(如int、double、boolean)和引用类型(如类、接口和数组)。MySQL和...

    mysql数据类型

    MySQL 数据类型详解 MySQL 数据类型是指在 MySQL 中存储数据的格式,包括整型、浮点型、定点型、字符串、日期时间型、枚举型等多种类型。下面将对 MySQL 数据类型进行详细的介绍。 整型 MySQL 中的整型包括 ...

Global site tag (gtag.js) - Google Analytics