Mysql:表中有数百万条记录,每天有1000万条更新

时间:2014-03-06 05:45:37

标签: mysql sql database

我们有一个案例,我们必须在一天内记录数百万的状态更新,记录的记录高达146000000。我不确定MySQL是否符合它。以下是完整的方案:

  1. 第一天,Table将有100万条记录,最终将在2年内增长到1.5亿条。
  2. 在给定的时间点,最多140万条记录将会有效,即使我们有1.5亿条记录。
  3. 由于我们希望存档超过2年的数据,因此记录不应超过1.5亿。
  4. 实时140万条记录将获取其状态的更新,我们需要在同一个表中更新这些状态。这140万条记录的更新量将达到每天2000万。
  5. 如果表格中有如此多的更新,我可以不对表格进行任何外键约束。
  6. 我们正在使用MySQL 5.5。

    我的担心和问题是 - MySQL是否能够满足我们的开箱即用要求(我觉得我们可能会在上述速度发生更新时看到死锁)?如果它不能,我们应该怎样做才能构建上述所有内容?

    提前致谢,

4 个答案:

答案 0 :(得分:1)

我建议你必须使用任何nosql数据库..就像cassandra一样,与mysql /

相比,性能提高30%到40%

答案 1 :(得分:0)

是否可以将表格分成多个?例如。每小时/每天/每周/每月一张表

如果是,您可以为所需的时间间隔创建一个单独的表,并单独存储更新。

或者您可以尝试通过其他符号将数据分成多个表格,例如由客户。

如果没有更多信息,很难提供建议。

你是不是要从桌子上收集一些统计数据?

答案 2 :(得分:0)

市场上有很多可用于相同用例的nosql数据库。

您可以通过它解决所有问题。

答案 3 :(得分:0)

哦,我的......

我还记得在2002年我们更换Oracle数据库,因为要求是每天插入/更新50M记录并保留记录至少7年,同时需要同时报告/监控;-)(一个NMS应用程序)对于移动网络)

在说NoSQL或NewSQL或者之前的任何事情之前,了解大局是有帮助的。你f.ex.需要实时报道吗?复制?在线备份和关键任务应用程序所需的其他功能?

您的团队在DBMS技术方面的经验如何?除了MySQL之外你还有其他的工作吗?

你提到了死锁吗?你现在看到了吗?我会说,不要伤害任何人的感受,但死锁主要是由于糟糕的设计!从排队,事务封装,事务监视器,乐观并发等开始,有100种方法可以避免或迅速解决死锁。

对我来说,你提供的那些数字并不高,但是你所使用的DBMS设计可能会破坏性能。在不了解ACID,SQL兼容性和其他需求的全部需求的情况下,我不建议跳到XyzzySQL,不完全了解真正的需求和相关问题的位置。

因此,简而言之:您的数字并不令人担忧。我已经看到更大的系统正在实施(使用InnoDB = money)。我已经看到MySQL很容易消化,稳定的24小时负载类似15M插入/更新混合负载一天没有任何操作和技巧。

如果您的需求放松,您可以采取“黑洞”或内存中的方法并写入非永久性表格,这些表格将被复制(随着时间的推移)到MySQL文件中的可靠存储。如果你放松插入/更新的“几秒或几分钟”并不重要,这是一个很好的方法。

如果你有一个稳定的有限峰值的工程,或者像许多现实生活中的应用那样,在一天中的某些时段会产生巨大的峰值负荷,情况就会大不相同。

干杯,// Jari