如何在需要优化数据加载方面时使用DataMapper?

时间:2015-07-17 21:56:16

标签: php database caching optimization

我有一个DataMapper创建一个对象,并且经常从DB加载具有相同数据的对象。我在一个循环中有DataMapper,正在创建的对象基本上一遍又一遍地加载相同的SQL。

如何缓存或重用数据以减轻数据库的负担?

代码

$initData = '...';
$result = '';
foreach($models as $model)
{
    $plot = (new PlotDataMapper())->loadData($model, $initData);
    $plot->compute();
    $result[$i] = $plot->result();
}


class PlotDataMapper
{
     function loadData($model, $initData)
     {
           $plot = Plot($initData);

           //If the loop above executes 100 times, this SQL
           //executes 100 times as well, even if $model is the same every time
           $data = $db->query("SELECT * FROM .. WHERE .. $model");
           $plot->setData($data);
           return $plot;      
     }
}

我的想法

我的想法是我可以使用DataMapper本身作为缓存对象。如果已经使用了特定的$ model号,我将结果存储在PlotDataMapper对象的某个表中,并在需要时检索它。听起来不错吗?有点像从数据库中记忆数据。

0 个答案:

没有答案