0

在我的页面中,我有多个查询来从具有不同场景的同一张表中获取数据。这些多个查询给我带来了性能问题。所以我试图缓存表,然后用不同的场景查询它,这样我就不需要一直访问数据库。

但是,我不知道如何缓存表并从中查询。

任何人都可以帮忙吗?

有没有其他方法可以提高性能?

4

2 回答 2

0

缓存表很简单:select * from myTable,并将数据读入数组。然后,您必须自己使用您选择的语言进行搜索。对于小表和简单查询,这可能会更快。对于大表,您可能会遇到内存问题,复杂的查询将变得更加困难。

有许多潜在的方法可以提高性能。将索引添加到适当的列可以产生很大的不同,执行查询和子查询的确切顺序也是如此。如果不了解您正在使用的架构,或者您正在应用的查询,就不可能多说。

于 2013-08-15T22:43:01.467 回答
0

你有几个选择:

  • 如果您的物理 RAM 远大于数据库的大小,请将innodb_buffer_pool_size变量设置为大于数据库的值。InnoDB 会自动将表缓存在 RAM 中,直到它们发生变化。
  • 如果您的 RAM 比您感兴趣的的大小大得多,但又不想依赖 InnoDB 的缓存,请尝试使用 MEMORY 存储引擎

MEMORY 表只存在于 RAM 中,因此速度很快;它们不会持续存在,但是如果您只想考虑到缓存版本,请尝试以下操作:

CREATE TABLE cachedcopy LIKE table;
ALTER TABLE cachedcopy ENGINE=MEMORY;
INSERT INTO cachedcopy SELECT * FROM table;

如果您的表大于可用 RAM(或者您不能将内存专用于它),您将不得不使用其他技术,例如创建索引或修剪每个查询处理的数据。

于 2013-08-15T22:50:25.937 回答