0

据我所知,大多数 RDBMS 包都是在构建时牢记 99% 的查询将是选择查询。但是,我的情况是,我们至少有 50% 的查询作为创建/更新查询。由于我们还需要持久性,所以我们不能选择 NoSQL 解决方案。本质上,只要有更新,就应该立即永久存储。所以,我想知道 MySQL 的性能是否会因此受到阻碍。我们当前的 MySQL 引擎是 InnoDb。还有其他 MySQL 引擎更可取吗?我计划使用 Amazon RDS,所以我的重点是 MySQL;但出于好奇,我想知道 postgresql 是否可以提供帮助。

注意 - 只是为了了解规模,我们正在讨论在投入生产的几个月内对至少有一百万个条目的表进行创建/更新查询。

4

2 回答 2

1

拥有尽可能少的索引会提高插入和更新的速度,因为在向表中插入/更新行时必须更新所有索引。但是,当然,请记住,某些索引可能还会增加您的更新。

于 2012-07-04T12:46:11.170 回答
1

如果您的工作集适合内存,那么您的插入和更新往往会非常快。正如其他人所提到的,分区在这里可以提供帮助。大多数 NoSQL 解决方案都具有持久性,因此您不应完全排除它们。Cassandra 有一个专门针对写入调整的存储模型,可能值得一看。

如果您使用 MySQL,则有一些调整参数可以用一些持久性来换取插入性能,以及各种其他硬件和软件设置:

https://serverfault.com/questions/118504/how-to-improve-mysql-insert-and-update-performance

在标准磁盘上使用完全耐用性时,您可能会期望大约 100 次插入/秒。如果这不会削减它,设置基准并开始调整参数或准备进行一些重新架构。使用表中的实际数据量进行基准测试很重要。现在发现问题比在 6 个月后表格开始填满时发现问题要好得多。合成数据很好,只要确保索引字段的分布相似。

于 2012-07-04T13:56:59.453 回答