2012-03-08 82 views
2

为了加速我的网站上的事情,我使用APC将小表存储为数组,这极大地加快了我的查询速度。特别是一张桌子(我仍然是LEFT JOIN)有近3000行,我想知道将它放入数组中并使用APC进行存储是否有效?或者它太大?PHP APC存储值的最大大小是多少?

我存储的其他表格最多有20行。

+0

我怀疑你可以加速查询“显着”与20行数据的表。只有在你的查询完全错误的情况下。 – 2012-03-08 05:38:05

+0

这是查询:http://stackoverflow.com/questions/9466001/how-to-optimize-slow-query-with-many-joins – ChimeraTheory 2012-03-08 05:52:10

回答

0

有许多ini设置将决定您可以存储的最大值。

此处可以找到APC特定指令的列表。 http://php.net/manual/en/apc.configuration.php

最贴近您的问题是:

apx.max_file_size - 防止不是从缓存得到这个值较大的文件。默认为1M。

“行”在大小方面没有太多的描述数据。缓存数千个“行”并不是不合理的。通过序列化,然后使用strlen()/mb_strlen()可以更好地理解阵列的大小。您可能不希望高于每个文件一个MB,但可以根据需要增加可用于APC的共享内存的总大小/分段,具体取决于可用的RAM。

如果您修复了索引问题,也许您会确定这不是您的缓存的理想选择。查看要缓存的内容时,有几个因素需要考虑......数据多久更改一次?从数据库中提取/缓慢或经常请求是否昂贵?

+1

如果这个查询缓存真的很有用,但它有点太大(并且您不能使用其他缓存系统,例如Memcached或只是一个文件),您可以始终对数据进行gzip/gunzip存储。出于同样的原因,一些memcache库会自动压缩大量数据。 – 2014-08-26 20:57:14