gpt4 book ai didi

mysql - 使用 MySQL 与 NoSQL 的单个服务器上的 Key-Value 数据库是否存在高性能差异

转载 作者:IT老高 更新时间:2023-10-28 13:29:17 24 4
gpt4 key购买 nike

在我的 PHP 应用程序中,我在一台服务器上的 MySQL MyISAM 分区表中有一个 470M 行的表,重 200GB。使用情况包括 70% 写入/30% 读取。我正在努力提高性能。当前的主要问题是由于表级锁引起的读/写争用。我正在尝试在两个选项之间做出决定:

  1. 将 MySQL 更改为 Innodb。优点:避免表级锁。缺点:更多的磁盘空间,需要更大的硬盘,可能没有这些硬盘那么快(目前使用 RAID10 6*300GB SAS 15k)。
  2. 将数据移动到 NoSQL 数据库。主要缺点:学习曲线。以前从未使用过 NoSQL。

问题是,在尝试仍然避免对数据进行分片的同时,考虑到我使用 RDMS MySQL 作为简单的键值存储这一事实,这两种方法之间的性能是否存在很大差异,或者是 NoSQL 的主要优势迁移到分布式系统时会出现这种情况?

最佳答案

我只能部分回答您的问题,但希望不仅仅是评论。

MongoDB 通常不是键值存储,并且已知在单独使用时会产生一定的性能损失。

MongoDb 在这里也有一个锁定问题,可能会再次困扰您。它有一个 DB 级锁 atm,这意味着它可能(需要测试)导致写锁饱和。

它还专为 80% 读取率的应用程序(据说这是当今网站最常见的设置)而设计,因此您执行的写入次数越多,您就越会注意到性能随时间的推移而下降。话虽如此,您可以将 MongoDB 调整为对写入更友好,而分布式特性确实有助于稍微阻止写入锁饱和。

不过,我个人认为 MongoDB 从 SQL 的学习曲线:

  • null
  • 旁边
  • 在我的应用中实现比 SQL 更自然、更简单
  • 查询语言很简单,很容易掌握
  • 查询语言与 SQL 有很多相似之处
  • 驱动程序是标准化的,因此您在文档中看到的控制台中 JS 驱动程序的语法是一致的。

我个人对一般问题的看法是分布式概念。如果你得到一个专为键值存储设计的 NoSQL 解决方案,那么它可能会非常好。在 Google 上快速搜索,在 Wikipedia 上找到了一小部分 NoSQL 键值存储:http://en.wikipedia.org/wiki/NoSQL#Key-value_stores_on_solid_state_or_rotating_disk

关于mysql - 使用 MySQL 与 NoSQL 的单个服务器上的 Key-Value 数据库是否存在高性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12580566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com