---
order: 4
navTitle: 运维
indexTitle: 缓存管理
---
# 缓存管理

对系统的文件或数据进行访问时，若每次都从服务器端重新读取数据进行计算，就加大了服务器的压力并且导致访问速度变慢，为此系统会将一些经常访问到的数据存放在内存或临时文件中缓存起来，以提高系统效率。

**缓存管理**用于查看和清理当前服务器上的缓存，当侦测到数据发生变化时（如执行计划任务），系统会自动查询最新的数据，此时不需要手动清理缓存。但是当使用系统外的工具修改数据时（比如直接通过数据库工具修改了表数据），此时系统不会侦测到数据发生变化，需要手动清理缓存。

缓存管理界面如下：

![缓存管理](./images/2020-04-26-18-02-27.png)

## 清理缓存{#clear-cache}

缓存管理界面提供了以下两种清除缓存的方式：

1. 点击单个缓存类型**操作**列下的**清除**按钮，清除该缓存类型的缓存
2. 点击工具栏的**清除全部**按钮，清除所有缓存类型的缓存

:::tip

1. 系统正常运行时，不需要手动清理缓存，只有在系统外部修改数据源内容时才需要清理和数据源相关的数据库缓存、元数据缓存以及query查询缓存
2. 停留在缓存管理界面时，缓存记录不会自动刷新，需要通过**刷新**来更新缓存记录，而**删除**会将缓存结果删除，并将缓存记录清空
3. 缓存是分模块存储在内存和[工作目录](../../devops/install/basic-install/workdir-and-defdb.md)下的cache目录中的，如果手动删除工作目录下的缓存文件，刷新缓存管理界面，缓存记录也会更新
4. 可参考[如何禁用模型查询的缓存](../../data-gov/faq/howto-disable-query-cache.md)，禁用模型的query查询缓存

:::

## 缓存类型介绍{#type}

缓存分为以下七种类型：

| 缓存类型 | 作用 |
| :---------| :-------- |
| 数据库缓存 | 缓存数据库中有哪些物理表、schema、表结构等信息 |
| 最慢SQL记录 | 记录当前系统中耗时较长的SQL，并存储在`default`数据库中的`SZSYS_MON_SLOWEST_SQLS`表中，可以通过[SQL查询](../../data-gov/sql-model.md)的方式查看，便于查看和分析系统中哪些SQL执行较慢，并进行优化|
| 兼容IE的JS缓存 | 由于ie11中只支持es5,所以通过ie访问系统时，会将js从es6转换成es5，并缓存下来，提高下次访问速度 |
| 标签缓存 | 缓存元数据标签到内存中，加快查询速度 |
| 元数据缓存 | 缓存元数据内容到内存中，包括报表、仪表板等相关的业务对象 |
| 数据文件缓存 | 按照项目缓存上传的csv/xlsx等文件生成的相关结构信息 |
| query查询缓存 | 缓存query的查询结果，当再次查询时，如果查询条件相同，直接返回缓存的结果 |

:::tip

存储最慢SQL记录的规则如下：

1. 当SQL记录不超过100条时，系统会全部记录
2. 当SQL记录条数超过100条时，系统会将当前SQL记录中耗时最长的第100条SQL耗时作为阈值，执行时间超过阈值的SQL会记录下来，已经记录的数据不会删除，同时按照插入后的数据情况，将阈值更新为插入后的数据中耗时最长的第100条。比如前100条SQL记录耗时最长和最短为2s和1s，阈值为1s，此时有个SQL耗时1.1s，那么该SQL会记录下来，同时将阈值提高到1.1s

:::
