DDC-2043: Extra cache operation in DBAL\Cache\ResultCacheStatement.php #2722

Open
doctrinebot opened this Issue Sep 26, 2012 · 2 comments

2 participants

@doctrinebot

Jira issue originally created by user bogdan.albei:

This is the closeCursor() method in DBAL\Cache\ResultCacheStatement.php:

public function closeCursor()
    {
        $this->statement->closeCursor();
        if ($this->emptied && $this->data !== null) {
            $data = $this->resultCache->fetch($this->cacheKey);
            if ( ! $data) {
                $data = array();
            }
            $data[$this->realKey] = $this->data;

            $this->resultCache->save($this->cacheKey, $data, $this->lifetime);
            unset($this->data);
        }
    }

We are using Memcache and I noticed an extra GET operation on all cache misses. In the code above I believe the fetch call is not necessary and that the code would do the same without it.
Also, may I ask why is the SQL used as a key in the cached data?

@doctrinebot

Comment created by stof:

The SQL is used as a key because it is what identifies the query which is done (well, the statement and the parameters)

@doctrinebot

Comment created by bogdan.albei:

The cacheKey already identifies the query(or at least it should). Would we have cases where different queries would want to use the same cache key?

@beberlei beberlei was assigned by doctrinebot Dec 6, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment