需要架构帮助 - MySQL 或 NoSQL 用于具有 5400 万条记录的表

Has*_*der 5 mysql performance architecture

我们有一个包含 5400 万条记录的表。这是表结构。

CREATE TABLE `metaplay` (
  `track_id` int(11) NOT NULL DEFAULT '0',
  `user_id` int(11) DEFAULT NULL,
  `completed` int(11) DEFAULT NULL,
  `skipped` int(11) DEFAULT NULL,
  `created` int(11) DEFAULT NULL,
  `updated` int(11) DEFAULT NULL,
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`),
  KEY `created` (`created`),
  KEY `updated` (`updated`),
  KEY `skipped` (`skipped`),
  KEY `track_id` (`track_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)

所有这些数据都是数字。此时,我们每分钟有大约 300 次插入和大约 100 次更新。我们还从该表中提取了每日、每周和每月的曲目播放记录。现在我的问题是以下哪一项更适合建筑设计和最佳性能。如果您也能突出显示硬件细节,我将不胜感激。

  1. MySQL 在 SSD 缓存存储中,具有 4GB 内存
  2. SSD 中的 MySQL 和 4GB Ram
  3. 任何 NoSQL 解决方案
  4. 还要别的吗?

您还为这样的表建议任何特定于 mysql 的调整技巧吗?

Tom*_*Tom 9

啊,有什么问题吗?

一个有 5400 万条记录的表

一张小桌子。好的。我这里有一个有 85 亿行。

我们每分钟有 300 次插入和 100 次更新

是的。小的。我知道。我这里有一个每天大约有 5 亿次插入。即每分钟 347222.2222222222。

所有这些都在库存硬件上运行。严重地。虽然没有你建议的那么低端。

但是您的指标完全关闭。5400 万在 25 年前已经很大了。今天它很小,除非有人试图在微型虚拟机上运行数据库服务器。

例如具有 5GB 内存的非服务器 - 哎哟。

通常 - 如果您需要分析并且这不是文档样式数据 - 坚持使用 MySql,避免使用 NoSql 数据库并学习关系理论,以便您知道在那里做什么。

SSD 很棒,但我不确定 5GB 内存是否合适——拜托,这比一个像样的工作站还少。

对于每日/每周/每月的聚合,我会进行 DAILY 聚合,然后将它们用作更大聚合的基础。一个月最多。31 天 - 所以大部分工作每天都完成一次(在休息时间)。不过,我强烈会重新考虑使用 eBay 级别的廉价二手硬件——这就是规格的样子。

  • 如果您不介意,我有几个问题(构建了大型 MySQL 服务器,但不是这种规模):您是在 MySQL 服务器上执行此操作吗?单台服务器还是集群?你能分享一下你的硬件规格吗? (2认同)