使数据库可扩展

时间:2012-10-23 19:01:35

标签: php mysql caching scalability

我一直在开发一个网站已有一段时间了,到目前为止,一切都快速而且好,尽管这是一个活跃的用户。我不知道有多少人会在第一周,一周,一个月或一年中使用我的网站。

我一直在研究扩展意味着什么以及如何实现它,缓存似乎是它的重要组成部分。所以我开始寻找缓存内容的方法。目前我刚刚在XAMPP开发了这个网站。我使用MySQL作为数据库,使用MySQLi编写简单的PHP来编辑数据。我还简单地使用OS X Mountain Lion中的内置系统消息应用程序进行日志记录。所以我正在考虑使用Memcache进行缓存。

这是一个好方法吗?

我如何测试它才能真正看出差异?

我怎么知道即使有更多用户它也能很好用?

那里有没有好的基准测试应用程序?

2 个答案:

答案 0 :(得分:3)

有很多方法可以确保数据库可以很好地扩展,但我认为最重要的部分是为表定义适当的索引。 至少外键字段应该定义索引。

例如,如果您有一个大型论坛,您可能会有一个主题表,如下所示:

topic_id | name
---------+--------------------------------
       1 | "My first topic!"
       2 | "Important topic"
       3 | "I really like to make topics!"
     ... | ...
 7234723 | "We have a lot of topics!"

然后是另一个包含主题中实际帖子的表格:

post_id  | user       | topic_id
---------+------------+---------
       1 | "Spammer"  | 1
       2 | "Erfa"     | 2
       3 | "Erfa"     | 1
       4 | "Spammer"  | 1
     ... | ...        | ...
87342352 | "Erfa"     | 457454

在应用程序中加载主题时,您希望加载与主题ID匹配的所有帖子。在这种情况下,您无法查看所有数据库行,因为它们太多了!幸运的是,您不必做太多工作来确保完成此操作,您只需要为字段topic_id创建一个索引就可以了。

这是使数据库扩展得很好的一个非常基本的事情,但由于它非常重要,我真的认为有人应该提到它!

答案 1 :(得分:2)

获取并使用jMeter

使用jMeter,除了确认当前没有任何错误之外,您还可以测试回复的快速响应以及页面的加载方式。这样你就可以模拟大量的负载;在进行调整时看到实际的性能更新,例如使用memcache。