Mysql本地服务器硬件

Mysql本地服务器硬件,mysql,Mysql,在一个现场场景的预期中,我一直在一个有着500MHz处理器和256MB 100MHz RAM的平台上构建我的整个站点 我已经用200000多行垃圾数据加载了我的数据库,试图测试我的查询。我注意到了 这显然是一个巨大的性能打击。我所有的查询都使用索引,但是有些查询包含多达15个join(所有查询都使用索引) MySQL启用了16MB的缓存以供使用,这使得查询时间几乎为零,但后果如何?对于一个动态的网站,当我允许像搜索功能这样的独特查询时,我看不出缓存有多大帮助。我还在PHP中使用eaccelera

在一个现场场景的预期中,我一直在一个有着500MHz处理器和256MB 100MHz RAM的平台上构建我的整个站点

我已经用200000多行垃圾数据加载了我的数据库,试图测试我的查询。我注意到了
这显然是一个巨大的性能打击。我所有的查询都使用索引,但是有些查询包含多达15个join(所有查询都使用索引)

MySQL启用了16MB的缓存以供使用,这使得查询时间几乎为零,但后果如何?对于一个动态的网站,当我允许像搜索功能这样的独特查询时,我看不出缓存有多大帮助。我还在PHP中使用eaccelerator

当我将
COUNT(*)作为总计
使用多个
JOIN
WHERE
条件时,会发生10秒以上的查询。其他只检索一行或两行的查询的执行级别与我只有几行时相同。我还注意到,在查询过程中,mysqld几乎立即达到了99.7%的CPU压力

基本上,我不知道是软件出了故障,还是硬件出了故障。笔记本电脑很古老,但同时它只有一个负载需要担心,没有其他用户对数据库施加压力

谢谢

对需要约8秒时间的问题儿童进行编辑:
关于表设置的信息如果不完全理解表结构、数据和查询,就很难知道,但是您所描述的似乎是您正在运行的查询的合理响应时间。以下是一些想法:

  • 考虑减小查询大小。只要求你当时需要的,而不是你最终可能需要的一切
  • 通常,两个小查询的性能会超过一个大查询
  • 根据数据库的大小,您可以在服务器上投入足够的ram,以将整个数据库保存在ram中,这使得查询速度更快
  • 尝试组织查询,以便筛选列表中第一个表上的数据。看起来您的第一个表返回了17000条记录,这些记录需要由其他表进一步筛选。这可能是必要的,但可能桌子的排列方式会有所不同

您需要发布更多详细信息以确定问题所在。创建表语句并解释慢速查询将是一个良好的开端。谢谢。我在我的表设置中添加了一个
EXPLAIN
:这是一个将定期运行的实际查询吗?有一个15+的表连接似乎很不寻常。我知道你正试图规范化,但是有一个过度规范化的事情。你应该考虑用实际的硬件来测试它。ram和处理器速度加倍可能会使吞吐量增加十倍或更多。您可能正在优化已经足够快的代码。有点像一个真正的查询。有多少连接是真实的?我试图尽可能消除冗余数据,因此我需要执行更多的连接。但是,大多数查询将只检索一行,即使这需要16个联接。问题是计算特定类别的总行数。我想我可以通过在后台创建一个cron作业来克服这个问题,这样我就可以获取总数。