Skip to content

Loading…

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

Open
doctrinebot opened this Issue · 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.