我们有一个案例,我们必须在一天内记录数百万的状态更新,记录的记录高达146000000。我不确定MySQL是否符合它。以下是完整的方案:
我们正在使用MySQL 5.5。
我的担心和问题是 - MySQL是否能够满足我们的开箱即用要求(我觉得我们可能会在上述速度发生更新时看到死锁)?如果它不能,我们应该怎样做才能构建上述所有内容?
提前致谢,
答案 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