在我的页面中,我有多个查询来从具有不同场景的同一张表中获取数据。这些多个查询给我带来了性能问题。所以我试图缓存表,然后用不同的场景查询它,这样我就不需要一直访问数据库。
但是,我不知道如何缓存表并从中查询。
任何人都可以帮忙吗?
有没有其他方法可以提高性能?
在我的页面中,我有多个查询来从具有不同场景的同一张表中获取数据。这些多个查询给我带来了性能问题。所以我试图缓存表,然后用不同的场景查询它,这样我就不需要一直访问数据库。
但是,我不知道如何缓存表并从中查询。
任何人都可以帮忙吗?
有没有其他方法可以提高性能?
缓存表很简单:select * from myTable
,并将数据读入数组。然后,您必须自己使用您选择的语言进行搜索。对于小表和简单查询,这可能会更快。对于大表,您可能会遇到内存问题,复杂的查询将变得更加困难。
有许多潜在的方法可以提高性能。将索引添加到适当的列可以产生很大的不同,执行查询和子查询的确切顺序也是如此。如果不了解您正在使用的架构,或者您正在应用的查询,就不可能多说。
你有几个选择:
innodb_buffer_pool_size
变量设置为大于数据库的值。InnoDB 会自动将表缓存在 RAM 中,直到它们发生变化。MEMORY 表只存在于 RAM 中,因此速度很快;它们不会持续存在,但是如果您只想考虑到缓存版本,请尝试以下操作:
CREATE TABLE cachedcopy LIKE table;
ALTER TABLE cachedcopy ENGINE=MEMORY;
INSERT INTO cachedcopy SELECT * FROM table;
如果您的表大于可用 RAM(或者您不能将内存专用于它),您将不得不使用其他技术,例如创建索引或修剪每个查询处理的数据。