MYSQL引擎

转载 2013年12月02日 22:45:17
摘要: MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引 擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用 ...
MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引 擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL++ API自己做一个引擎。下面介绍几种数据库引擎: 

    ISAM:ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到 数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不 支持事务处理,也不能够容错:如果你的硬盘崩溃了,那么数据文件就无法恢复了。如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实 时数据,通过其复制特性,MYSQL能够支持这样的备份应用程序。 

    MyISAM:MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎。除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使 用一种表格锁定的机制,来优化多个并发的读写操作,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMCHK工具和用来恢复浪费空间的 MyISAMPACK工具。MYISAM强调了快速读取操作,这可能就是为什么MySQL受到了WEB开发如此青睐的主要原因:在WEB开发中你所进行的 大量数据操作都是读取操作。所以,大多数虚拟主机提供商和INTERNET平台提供商只允许使用MYISAM格式。MyISAM格式的一个重要缺陷就是不 能在表损坏后恢复数据。 

    HEAP:HEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MYISAM都快,但是它所管理的数据是不稳定的,而且如果在关 机之前没有进行保存,那么所有的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。HEAP表格在你需要使用SELECT表达式来选择 和操控数据的时候非常有用。要记住,在用完表格之后就删除表格。 

    InnoDB:InnoDB数据库引擎都是造就MySQL灵活性的技术的直接产品,这项技术就是MYSQL++ API。在使用MYSQL的时候,你所面对的每一个挑战几乎都源于ISAM和MyISAM数据库引擎不支持事务处理(transaction process)也不支持外来键。尽管要比ISAM和 MyISAM引擎慢很多,但是InnoDB包括了对事务处理和外来键的支持,这两点都是前两个引擎所没有的。如前所述,如果你的设计需要这些特性中的一者 或者两者,那你就要被迫使用后两个引擎中的一个了。 

    MySQL 官方对InnoDB是这样解释的:InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在 行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读,这些特色增加了多用户部署和性能。没有在InnoDB中扩大锁定的需要,因为在 InnoDB中行级锁定适合非常小的空间。InnoDB也支持FOREIGN KEY强制。在SQL查询中,你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。 

    InnoDB是为处理巨大数据量时的最大性能设计,它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。 

    InnoDB存储引擎被完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB存储它的表&索 引在一个表空间中,表空间可以包含数个文件(或原始磁盘分区)。这与MyISAM表不同,比如在MyISAM表中每个表被存在分离的文件中。InnoDB 表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。 

    InnoDB默认地被包含在MySQL二进制分发中。Windows Essentials installer使InnoDB成为Windows上MySQL的默认表。 

    InnoDB被用来在众多需要高性能的大型数据库站点上产生。著名的Internet新闻站点Slashdot.org运行在InnoDB上。 Mytrix, Inc.在InnoDB上存储超过1TB的数据,还有一些其它站点在InnoDB上处理平均每秒800次插入/更新的 



    一般来说,MyISAM适合:(1)做很多count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。InnoDB适合:(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。 

    一般情况下,MySQL会默认提供多种存储引擎,可以通过下面的查看: 

    (1)看你的MySQL现在已提供什么存储引擎: mysql> show engines; 

    (2)看你的MySQL当前默认的存储引擎: mysql> show variables like '%storage_engine%'; 

    (3)你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎): mysql> show create table 表名;  

mysql两种引擎简要比较

在MySQL数据库中,常用的引擎主要就是2个:Innodb和MyIASM。 首先: 1.简单介绍这两种引擎,以及该如何去选择。 2.这两种引擎所使用的数据结构是什么。 1. ...
  • FENGQIYUNRAN
  • FENGQIYUNRAN
  • 2017年03月23日 22:59
  • 1377

MySQL两种引擎的区别

Innodb引擎 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别,关于数据库事务与其隔离级别的内容请见数据库事务与其隔离级别这篇文章。该引擎还提供了行级锁和外键...
  • ls5718
  • ls5718
  • 2016年08月19日 10:15
  • 6422

MySQL中的各种引擎

MySQL中的各种引擎
  • wangshuxuncom
  • wangshuxuncom
  • 2016年03月21日 11:18
  • 31270

Mysql 转换表的引擎

下面接受三种Mysql 数据库将表的存储引擎转换成另外一种引擎。
  • u011462448
  • u011462448
  • 2015年08月24日 13:18
  • 433

mysql 默认引擎innodb 初探(三)

写在前 本篇博客承接上一篇 mysql 默认引擎innodb 初探(二)继续对mysql数据库 innodb存储引擎进行探索 innodb 文件 mysql数据库和innodb存储引擎表的各...
  • lx1607
  • lx1607
  • 2016年06月21日 21:59
  • 6889

MySQL Merge存储引擎

MySQL Merge存储引擎
  • wangshuxuncom
  • wangshuxuncom
  • 2016年03月21日 15:51
  • 3207

查看MySQL引擎支持类型及查看表当前引擎类型

确认 MySQL 服务器 是否启用 InnoDB   存储引擎 mysql> SHOW  ENGINES; 查看表当前引擎类型:  SHOW TABLE STATUS from...
  • 0210
  • 0210
  • 2012年12月06日 19:13
  • 801

MySql 存储引擎的选取

存储引擎是为不同的表类型处理 SQL 操作的 MySql 组件。InnoDB 是默认的、最通用的存储引擎,也是官方推荐使用的存储引擎,除非一些特定案例。MySql 5.6 中的 CREATE TABL...
  • defonds
  • defonds
  • 2015年07月08日 21:37
  • 3528

MySQL创建数据表时设定引擎MyISAM/InnoDB

MySQL创建数据表时设定引擎MyISAM/InnoDB
  • renwudao24
  • renwudao24
  • 2016年08月06日 16:43
  • 12773

[原创]MySQL中MyISAM引擎和Heap引擎执行速度性能测试

MySQL中MyISAM引擎和Heap引擎执行速度性能测试 【测试环境】CPU:    Intel Pentium4 2.66GHz Memory: 1GB Disk:   73GB/SCSI OS:...
  • heiyeshuwu
  • heiyeshuwu
  • 2007年08月13日 16:59
  • 5099
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MYSQL引擎
举报原因:
原因补充:

(最多只允许输入30个字)