mysql表types是否重要?

我是新来的MySQL。 在创build项目时,我没有注意表types和sortingtypes。 现在,我已经有20个表,15个表是MyISAMtypes,其余的都是innoDBtypes。 我注意到我的应用程序变得非常慢。 是因为表types吗?

更多信息:

15个表的sorting规则是utf_unicode_ci,另外5个是latin1_swedish_ci。 (我不知道为什么它不同)是否影响性能

我的应用程序在Flash> php> MySQL。

login,加载高分和节省高分现在非常非常非常慢!

MyISAM和InnoDB之间的基本区别在于,后者可以使用事务来对数据库进行primefaces更改。 对于更简单的表,MyISAM通常更快,但它不应该是您的设置的问题。 你是否在表格上创build了​​正确的索引来更新更新?

如果直接进入MYSQL数据库并运行查询,速度会慢吗? (无论是从命令行mysql工具或使用像SQLYog的GUI)如果你只是使用PHP-> MySQL的速度慢吗?

当数据库正常并且性能瓶颈在别处时,我们可能试图解决MySQL问题; 从你的描述来看,查询是非常基本的,即使没有优化也应该是快速的。

每个数据库types都有明确的优点和缺点。 对于InnoDB来说,吹牛的权利是它支持行锁,而不是MyIsam的整个表锁。 这对你意味着什么? 如果你有一个经常读取的表,而且经常改变,而且SQL语句使用'lock'命令,那么InnoDB会稍快一点。 因为它只需locking正在操作的行而不是整个表。

除此之外,两者之间确实没有太多的区别。 这归结为伟大的D / B规划,确保您的表是索引,并确保它们进行了优化。

[编辑2009-11-11]

再想一想问题,我想知道问题是否真的在代码中。 数据库很less是问题的根源。 从gui / cli运行一些testing查询,查看程序的平均查询需要多长时间。 如果这个数字大于0.5秒,那么还有一些优化的余地。 如果不到半秒钟,那么你的数据库是完全正常的。

一旦你优化检查再次查询时间。 他们现在可能会更小。 我敢打赌,错误是在代码中。

无论如何,无论如何,不​​要小规模的数据库。 我会推荐MyISAM,因为它更简单,pipe理和占用less一点的内存。 它没有InnoDB那么多的高级特性,但是你在做什么并不重要。

我怀疑你有两个问题不依赖于表types:主要是索引,另一个是内存。

1)如果您在表格中有唯一的“ID”列,请确保将其编入索引并将其设置为“唯一”。 另外,您应该尝试在“WHERE”子句中使用的任何列上都有索引。 例如,如果您search用户名(例如, SELECT * FROM userdetails WHERE username='harry'; ),那么您应该在“用户名”列上放置一个二级索引。

2)内存 – 你在共享主机或VPS上运行? 你有可能用完了RAM? 尝试去至less256MB的RAM。

表types在决定数据库的执行方式方面有很大的不同,特别是在有大量行的重负载情况下。

例如,MyISAM通常比InnoDB更快,但是,MyISAM在执行更新或删除操作时必须locking整个表,或者不插入到文件中的插入操作,直到操作完成才阻止所有其他操作(包括select)。 InnoDB不会执行表级locking,所以它可以更有效地处理这种情况。

InnoDB和MyISAM也以不同的方式实现索引,所以对于其中一种types,使表更高效的索引可以使其他表types实际运行得更慢。

这里列出的差异太多了,其中大部分都需要一段时间才能解释,但是我build议您从高性能MySQL的相关章节中获取更多信息。