并发插入mysql - 在第一组插入完成之前调用相同的insert stored proc

时间:2017-08-22 11:30:56

标签: mysql performance database-design scalability database-performance

我正在开发社交网站,其中包括创建媒体内容,还记录用户与创建内容的互动。

问题背景 - 目前使用的方法

有一个名为news-feed的页面,它显示他们在网站上关注的用户对内容所做的内容和活动。

显示内容的顺序随着越来越多的用户交互而变化(例如,如果帖子上有更多的评论,它可能会显示在评论数量较少的评论之上。但是,评论数量只是用于对帖子进行排名的属性之一)。

我使用mysql(innodb)数据库来存储数据如下:

  1. activity_master:允许活动成为新闻Feed的一部分(发布,评论等)
  2. activity_set:用于聚合同一对象上的活动
  3. activity_feed:实际活动的详情
  4. 详细的ER图在问题的末尾

    方案

    1. 一个用户(有1000个关注者)发布了一些东西,它启动了对该过程的异步调用,以便为所有关注者在上述表格中插入相关条目(1000个粉丝,1000个粉丝)。
    2. 在上述调用完成之前,一些关注者开始评论(活动允许成为新闻摘要的一部分),这启动了对同一过程的另一次调用,以便为其特定集合插入此活动的条目(x自己的关注者总数)追随者(例如,用户B评论了这篇文章)
    3. 所有插入请求(似乎太多)必须由innodb引擎在队列中处理
    4. 问题

      1. 有更好更有效的方法吗? (我绝对认为会有一个)
      2. innodb在默认配置中可以处理多少个插入请求?
      3. 在这种情况下如何避免死锁(或数据库端的资源拥塞)
      4. 或者在这种情况下是否还有其他类型的数据库
      5. 感谢您通过阅读说明表达您的兴趣,我们非常感谢您提供这方面的任何帮助,如果有任何进一步的细节需要我知道,请提前感谢!

        ER Diagram of tables (not reputed enough to embed the image directly :( )

1 个答案:

答案 0 :(得分:0)

经验法则:"不要排队,只需这样做"。

插入1000行可能是站不住脚的。明天,它将是10000。

你不能在选择方而不是插入方进行处理吗?