哪一个保存一些"STATIC"数据的速度更快?数组还是缓存数据库表?



在Symfony 3.2中:

我有一些这样的数据(作为数组(:

$list1 = [
    'field-1' => ['id' => 1, 'group' => 'words', 'title' => 'Field 1'],
    'field-2' => ['id' => 2, 'group' => 'words', 'title' => 'Field 2'],
     ...
     ...
     ...
    'field-400' => ['id' => 400, 'group' => 'words', 'title' => 'Field 400'],
];
$list2 = [...];
...
$list30 = [...];

如您所见,它大约有 30 个 300-400 行的数组;但它们是一个静态数组。(以后不会改变(

这些方法中哪一种更好?

1-指示10个服务并通过以下方法获取每一行:

public function getSome($col) {
     return $this->list1[$col];
}

2 个或插入 10 个表(实体(和缓存主题(因为速度快(?

感谢%

这个问题没有明确的答案。它取决于确切的数据集、访问模式(查询相同值的次数(、缓存类型(文件或内存(,甚至可能取决于硬件资源。

我能从经验和常识中建议的是:

  • 使用 ORM 通常较慢,即使缓存也是如此
  • 使用外部内存缓存服务(例如memcached(通常比在PHP内存(例如数组(中具有值慢
  • 一个更有趣的优化可能是重新映射你的结构,这样你就有一个平面数组,其中每个键都包含整个路径(例如$value["list1-field-1-id"](

创建一个播种机并将此数据存储到数据库中。稍后,将此数据作为对象检索并根据您的要求使用。是的,您可以存储到缓存中以加快速度。

最新更新