【问题标题】:How do I change the tables I use when my site has a lot of traffic?当我的网站流量很大时,如何更改我使用的表格?
【发布时间】:2011-10-24 06:28:24
【问题描述】:

好吧,我已经构建了一组运行表,这些表旨在以更少的连接运行,但我想保留我的规范化数据库。当我的网站流量很大时,有没有办法在它们之间切换?

【问题讨论】:

    标签: mysql server-load


    【解决方案1】:

    如果是为了简化您的查询,您可能希望create a view 反过来可以捆绑一些连接。

    【讨论】:

    • 我想我只是最喜欢你的回答。
    【解决方案2】:

    创建一个全局变量,每次访问页面时递增并重置为 0,每次递增每分钟递增 1,称为“pages_accessed_per_minute”。

    创建一个带有两个参数的函数,一个是上面提到的全局参数,另一个是油门的限制:throttleOn('pages_accessed_per_minute', '1000')

    如果每分钟访问的页面数增加到超过某个点(在本例中为 1000 个),则换入使用其他数据库的备用 php 脚本。

    if throttleOn('pages_accessed_per_minute', '1000') == true){
      include_once('dbAccess1.php');
    }
    else{
      include_once('dbAccess2.php');
    }
    

    不过,我不能 100% 确定我正确使用了 include_once。

    我还发现大多数服务器都有一个日志符号链接到共享主机上的用户主目录。可以使用$tail -f(命令行)实时监控这些日志。这比轮询要好,因为服务器可能会变得很忙,而当这种情况发生时,最好依靠钩子。

    【讨论】:

      【解决方案3】:

      问:有没有办法在它们之间切换? 答:当然 - 只需重定向到不同的 PHP 页面,该页面对不同的表集执行不同的查询。

      ...然而...

      问:您将如何使表格保持同步?

      问:有什么机制可以提醒您“您的网站有大量流量”?

      【讨论】:

      • Q1 回复:我实际上正在寻找 Q3 的答案,以便我能做到这一点。 Q2 回复:我的表不会始终同步。使用 CRON 定期从规范化列迁移数据。 Q3 回复:我现在所有的都是各种趋势的内容状态。正如您所建议的那样,我想要更明确的东西来控制,这是问题的核心。
      【解决方案4】:

      您可以“在生产中”执行此操作,但请记住,这可能很快变得至关重要!

      • 通过添加您需要的其他列来更改您的表格。
      • 填充新列(使用脚本,以便您可以控制每次触摸多少行,以确保不会产生过多负载)
      • 使用新结构更改您的(网站)脚本。最好的方法是同时更新所有脚本。
      • 重新运行“填充脚本”以确保所有行都真正采用新格式
      • 删除不必要的列/表

      【讨论】:

      • 您真的要在生产中使用该表时 alter 吗?
      • 不,我不是说alter。这些表已经设置了适当的列。我在生产中填充所有表。
      猜你喜欢
      • 2020-01-10
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多