【发布时间】:2010-05-20 17:30:49
【问题描述】:
我有一个有趣的数据库问题。我有一个大小为 150GB 的数据库。我的内存缓冲区是 8GB。
我的大部分数据很少被检索,或者主要由后端进程检索。我非常希望保留它们,因为某些功能需要它们。
其中一些(即一些表,以及某些表的一些可识别部分)经常以面向用户的方式使用
如何确保后者始终保存在内存中? (这些空间绰绰有余)
更多信息: 我们在 Ruby on rails 上。数据库是 MYSQL,我们的表是使用 INNODB 存储的。我们将数据分片到 2 个分区。因为我们正在对其进行分片,所以我们使用 JSON Blob 存储大部分数据,同时仅索引主键
更新 2 棘手的是,数据实际上同时用于后端进程以及面向用户的功能。但后者的访问频率要低得多
更新 3 这些天有些人评论说 8Gb 是玩具。我同意,但是如果有更智能、更有效的解决方案,仅仅增加数据库的大小就是纯粹的懒惰
【问题讨论】:
-
这个问题有点含糊。您没有向我们提供有关架构设计的任何详细信息,也没有指定您正在使用的技术(数据库、编程平台等)。我怀疑对这个问题的任何有意义的答案都将针对这些技术你正在使用。
-
谢谢!我已根据您的评论更新了问题
-
如果一切都失败了,我想你总是可以复制数据库,所以后端进程访问一台服务器,用户访问另一台服务器。这应该可以防止他们互相踩踏,尽管这样你就必须在数据更新时保持两台服务器同步......
-
对Update 3不能再认同了。当数据150TB,内存用完时,也不能解决同样的问题。
标签: database performance database-design memory database-administration