考虑索引MySQL表7列,正在不断进行查询和写。什么是最好的行数,这表应当允许包含以前的业绩将是改善分拆数据的进入其他表?

有帮助吗?

解决方案

通过对数据进行分区,您是否会获得性能提升取决于您将在其上运行的数据和查询。您可以在表中存储数百万行,并且具有良好的索引和精心设计的查询,它仍然可以超快。如果您已经确信索引和查询尽可能好,那么只考虑分区,因为它可能比它的价值更麻烦。

其他提示

有没有神奇的数字,但有几件事情,会影响性能特别是:

  • 指数基数:不要打扰索引的行具有2个或3个值(如ENUM).在一个大型表,查询的优化将忽略这些。
  • 有一个贸易之间写和索引。更多的索引,你有,再写。不要只是指每一个柱。分析你的查询,看看其中列需要编制索引。
  • 盘IO和存储器中发挥重要的作用。如果你可以适合你的整个表格进入存储器,你把盘IO出的公式(一旦表缓存,无论如何)。我猜你会看到一个很大的性能改变的时候你的表太大到缓冲存储器中。
  • 考虑分区服务器的基础上使用。如果你的交易系统是读写单一排,你也许可以买自己一些时间复制的数据读取服务器,用于汇总报告。

正如你可能知道,表性能改变基于数据的大小。留意你的表/查询。你知道,当它改变的时候了。

MySQL 5内置了分区,非常非常不错。什么是好的,你可以定义你的表应该如何拆分。例如,如果您主要基于用户标识进行查询,则可以根据用户标识对表进行分区,或者如果您按日期查询,请按日期进行查询。有趣的是,MySQL将确切地知道要搜索哪个分区表来查找您的值。缺点是,如果您搜索未定义分区的字段,则会扫描每个表,这可能会降低性能。

而事后你可以点表尺寸在哪些性能成为一个问题,我不认为你可以预测,当然也不是从所提供的信息在网站上如此!

一些问题,你不妨问问自己:

  • 是的性能目前可以接受的吗?
  • 是如何的性能测定-是的 有一个度量?
  • 我们怎么认识的 不可接受的性能吗?
  • 我们 衡量绩效的任何方式 可能使我们能够预测一个 问题吗?
  • 是我们所有的查询使用 一个高效率的指数?
  • 我们模拟的极端负载和数量上的系统?

使用MyISAM引擎,除非更改默认值,否则您将对表大小设置2GB硬限制。

如果您认为不需要,请不要应用优化。理想情况下,这应该通过测试来确定(正如其他人所暗示的那样)。

水平或垂直分区可以提高性能,但也会使您的应用程序复杂化。不要这样做,除非你确定你需要它,它肯定会有所帮助。

2G数据MyISAM文件大小只是默认值,可以在创建表时更改(或者稍后由ALTER更改,但需要重建表)。它不适用于其他引擎(例如InnoDB)。

实际上,这是一个很好的性能问题。您是否阅读过 Jay Pipes ?没有特定数量的行,但读取有特定的页面大小,垂直分区可能有充分的理由。

查看他的功夫演示文稿并查看他的帖子。我相信你会发现他已就此发表了一些有用的建议。

您使用的是MyISAM吗?你打算存储超过几千兆字节?注意MAX_ROWS和AVG_ROW_LENGTH。

Jeremy Zawodny有一个关于如何解决这个问题的优秀的报道问题

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