我一直在使用mysql(使用innodb;在亚马逊rds上),因为它有点普遍默认,但它的表现非常糟糕,调整它只会延迟不可避免的事情。
数据大多相对较短(每个字节<1kB)blob信息约100M的URL。有(或者应该是,mysql似乎无法处理它)非常大量的插入/更新/检索但很少有复杂的查询 - 不是复杂的查询没有用,但是因为mysql太慢而得到的速度要快得多数据输出,在本地处理,并在某处缓存结果。
我可以不断调整mysql并向其投入更多硬件,但似乎越来越无用了。
那么有什么选择呢? SQL /关系模型/等。可选 - 只要速度快,网络化和语言独立,任何事情都可以。
答案 0 :(得分:1)
“快速,网络化和语言无关”+“少数复杂查询”让人联想到各种NoSQL解决方案。仅举几例:
如果那还不够快,那么总是存在邪恶的快速Redis,这是我个人最喜欢的。 :)它本身不是数据库,但对于大多数情况来说它已经足够了。
我相信其他人可以列出更多的NoSQL数据库...... 并且总是 http://nosql-database.org/ 。
一般来说,此类别中的数据库在您的方案中更好,更快,因为它们具有宽松的约束,因此更容易,更快速地插入/更新/检索。但这需要您更加思考您的数据模型,并且通常不可能直接执行SQL样式的复杂查询 - 您将编写更多预先计算的数据或使用更加非规范化的设计来解释复杂性的缺乏查询。
但是,由于复杂查询在您的情况下是一个小问题,我认为NoSQL解决方案对您来说是理想的。
答案 1 :(得分:1)
您是否对应用程序和MySQL数据库进行了任何类型的端到端分析?为了提供更好的建议,了解您尝试实施的改进以及数据库结构也是很好的。您还没有提供有关如何配置MySQL数据库的大量信息。它为调整提供了很多选择。
如果您尚未了解有关该产品的更多信息,则应该获取High Performance MySQL的副本。
在你知道问题所在之前,做任何事都没有意义。 NoSQL解决方案可以提供性能优势,但是您几乎没有证据表明MySQL无法满足您的需求。
答案 2 :(得分:1)
根据您提供的有关应用程序数据和工作负载的数据,几乎无法确定问题是否真的是MySQL本身或其他问题。您似乎假设您可以将任何工作负载抛给关系引擎,它应该处理它。因此,我认为其他评论者提出的关于更好地分析表现的建议是有效的。没有更多数据(交易/第二等),任何关于其他合适发动机的进一步分析也是徒劳的。
答案 3 :(得分:1)
我不确定我同意跳过传统数据库的建议。它可能不是最有效的工具,但它是更广泛理解和使用的FAR,并且强烈怀疑您有一个无法通过有效设置的关系数据库处理的问题。 明显的答案是Oracle,SQLServer等,但它可能只是你的数据库结构不对。我对MySQL知之甚少,但我知道它在一些非常大的项目中使用(eBay值得注意)。