【发布时间】:2014-01-04 21:03:31
【问题描述】:
我们有一个 MySQL 数据库 (OLD_DATA),其中许多分区表的大小已经超过 100GB。为了提高服务器性能,我们考虑创建一个并行 DB (NEW_DATA) 并开始在 NEW_DATA 中收集新数据。
数据库是 MyISAM,服务器有 96GB RAM。
在此之后 OLD_DATA 将不会被访问。
这种方法是否有助于提高服务器在 RAM 和 CPU 使用率方面的性能? OLD_DATA 中的数据会加载到内存中吗?
【问题讨论】:
-
数据库通常不会一次将整个数据库加载到内存中。索引(和其他聚类技术)的使用允许良好的算法选择和数据访问:即只读取需要的内容,当它需要。
-
取决于您查询新数据的方式以及您拥有的索引设置。只是将其移至新表并不能保证任何更好的性能。你有很多内存,所以你应该能够为快速查询建立良好的索引
-
感谢您的 cmets。我同意索引和优化查询是必不可少的。但我希望迁移到新数据库并以某种方式隔离旧数据库,这样旧数据库就不会占用内存。
-
@user1434805 为什么会“占用”主内存?数据库只会在认为合适时加载/缓存磁盘页面。这通常应该远小于媒体上数据的大小。
-
@user1434805 无论如何,创建一个新数据库本质上不会使数据访问速度更快。但如果“[OLD_DATA] 将不会被访问”,那么听起来“OLD_DATA”将被转换为历史档案——在这种情况下,建立档案系统/流程可能是有益的。
标签: mysql performance partitioning myisam