对于一个客户,我目前正在研究对其数据库结构的改进。
我的客户在他们的网站上提供假期出租。在他们的首页上,他们有一个搜索功能,该功能将查询发送到 MySQL 数据库架构(Master-Master setup),该架构会针对客户感兴趣的所有度假租赁回答该查询。
由于公司的发展和服务器负载的增加,搜索查询当前运行时间长达 10 多秒。主要是因为查询以 ORDER BY 结尾,这导致 MySQL 创建一个临时表并对所有数据进行排序,一个平均搜索查询可以返回多达 20k 的度假屋。当然,我们正在做的一件事是调查查询,重写它们并将索引放在需要的地方。不幸的是,在这种情况下,我们无法获得更多性能。这就是为什么我们正在研究在 MySQL 之上实现 Memcached 以将这些大型数据集缓存在内存中以便更快地检索。不幸的是,查询返回的数据集非常大,这使得 Memcached 在这一点上没有那么有效。MySQL 返回的数组当前大约有 15k 行,每行大约有 60 个值。Memcached 之所以有趣,是因为我们想大幅改进搜索功能,并降低 MySQL 平台的负载。这将使其更具可扩展性。
我想知道是否有人熟悉(长期)在 Memcached 中缓存 MySQL 数据并使其对大型数据集更有效?
非常感谢!