Update cache documentation

This commit is contained in:
Johan Wikman
2017-03-22 10:02:44 +02:00
parent 15a22ec295
commit 441b0204bf

View File

@ -747,16 +747,54 @@ If the rule is instead expressed using a regular expression
{ {
"attribute": "query", "attribute": "query",
"op": "like", "op": "like",
"value": ".*db1.*" "value": "FROM db1\\..*"
} }
] ]
} }
``` ```
then the statement will again not be parsed. then the statement will again not be parsed.
However, even if regular expression matching is performance wise cheaper However, even if regular expression matching performance wise is cheaper
than parsing, it still carries a cost. than parsing, it still carries a cost. In the following is a table with numbers
giving a rough picture of the relative cost of different approaches.
For maximum performance, arrange the situation so that In the table, _regexp match_ means that the cacheable statements
* `selects=assume_cacheable` can be configured, and that were picked out using a rule like
* _no_ rules file is needed. ```
{
"attribute": "query",
"op": "like",
"value": "FROM dbname"
}
```
while _exact match_ means that the cacheable statements were picked out using a
rule like
```
{
"attribute": "database",
"op": "=",
"value": "dbname"
}
```
The exact match rule requires all statements to be parsed.
Note that the qps figures are only indicative.
| `selects` | Rule | qps |
| -------------------| ---------------|-----|
| `assume_cacheable` | none | 100 |
| `assume_cacheable` | _regexp match_ | 98 |
| `assume_cacheable` | _exact match_ | 60 |
| `verify_cacheable` | none | 60 |
| `verify_cacheable` | _regexp match_ | 58 |
| `verify_cacheable` | _exact match_ | 58 |
## Summary
For maximum performance:
* Arrange the situation so that `selects=assume_cacheable` can be
configured, and use _no_ rules.
* If `selects=assume_cacheable` has been configured, use _only_
regexp based rules.
* If `selects=verify_cacheable` has been configured non-regex based
matching can be used.