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 次更新。我们还从该表中提取了每日、每周和每月的曲目播放记录。现在我的问题是以下哪一项更适合建筑设计和最佳性能。如果您也能突出显示硬件细节,我将不胜感激。
您还为这样的表建议任何特定于 mysql 的调整技巧吗?
啊,有什么问题吗?
一个有 5400 万条记录的表
一张小桌子。好的。我这里有一个有 85 亿行。
我们每分钟有 300 次插入和 100 次更新
是的。小的。我知道。我这里有一个每天大约有 5 亿次插入。即每分钟 347222.2222222222。
所有这些都在库存硬件上运行。严重地。虽然没有你建议的那么低端。
但是您的指标完全关闭。5400 万在 25 年前已经很大了。今天它很小,除非有人试图在微型虚拟机上运行数据库服务器。
例如具有 5GB 内存的非服务器 - 哎哟。
通常 - 如果您需要分析并且这不是文档样式数据 - 坚持使用 MySql,避免使用 NoSql 数据库并学习关系理论,以便您知道在那里做什么。
SSD 很棒,但我不确定 5GB 内存是否合适——拜托,这比一个像样的工作站还少。
对于每日/每周/每月的聚合,我会进行 DAILY 聚合,然后将它们用作更大聚合的基础。一个月最多。31 天 - 所以大部分工作每天都完成一次(在休息时间)。不过,我强烈会重新考虑使用 eBay 级别的廉价二手硬件——这就是规格的样子。