这是真的这些发动机是更优于少的时候,我们正在建立集群的存储?为什么如果是这样的吗?

StackOverflow https://stackoverflow.com/questions/1647023

我听说这个在今天的面试对java开发。我已经列出的一些优点些过少和为什么它仍然被广泛应用。他们都等着听从我的答案,因为标题中的这个问题。

我的理解,从他们自己的答案:些没有外键和数据库可以容易地集群(一个表中的每台服务器为例)。但是为什么我们不能简单地创建少表没有外国的钥匙?这种解释的声音很奇怪我...

有帮助吗?

解决方案

这里没有灵丹妙药的答案。在决定将哪一种用于特定应用之前,您需要了解每种方案的优缺点。

索引数据库:

  • 支持FK的
  • 支持交易
  • 使用大内存缓冲区进行操作
  • 支持行级锁定
  • 但维护成本要高得多——你确实需要调整内存使用、配置表文件等。

MyISAM:

  • 有许多 InnoDB 没有的特殊列功能,例如:
    • 全文索引
    • 空间列(我很确定这不适用于 InnoDB)
  • 对于主要读取/追加用例非常快(表锁用于更新、删除,但不适用于插入)
  • 通常还具有更快的插入速度
  • 将索引缓存在内存中(键缓冲区),但依赖操作系统来缓冲实际数据页

例如,我会将 InnoDB 用于电子商务、用户数据库或任何我想在其中使用事务的内容。

对于数据仓库、日志记录、报告等,我可能会使用 MyISAM。

其他提示

我不得不列出 MyISAM 相对于 InnoDB 的一些优点

  1. 全文搜索

  2. ...

  3. 不,就是这样。

(好吧,有 一些 在某些情况下,MyISAM 比 InnoDB 更快,但很少足以值得忍受缺乏 ACID 合规性。如今,使用 MyISAM 进行任何操作的主要原因是获得全文搜索,遗憾的是 InnoDB 不支持全文搜索。)

我不知道这不再是真实的MyISAM要比InnoDB的用于读取速度更快。

另外,MyISAM表存储在单独的文件和(从我记得),你可以将这些文件实际传输到另一个MySQL数据库,并且更易于备份。

默认情况下的InnoDB数据库被存储在一个巨大的水珠在文件系统上。

至于为什么它仍然被广泛使用,我总是想,这是因为它是默认选项。就个人而言,我仍然认为,InnoDB的优势胜利的MyISAM和MyISAM还拥有从我的经验数据完整性问题。

您当然可以创建一个没有外键InnoDB表,但毕竟是切割出的它的主要优点之一:参照完整性。 然而,由于MyISAM的不具有参照完整性表键的意图建立可以存储不同,也许更有效。

也有在锁定和访问一些差异。 InnoDB支持行级锁,而MyISAM数据只支持表级锁。根据您所执行的查询(选择与插入/更新),这可能会对性能产生显着影响。

你的包括需要读了 Mysql效能的博客.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top