mysql - 需要架构帮助 - MySQL 或 NoSQL 用于包含 5400 万条记录的表

标签 mysql database performance database-design 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

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

  1. SSD 缓存存储中的 MySQL,配备 4GB RAM
  2. SSD 中的 MySQL,配备 4GB RAM
  3. 任何 NoSQL 解决方案
  4. 还有什么吗?

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

最佳答案

MySQL 采用 SSD 缓存存储,配备 4GB RAM。使用 mecached 以获得最佳性能。如果将存储引擎更改为 innodb 并且 buffer_pool_size=3GB,您将看到巨大的性能提升。如果可能的话升级到5.6 innodb在5.6中的性能明显比以前好。 Innodb 在 5.6 中还具有原生 memcached 支持。 阅读 here了解更多信息

关于mysql - 需要架构帮助 - MySQL 或 NoSQL 用于包含 5400 万条记录的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20361190/

相关文章:

php - mysqli_query 无法识别数据库?

c# - Linq to SQL 检查数据是否存在并更新/插入,具体取决于

Mysql 内连接查询显示错误结果

c# - C# 对游戏来说足够快吗

php - PHP 中的串联字符串回显无序

php - 为什么使用 json_encode PHP 时 php 的结果与 Mysql 的结果不同?

performance - 如何计算执行时间(加速)

mysql - Perl 模块 : MySQL vs DBI

mysql - 在 MySql 函数中使用 information_schema 时出错

MySQL,无法创建外键