Update cache documentation
This commit is contained in:
@ -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.
|
||||||
|
Reference in New Issue
Block a user