元数据和自省
元数据 包含有关数据库对象、结构、数据库对象源代码等的信息。 DataGrip 使用这些信息在 数据库资源管理器 中显示对象,展示其 DDL,在代码补全时提供建议,以及用于其他编码辅助、导航和搜索功能。
在 DataGrip 中,有两种获取数据库元数据的方法:迷你目录和 自省。
- 迷你目录
通过系统模式的迷你目录,系统模式的元数据已预先自省并随 IDE 本身提供。 它们允许在无需自省系统模式且无需连接数据库的情况下编写使用系统元数据的脚本。
内省
自省 是加载数据库元数据的过程。 执行内省时,会检查数据源中的结构信息以检测表、列、例程及其属性的其他数据库对象。
自省仅支持具有数据结构和目录的数据库。
默认情况下,仅对选择在 数据库资源管理器 中显示的架构和数据库进行内省。
您可以通过在 数据库资源管理器 (⌘ 1 )中选择它们,或者在 数据源和驱动程序 对话框(Ctrl+Alt+Shift+S 对话框)中编辑数据源属性,来选择将被内省和显示的模式和数据库。
选择架构和数据库以进行 Introspection
在 数据库资源管理器 中:
要打开 数据库资源管理器 ,请从主菜单中选择 。 或者按 ⌘ 1。
在 数据库资源管理器 中,点击数据源、数据库或模式名称旁边的 M 中的 N 按钮。

在架构选择弹出窗口中,选择数据库或架构并按下 Enter。
在 数据源和驱动程序 对话框中:
要打开对话框,请右键单击 数据库资源管理器 中的数据源,然后选择
属性。 或者,单击工具栏上的
数据源属性 图标。
在 数据源和驱动程序 对话框的 架构 选项卡中,选择数据库或架构。

请注意, 对象筛选器 字段仅定义在 数据库资源管理器 中可见的对象,并不会影响内省范围。
应用更改并关闭对话框。
一旦必要的数据库和架构完成 Introspection,IDE 就可以在您的脚本中将数据库对象解析到正确的上下文。 以下示例演示了已 Introspection 和未 Introspection 架构的数据库对象解析。

尚未 Introspection 的
MySQL数据源。PostgreSQL数据源中唯一已 Introspection 的guest数据库。 该数据库包含四个架构,仅公开架构已完成 Introspection。在 查询控制台 中解析数据库对象:已内省的
guestschema 成功,未内省的testsschema 失败。
对于每个数据源,您还可以选择加载数据库对象源代码的模式类别。
加载不同模式的数据库对象源
要选择加载了数据库对象源的模式,请打开 数据源和驱动程序 对话框(Ctrl+Alt+Shift+S ),然后选择一个数据源。
在 选项 选项卡中,导航到 加载来源于 设置并选择模式类别。
应用更改并关闭对话框。

如果处理所有对象,数据库用户可能会遇到较长的 Introspection 时间,而这通常不是日常工作和代码辅助所必需的。 为了减少自省对象的数量,DataGrip 为部分支持的数据库实现了额外的 自省类型以及三个 自省级别。
有关收集故障排除材料以报告内省问题的更多信息,请参阅 报告自省问题 部分。
自省类型
自省类型定义了在自省期间刷新哪些数据库对象。 某些数据库允许将自省范围缩小到特定对象。 在 DataGrip 中,根据您的数据库,可用以下自省类型: 完全自省、 片段自省和 增量自省。
- 完全自省
在 数据库资源管理器 (架构选择器 )或 数据源和驱动程序 对话框中(架构 选项卡 )选中的用于内省的架构和数据库将被刷新。
- 增量自省
仅刷新在上一次自省运行后数据库中更改的数据库对象。
- 片段自省
仅当您调用 刷新 操作时,才会刷新在 数据库资源管理器 中选择的数据库对象。

当您在 查询控制台 中运行语句时,将应用 智能刷新 机制。 DataGrip 会分析哪些对象可能会被此语句修改,并仅刷新该特定对象集。
对于部分支持的数据库,自省可以通过 自省级别执行。
- 按级别自省
自省级别定义了检索数据库对象的详细程度:
级别 1:仅加载数据库对象名称。
级别 2:加载除数据库对象源代码以外的所有内容。
级别 3:加载所有内容。
有关自省级别的更多信息,请参阅 内省级别 主题。

如果某个数据库不支持特定的内省类型,DataGrip 将执行完整内省。 以下数据库支持特定类型的自省和自省级别:
数据库 | 增量自省 | 片段自省 | 内省级别 |
|---|---|---|---|
是 | 是 | - | |
是 | - | - | |
是 | 是 | 是 | |
是 | 是 | 是 | |
是 | 是 | 是 | |
是 | 是 | 是 | |
是 | 是 | 是 |