MySQL引擎有哪些

70次阅读
没有评论

共计 3114 个字符,预计需要花费 8 分钟才能阅读完成。

这篇文章主要介绍了 MySQL 引擎有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

 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 表名;

  所有的性能测试在:Micrisoft window xp sp2,Intel(R) Pentinum(R) M processor 1.6oGHz 1G 内存的电脑上测试。

  测试方法:连续提交 10 个 query,表记录总数:38 万,时间单位 s

  引擎类型     MyISAM     InnoDB   性能相差

  count  0.0008357  3.0163  3609

  查询主键     0.005708    0.1574    27.57

  查询非主键       24.01    80.37    3.348

  更新主键       0.008124  0.8183    100.7

  更新非主键   0.004141  0.02625  6.338

  插入       0.004188    0.3694  88.21

 (1)加了索引以后,对于 MyISAM 查询可以加快:4 206.09733 倍,对 InnoDB 查询加快 510.72921 倍,同时对 MyISAM 更新速度减慢为原来的 1 /2,InnoDB 的更新速度减慢为原来的 1 /30。要看情况决定是否要加索引,比如不查询的 log 表,不要做任何的索引。

 (2)如果你的数据量是百万级别的,并且没有任何的事务处理,那么用 MyISAM 是性能最好的选择。

 (3)InnoDB 表的大小更加的大,用 MyISAM 可省很多的硬盘空间。

  在我们测试的这个 38w 的表中,表占用空间的情况如下:
      引擎类型     MyISAM     InnoDB
        数据   53,924 KB  58,976 KB
        索引    13,640 KB   21,072 KB
        占用总空间     67,564 KB   80,048 KB
 
  另外一个 176W 万记录的表,表占用空间的情况如下:

  引擎类型     MyIsam      InnorDB
  数据    56,166 KB   90,736 KB
  索引   67,103 KB    88,848 KB
  占用总空间   123,269 KB   179,584 KB

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“MySQL 引擎有哪些”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-15发表,共计3114字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)