企业微信API如何设计任务占用锁?WeComApi 防止群发、补偿和人工重试同时执行
2026/10/1 16:14:15
为更好的理解达梦数据库基础管理,按照这个思维导图可快速理解
基础数据库管理 │ ├── 5. DM系统管理员 │ │ │ ├── 5.1 DM系统管理员的类型 │ │ ├── 三权分立 │ │ │ ├── 数据库管理员(DBA)SYSDBA │ │ │ │ ├── 系统管理和维护 │ │ │ │ ├── 安装升级、配置参数 │ │ │ │ ├── 创建存储结构和对象 │ │ │ │ ├── 监控优化性能 │ │ │ │ └── 备份恢复 │ │ │ ├── 数据库安全员(SSO)SYSSSO │ │ │ │ ├── 制定安全策略 │ │ │ │ ├── 定义安全等级、范围、组 │ │ │ │ ├── 定义主客体安全标记 │ │ │ │ └── 强化系统安全机制 │ │ │ └── 数据库审计员(AUDITOR)SYSAUDITOR │ │ │ ├── 设置审计对象和操作 │ │ │ ├── 定义新的审计员 │ │ │ └── 查看分析审计记录 │ │ ├── 四权分立 │ │ │ └── 新增:数据库对象操作员(DBO)SYSDBO │ │ │ ├── 创建数据库对象 │ │ │ ├── 对自己拥有的对象有全部权限 │ │ │ ├── 可以授出与回收 │ │ │ └── 无法管理维护数据库对象 │ │ └── 特殊用户:SYS │ │ ├── 仅保存系统内部对象 │ │ ├── 非数据库管理员 │ │ └── 无法登录 │ │ │ ├── 5.2 数据库管理员的任务 │ │ ├── 评估软硬件运行环境 │ │ │ ├── OS/中间件稳定性、性能、安全性 │ │ │ ├── 处理器个数和性能 │ │ │ ├── 内存容量和性能 │ │ │ ├── 网络带宽 │ │ │ ├── 存储容量和读写性能 │ │ │ └── HBA卡传输性能 │ │ ├── 安装和升级DM服务器 │ │ │ ├── 先在测试系统完成安装 │ │ │ └── 升级包需测试确认后再上生产 │ │ ├── 数据库结构设计 │ │ │ ├── 创建配置数据库 │ │ │ ├── 启动关闭数据库 │ │ │ ├── 模式对象空间布局 │ │ │ ├── 数据库整体布局和存储管理 │ │ │ └── 各数据库对象及存储特性设计 │ │ ├── 监控和优化数据库性能 │ │ │ ├── 监视长时间运行查询 │ │ │ ├── 增加索引、重写查询 │ │ │ ├── 调整内存使用参数 │ │ │ └── 必要时联系达梦售后 │ │ └── 计划和实施备份与故障恢复 │ │ ├── 故障恢复 │ │ ├── 备份与还原 │ │ ├── 数据守护 │ │ └── 数据共享集群 │ │ │ ├── 5.3 数据库安全员的任务 │ │ ├── 制定并应用安全策略 │ │ ├── 定义安全级别、范围和组 │ │ ├── 创建安全标记 │ │ ├── 应用到主体(用户)和客体(表) │ │ ├── 启用强制访问控制 │ │ └── 不能对用户数据增删改查 │ │ │ └── 5.4 数据库审计员的任务 │ ├── 创建和删除数据库审计员 │ ├── 设置/取消审计对象和操作 │ ├── 查看和分析审计记录 │ └── 事后追查非法操作 │ ├── 6. 创建和配置DM数据库 │ │ │ ├── 6.1 创建DM数据库 │ │ ├── 创建前准备工作 │ │ │ ├── 规划表和索引,估算空间 │ │ │ ├── 确定字符集(默认GB18030) │ │ │ ├── 规划文件存储路径 │ │ │ ├── 配置时区(中国+8:00) │ │ │ ├── 设置簇大小、页大小、日志大小 │ │ │ └── 为系统用户指定新口令 │ │ ├── 必要条件 │ │ │ ├── 安装DM软件并设置环境变量 │ │ │ ├── 足够内存启动实例 │ │ │ └── 足够磁盘存储空间 │ │ └── 查看建库参数:V$DM_INI │ │ │ ├── 6.2 使用数据库配置工具创建数据库 │ │ ├── 6.2.1 启动数据库配置助手 │ │ │ └── 开始→程序→达梦数据库→客户端→DM数据库配置助手 │ │ └── 6.2.2 创建向导步骤 │ │ ├── 数据库模板(一般用途/OLAP/OLTP) │ │ ├── 数据库目录 │ │ ├── 数据库标识(库名、实例名、端口号) │ │ ├── 数据库文件 │ │ │ ├── 控制文件(二进制,创建后不能随意更改) │ │ │ ├── 数据文件(SYSTEM/MAIN/ROLL/TEMP及镜像) │ │ │ ├── 日志文件(重做日志) │ │ │ └── 初始化日志 │ │ ├── 初始化参数 │ │ │ ├── 簇大小:16/32/64页,默认16 │ │ │ ├── 页大小:4K/8K/16K/32K,默认8K │ │ │ ├── 日志文件大小 │ │ │ ├── 时区 │ │ │ ├── 页校验(默认快速CRC) │ │ │ ├── 字符集 │ │ │ └── 页加密分片大小 │ │ ├── 口令管理(SYSDBA/SYSAUDITOR等) │ │ ├── 创建示例库(BOOKSHOP/DMHR) │ │ ├── 创建摘要 │ │ └── 创建数据库 │ │ │ ├── 6.3 使用dminit创建数据库 │ │ ├── 位置:安装目录bin目录下 │ │ ├── 命令格式:dminit [para=value][para=value]…… │ │ ├── 重要参数 │ │ │ ├── PATH:数据库存放路径 │ │ │ ├── CTL_PATH:控制文件路径 │ │ │ ├── LOG_PATH:日志文件路径 │ │ │ ├── EXTENT_SIZE:簇大小(16/32/64) │ │ │ ├── PAGE_SIZE:页大小(4K/8K/16K/32K) │ │ │ ├── LOG_SIZE:日志文件大小 │ │ │ ├── CASE_SENSITIVE:大小写是否敏感 │ │ │ ├── CHARSET:字符集(0/1/2) │ │ │ ├── SYSDBA_PWD:SYSDBA密码 │ │ │ ├── SYSAUDITOR_PWD:SYSAUDITOR密码 │ │ │ ├── DB_NAME:数据库名 │ │ │ ├── INSTANCE_NAME:实例名 │ │ │ ├── PORT_NUM:端口号 │ │ │ ├── BUFFER:系统缓存大小 │ │ │ ├── TIME_ZONE:时区 │ │ │ └── PAGE_CHECK:页检查模式 │ │ └── 示例 │ │ └── dminit PATH=c:\dmdata PAGE_SIZE=16 SYSDBA_PWD=DMdba_123 │ │ │ ├── 6.4 注册数据库服务 │ │ ├── 将命令行生成的数据库注册成系统服务 │ │ ├── 图形化界面和shell脚本两种方式 │ │ └── 可选择是否以配置状态启动 │ │ │ ├── 6.5 查看数据库信息 │ │ ├── DM管理工具:查看表空间属性 │ │ │ ├── 数据文件路径 │ │ │ ├── 总空间大小 │ │ │ ├── 空闲空间大小 │ │ │ └── 使用率 │ │ └── DM控制台工具:查看实例配置属性 │ │ ├── 控制文件、实例名、内存、线程 │ │ ├── 查询、数据库、检查点、IO │ │ ├── REDO日志、事务、安全、兼容性 │ │ └── 监控、数据守护、全文索引、DSC等 │ │ │ ├── 6.6 删除数据库 │ │ ├── 删除内容 │ │ │ ├── 数据文件 │ │ │ ├── 日志文件 │ │ │ ├── 控制文件 │ │ │ └── 初始化参数文件 │ │ ├── 前提:DMSERVER已关闭 │ │ └── 使用数据库配置工具删除 │ │ ├── 选择要删除的数据库 │ │ ├── 确认删除摘要 │ │ ├── 停止实例 → 删除实例 → 删除数据库 │ │ └── 非root用户需root执行随机启动服务删除命令 │ │ │ └── 6.7 删除数据库服务 │ ├── 只删除启动和停止数据库的服务文件 │ ├── 不会删除数据文件、日志文件、控制文件、参数文件 │ └── 图形化界面和shell脚本两种方式 │ ├── 7. 启动和关闭数据库 │ │ │ ├── 7.1 启动数据库 │ │ ├── 7.1.1 Windows系统 │ │ │ ├── 菜单方式:DM服务查看器 → 启动 │ │ │ ├── Windows服务方式:DmServiceDMSERVER → 启动 │ │ │ └── 命令行方式:DMSERVER应用程序 │ │ │ ├── path:dm.ini绝对路径 │ │ │ ├── dcr_ini:dmdcr.ini文件路径 │ │ │ ├── -noconsole:以服务方式启动 │ │ │ ├── mount:以MOUNT配置状态启动 │ │ │ ├── dpc_mode:DPC实例角色 │ │ │ └── help:打印帮助信息 │ │ ├── 7.1.2 Linux系统 │ │ │ ├── 菜单方式 │ │ │ ├── Linux服务方式:./DmServiceDMSERVER start │ │ │ └── 命令行方式:./dmserver │ │ └── 7.1.3 检查LICENSE │ │ ├── 启动时进行LICENSE检查 │ │ ├── LICENSE文件为dm.key │ │ ├── LICENSE过期导致强制退出 │ │ ├── LICENSE类型须与DM软件类型匹配 │ │ └── 查看:V$LICENSE │ │ │ ├── 7.2 数据库状态和模式 │ │ ├── 状态 │ │ │ ├── 配置状态(MOUNT):不能访问数据库对象 │ │ │ ├── 打开状态(OPEN):可访问数据库对象 │ │ │ └── 挂起状态(SUSPEND):限制磁盘写入 │ │ │ ├── OPEN与MOUNT/SUSPEND可相互转换 │ │ │ └── MOUNT与SUSPEND不能相互转换 │ │ └── 模式(只能在MOUNT状态下设置) │ │ ├── 普通模式(NORMAL):无限制 │ │ ├── 主库模式(PRIMARY):强制生成REDO日志 │ │ └── 备库模式(STANDBY):接收主库REDO日志,只读 │ │ │ └── 7.3 关闭数据库 │ ├── 7.3.1 Windows系统 │ │ ├── 菜单方式:DM服务查看器 → 停止 │ │ ├── Windows服务方式:DmServiceDMSERVER1 → 停止 │ │ └── 命令行方式:输入exit │ └── 7.3.2 Linux系统 │ ├── 菜单方式 │ ├── Linux服务方式:./DmServiceDMSERVER stop │ └── 命令行方式:输入exit │ ├── 8. 管理模式对象的空间 │ │ │ ├── 8.1 设置存储参数 │ │ ├── 8.1.1 普通表和索引 │ │ │ ├── INITIAL:初始簇数目(1-256,默认1) │ │ │ ├── NEXT:下次分配簇数目(1-256,默认1) │ │ │ ├── MINEXTENTS:最小保留簇数目(1-256,默认1) │ │ │ ├── FILLFACTOR:填充比例(0-100,默认0等价100) │ │ │ └── 表空间名:默认用户缺省表空间 │ │ ├── 8.1.2 堆表 │ │ │ ├── BRANCH:并发分支(1-64) │ │ │ ├── NOBRANCH:非并发分支(1-64) │ │ │ └── 最多支持128个链表 │ │ └── 8.1.3 HUGE表 │ │ ├── 必须建立在混合表空间上 │ │ ├── 区大小:1024行~1024*1024行,默认65536行 │ │ ├── 是否记录区统计信息 │ │ ├── 所属表空间(只能是混合表空间) │ │ ├── 文件大小:16M~1024*1024M,默认64M │ │ └── 日志属性:LOG NONE / LOG LAST / LOG ALL │ │ │ ├── 8.2 收回多余的空间 │ │ ├── 表和索引对象占用的簇:全满或半满 │ │ └── 空闲簇自动回收 │ │ │ ├── 8.3 用户和表上的空间限制 │ │ ├── 8.3.1 用户的空间限制 │ │ │ ├── 用户占用空间 = 所有用户表对象占用空间总和 │ │ │ ├── 设置表空间配额限制 │ │ │ ├── 创建:CREATE USER ... QUOTA 50M ON TEST_TABLESPACE │ │ │ └── 修改:ALTER USER ... QUOTA 100M ON TEST_TABLESPACE │ │ └── 8.3.2 表对象的空间限制 │ │ ├── 表对象占用空间 = 所有索引占用空间总和 │ │ ├── 创建:CREATE TABLE ... DISKSPACE LIMIT 500 │ │ └── 修改:ALTER TABLE ... MODIFY DISKSPACE LIMIT 50 │ │ │ ├── 8.4 查看模式对象的空间使用 │ │ ├── 8.4.1 查看用户占用空间:USER_USED_SPACE │ │ ├── 8.4.2 查看表占用空间:TABLE_USED_SPACE │ │ ├── 8.4.3 查看表使用页数:TABLE_USED_PAGES │ │ ├── 8.4.4 查看表空闲堆栈占用空间:TABLE_FREE_PAGE_STACK_USED_SPACE │ │ ├── 8.4.5 查看索引占用空间:INDEX_USED_SPACE │ │ └── 8.4.6 查看索引使用页数:INDEX_USED_PAGES │ │ │ └── 8.5 数据类型的空间使用 │ ├── CHAR/VARCHAR:1~8188字节 │ ├── TINYINT/BIT/BYTE:1字节 │ ├── SMALLINT:2字节 │ ├── INT:4字节 │ ├── BIGINT:8字节 │ ├── REAL:4字节 │ ├── FLOAT/DOUBLE:8字节 │ ├── DEC/DECIMAL/NUMERIC:1~22字节 │ ├── DATE:3字节 │ ├── TIME:5字节 │ ├── TIMESTAMP/DATETIME:8字节 │ ├── TIME WITH TIME ZONE:7字节 │ ├── TIMESTAMP WITH TIME ZONE:10字节 │ ├── INTERVAL YEAR/MONTH/YEAR TO MONTH:12字节 │ ├── INTERVAL DAY/HOUR/.../MINUTE TO SECOND:24字节 │ └── BLOB/CLOB/TEXT等:1~(100G-1)字节 │ ├── 9. 管理表 │ │ │ ├── 9.1 管理表的准则 │ │ ├── 9.1.1 设计表 │ │ │ ├── 规范化表,最小化数据冗余 │ │ │ ├── 为每列选择合适的数据类型 │ │ │ ├── 建立合适的完整性约束 │ │ │ ├── 建立合适的聚集索引 │ │ │ └── 根据实际需要建立合适类型的表 │ │ ├── 9.1.2 指定表的存储空间上限 │ │ │ └── CREATE TABLE ... SPACE LIMIT │ │ └── 9.1.3 指定表的存储位置 │ │ ├── STORAGE子句指定表空间 │ │ └── 优点:提高性能、减少管理时间 │ │ │ ├── 9.2 创建表 │ │ ├── 9.2.1 创建普通表 │ │ │ └── CREATE TABLE ... STORAGE(INITIAL/NEXT/MINEXTENTS/FILLFACTOR/ON) │ │ ├── 9.2.2 指定表的聚集索引 │ │ │ ├── 默认聚集索引键:ROWID │ │ │ ├── CLUSTER PRIMARY KEY:聚集主键 │ │ │ ├── CLUSTER KEY:非唯一聚集索引键 │ │ │ ├── CLUSTER UNIQUE KEY:唯一聚集索引键 │ │ │ └── PK_WITH_CLUSTER参数:主键自动转聚集主键 │ │ ├── 9.2.3 指定表的填充因子 │ │ │ ├── 指定聚集索引填充因子 │ │ │ ├── 低值:更多页存储,读取范围大 │ │ │ ├── 高值:更新时可能大量页拆分 │ │ │ └── 只读表高值,大量更新表低值 │ │ ├── 9.2.4 查询建表 │ │ │ ├── CREATE TABLE AS SELECT(CTAS) │ │ │ ├── CTAB_SEL_WITH_CONS=0:默认,拷贝部分非空信息 │ │ │ ├── CTAB_SEL_WITH_CONS=1:拷贝约束 │ │ │ └── CTAB_SEL_WITH_CONS=2:拷贝表结构、分区、存储、约束 │ │ └── 9.2.5 创建临时表 │ │ ├── 会话或事务中临时存储数据 │ │ ├── 事务结束或会话断开时数据清空 │ │ ├── 第一次DML时才分配空间 │ │ ├── 不同会话数据独享 │ │ ├── 支持建索引 │ │ ├── ON COMMIT DELETE ROWS:事务级 │ │ └── ON COMMIT PRESERVE ROWS:会话级 │ │ │ ├── 9.3 修改表 │ │ ├── 添加/删除列,修改列定义 │ │ ├── 添加/修改/删除完整性约束 │ │ ├── 重命名表 │ │ ├── 启动/停用完整性约束 │ │ ├── 启动/停用触发器 │ │ ├── 修改表的SPACE LIMIT │ │ └── 增删自增列 │ │ │ ├── 9.4 删除表 │ │ ├── 表结构从数据字典删除 │ │ ├── 所有索引和触发器一起清除 │ │ ├── 同义词、视图、存储过程失效 │ │ ├── 所有簇标记为空闲 │ │ ├── DROP TABLE employee │ │ └── DROP TABLE employee CASCADE(有外键引用时) │ │ │ ├── 9.5 清空表 │ │ ├── 9.5.1 使用DELETE │ │ │ ├── 消耗系统资源 │ │ │ ├── 产生大量REDO和UNDO │ │ │ └── 元组级触发器每行触发一次 │ │ ├── 9.5.2 使用DROP和CREATE │ │ │ ├── 删除后重建 │ │ │ └── 索引、约束、触发器、授权也被删除 │ │ └── 9.5.3 使用TRUNCATE │ │ ├── 快速有效删除所有行 │ │ ├── DDL语句,不产生回滚信息 │ │ ├── 立即提交,不能回滚 │ │ ├── 不影响结构、约束、触发器、授权 │ │ └── 释放空间供其他对象使用 │ │ │ └── 9.6 查看表信息 │ ├── 9.6.1 查看表定义:SP_TABLEDEF │ ├── 9.6.2 查看自增列信息 │ │ ├── IDENT_CURRENT:当前值 │ │ ├── IDENT_SEED:种子信息 │ │ └── IDENT_INCR:增量信息 │ └── 9.6.3 查看表的空间使用情况 │ ├── TABLE_USED_SPACE:已分配页面数 │ ├── TABLE_USED_PAGES:已使用页面数 │ └── TABLE_FREE_PAGE_STACK_USED_SPACE:空闲页堆栈页面数 │ ├── 10. 管理索引 │ │ │ ├── 10.1 索引分类 │ │ ├── 10.1.1 聚集索引和非聚集索引 │ │ │ ├── 聚集索引(一级索引/主索引) │ │ │ │ ├── 按聚集索引键构造B树 │ │ │ │ ├── 表数据存储在B树叶子节点上 │ │ │ │ └── 每个表有且只有一个 │ │ │ └── 非聚集索引(二级索引/辅助索引) │ │ │ ├── 二级索引列 + 聚集索引列存储在叶子节点 │ │ │ ├── 查找索引键值以外的数据需回一级索引 │ │ │ └── 每个表可以有多个 │ │ ├── 10.1.2 功能索引 │ │ │ ├── 唯一索引:索引数据根据索引键唯一 │ │ │ ├── 函数索引:包含函数/表达式预先计算的值 │ │ │ ├── 位图索引:对低基数(不同值很少)的列创建 │ │ │ ├── 位图连接索引:针对两个或多个表连接 │ │ │ ├── 全文索引:在文本列上创建 │ │ │ ├── 空间索引:空间数据上创建 │ │ │ ├── 数组索引:单个数组成员对象列上创建 │ │ │ └── 普通索引:除以上以外的索引 │ │ ├── 10.1.3 虚索引和实索引 │ │ │ ├── 虚索引:不存储数据,系统自动隐式创建 │ │ │ │ ├── 情景1:普通表外键引用约束未用WITH INDEX │ │ │ │ ├── 情景2:非事务型HUGE表PK/UNIQUE约束 │ │ │ │ └── 情景3:HUGE_UNIQUE_CHECK=0时事务型HUGE表PK/UNIQUE │ │ │ └── 实索引:存储数据的索引,虚索引以外均为实索引 │ │ ├── 10.1.4 单列索引和复合索引 │ │ │ ├── 单列索引:只有一个索引键 │ │ │ └── 复合索引:含有多个索引键 │ │ └── 10.1.5 全局索引和局部索引 │ │ ├── 全局索引:以整张表数据为对象建立 │ │ │ ├── 指定GLOBAL关键字创建 │ │ │ ├── 主表创建全局索引,每个子表创建全局本地索引 │ │ │ ├── 全局非分区索引:除DMDPC外均可使用 │ │ │ └── 全局分区索引:专门用于DMDPC环境 │ │ └── 局部索引:在分区表每个分区上创建 │ │ ├── 未指定GLOBAL关键字的索引 │ │ ├── 主表创建局部索引,每个子表创建子表局部索引 │ │ └── 暂不支持分区 │ │ │ ├── 10.2 管理索引的准则 │ │ ├── 10.2.1 在表中插入数据后创建索引 │ │ ├── 10.2.2 索引正确的表和列 │ │ │ ├── 检索大表少量行 → 为查询键创建索引 │ │ │ ├── 改善多表连接性能 → 为连接列创建索引 │ │ │ ├── 主键和唯一键自动有索引 │ │ │ ├── 小表不需要索引 │ │ │ ├── 列中的值相对唯一 │ │ │ ├── 取值范围大 │ │ │ └── CLOB/TEXT只能建全文索引,BLOB不能建索引 │ │ ├── 10.2.3 为性能而安排索引列 │ │ │ ├── 最常用的列放在最前面 │ │ │ ├── 多字段组合定位 → 建组合索引 │ │ │ └── 等值字段在前,非等值字段在后 │ │ ├── 10.2.4 限制每个表的索引的数量 │ │ │ ├── 索引越多,修改表数据开销越大 │ │ │ └── 读多索引多,更新多索引不宜多 │ │ ├── 10.2.5 估计索引大小和设置存储参数 │ │ └── 10.2.6 为每个索引指定表空间 │ │ ├── 除临时/日志/回滚段表空间外均可创建 │ │ ├── 表和索引不同表空间减少磁盘竞争 │ │ └── 索引表空间脱机会导致SQL执行失败 │ │ │ ├── 10.3 创建索引 │ │ ├── 10.3.1 显式地创建索引 │ │ │ ├── 创建聚集索引:CREATE CLUSTER INDEX │ │ │ │ ├── 每张表只允许一个聚集索引 │ │ │ │ ├── 重建表上所有索引 │ │ │ │ ├── 删除时缺省以ROWID排序重建 │ │ │ │ ├── 默认ROWID索引不允许删除 │ │ │ │ ├── 不能应用到函数索引 │ │ │ │ ├── 不能在列存储表和堆表上新建 │ │ │ │ ├── 不能含partition_clause子句 │ │ │ │ └── 不支持多媒体类型表 │ │ │ ├── 创建唯一索引:CREATE UNIQUE INDEX │ │ │ ├── 创建函数索引 │ │ │ │ ├── 促进限定函数或表达式返回值的查询 │ │ │ │ ├── 表达式不允许时间间隔类型 │ │ │ │ ├── 不允许半透明加密列 │ │ │ │ ├── 不能为CLUSTER或PRIMARY KEY │ │ │ │ ├── 不支持集函数和不确定函数 │ │ │ │ └── 临时表不支持函数索引 │ │ │ ├── 创建位图索引 │ │ │ │ ├── 针对大量相同值的列 │ │ │ │ ├── 支持普通表、堆表、水平分区表 │ │ │ │ ├── 不支持大字段、计算表达式列 │ │ │ │ ├── 不支持UNIQUE/PRIMARY KEY列 │ │ │ │ ├── 不支持CLUSTER KEY表 │ │ │ │ ├── 单列或不超过63个组合列 │ │ │ │ └── MPP环境不支持 │ │ │ └── 创建位图连接索引 │ │ │ ├── 针对两个或多个表连接 │ │ │ ├── 主要用于数据仓库 │ │ │ ├── 连接列必须是主键或唯一约束 │ │ │ └── 事实表聚集索引和位图连接索引不能同时存在 │ │ └── 10.3.2 隐式地创建索引 │ │ ├── 只支持创建唯一索引 │ │ ├── UNIQUE KEY或PRIMARY KEY约束时自动创建 │ │ └── 隐式创建的是实索引 │ │ │ ├── 10.4 如何在SQL语句中使用索引 │ │ ├── 查询项和WHERE过滤项包含索引全部索引键 │ │ ├── 同时包含多个索引键时选最优索引 │ │ └── 最少查找即最优索引 │ │ │ ├── 10.5 重建索引 │ │ ├── 目的:重组数据、释放空间、提高效率 │ │ ├── 系统函数:SP_REBUILD_INDEX(SCHNAME, INDEXID) │ │ ├── 水平分区子表/临时表/系统表索引不支持重建 │ │ └── 虚索引和聚集索引不支持重建 │ │ │ ├── 10.6 删除索引 │ │ ├── 删除原因 │ │ │ ├── 不再需要 │ │ │ ├── 未提供期望性能改善 │ │ │ └── 应用未用该索引查询 │ │ ├── DROP INDEX emp_ename │ │ ├── DROP INDEX IF EXISTS emp_ename(不报错) │ │ ├── 不能直接删除约束相关索引 │ │ └── 删除表自动删除所有相关索引 │ │ │ └── 10.7 查看索引信息 │ └── INDEXDEF(INDEXID, PREFLAG):查看索引定义 │ ├── 11. 管理触发器 │ │ │ ├── 触发器概述 │ │ ├── 特殊的存储过程,创建后存储在数据库中 │ │ ├── 建立在表/视图之上或事件前后 │ │ ├── 自动激发执行 │ │ └── 三种类型 │ │ ├── 表级触发器:基于表中数据触发 │ │ ├── 事件触发器:基于特定系统事件触发 │ │ └── 时间触发器:基于时间触发 │ │ │ ├── 11.1 触发器的使用 │ │ ├── 创建语法 │ │ │ └── CREATE [OR REPLACE] TRIGGER ... BEFORE|AFTER|INSTEAD OF DELETE|INSERT|UPDATE ON 表名 [FOR EACH ROW [WHEN 条件]] BEGIN ... END │ │ ├── 前激发(BEFORE)和后激发(AFTER) │ │ ├── INSTEAD OF:仅用于视图 │ │ ├── FOR EACH ROW:元组级触发器 │ │ ├── 无FOR EACH ROW:语句级触发器 │ │ ├── 删除触发器:DROP TRIGGER │ │ ├── 失效:ALTER TRIGGER ... DISABLE │ │ └── 有效:ALTER TRIGGER ... ENABLE │ │ │ ├── 11.2 表级触发器 │ │ ├── 触发动作:INSERT/DELETE/UPDATE │ │ ├── 触发级别 │ │ │ ├── 元组级:每行激发一次 │ │ │ └── 语句级:每个触发命令执行一次 │ │ └── 触发时机 │ │ ├── BEFORE:动作之前运行 │ │ ├── AFTER:动作之后运行 │ │ └── INSTEAD OF:替换原始操作 │ │ │ ├── 11.3 事件触发器 │ │ ├── 库级和模式级│ │ ├── 不依赖某个表 │ │ ├── 基于特定系统事件触发 │ │ ├── DDL事件:CREATE/ALTER/DROP/GRANT/REVOKE/TRUNCATE │ │ ├── 系统事件:LOGIN/LOGOUT/AUDIT/NOAUDIT/BACKUP/RESTORE/TIMER/STARTUP/SHUTDOWN/SERERR │ │ └── 模式级不能是LOGIN/LOGOUT等事件 │ │ │ ├── 11.4 时间触发器 │ │ ├── 特殊的事件触发器 │ │ ├── 可定义任何时间点/时间区域/每隔多长时间 │ │ ├── 最小时间精度:分钟 │ │ └── CREATE TRIGGER ... AFTER TIMER ON DATABASE {时间定义语句} BEGIN ... END │ │ │ └── 11.5 触发器总结 │ ├── 每张基表触发器个数无限制 │ ├── 触发器越多DML耗时越长 │ ├── 语句级和元组级执行顺序 │ │ ├── 语句级前触发器 │ │ ├── 每行:元组级前触发器 → 语句本身 → 元组级后触发器 │ │ └── 语句级后触发器 │ ├── 同类触发器激发顺序无明确定义 │ ├── 可用FOLLOW和PRECEDES指定 │ └── 数据守护环境下备库触发器不会触发 │ ├── 12. 管理视图、序列和同义词 │ │ │ ├── 12.1 管理视图 │ │ ├── 从一个或几个基表(或视图)导出的表 │ │ ├── 虚表:数据字典只存放视图定义 │ │ ├── 数据仍存放在原基表中 │ │ ├── 简化用户数据模型 │ │ ├── 提供逻辑数据独立性 │ │ ├── 实现数据共享和安全保密 │ │ └── 动态性能视图:以V$开头 │ │ │ ├── 12.2 管理序列 │ │ ├── 产生不重复的有序整数值 │ │ ├── 自动生成主关键字值 │ │ ├── 第一次查询返回预定值(初始值) │ │ ├── 增量可以是任意正整数或负整数,不能为0 │ │ ├── CURRVAL:返回当前序列值 │ │ ├── NEXTVAL:升序增加/降序减少并返回 │ │ └── 序列可以是循环的 │ │ │ ├── 12.3 管理同义词 │ │ ├── 模式对象的别名 │ │ ├── 连接数据库模式对象和应用程序 │ │ ├── 为其他数据库对象提供备用名称 │ │ ├── 提供抽象层避免客户端更改 │ │ └── 模式对象更换或修改时不用修改应用程序 │ │ │ └── 12.4 查看视图、序列和同义词信息 │ ├── SYSOBJECTS和SYSTEXTS │ ├── SP_VIEWDEF系统过程 │ └── 物化视图定义只能通过SP_VIEWDEF完整获取 │ └── 13. 模式对象的常规管理 │ ├── 13.1 在单个操作中创建多个模式对象 │ ├── CREATE SCHEMA语句 │ ├── 创建空模式对象 │ └── 同时创建多个模式对象 │ ├── 13.2 重命名模式对象 │ ├── 删除原有对象重新创建(授权失效) │ ├── ALTER ... RENAME语句(权限转移) │ └── 注意事项 │ ├── 基于重命名对象的视图和DMSQL语句块失效 │ └── 基于重命名对象的同义词使用时报错 │ ├── 13.3 启用和停用触发器 │ ├── 两种状态 │ │ ├── 启用(ENABLED):触发条件满足时执行 │ │ └── 禁止(DISABLED):不执行触发体 │ ├── 条件:拥有触发器或有ALTER ANY TRIGGER权限 │ ├── 启用:ALTER TRIGGER addr_trig ENABLE │ └── 禁用:ALTER TRIGGER addr_trig DISABLE │ ├── 13.4 管理完整性约束 │ ├── 13.4.1 完整性约束状态 │ │ ├── 启用(ENABLE):检查数据 │ │ ├── 禁止(DISABLED):不检查 │ │ └── 可禁用场景 │ │ ├── 导入大量数据 │ │ ├── 批处理大规模修改 │ │ └── 导入导出一张表 │ ├── 13.4.2 定义完整性约束 │ │ ├── CREATE TABLE时定义 │ │ ├── ALTER TABLE时添加 │ │ └── 启用UNIQUE/PRIMARY KEY时创建对应索引 │ ├── 13.4.3 修改或删除现有的完整性约束 │ │ ├── 禁用:ALTER TABLE ... DISABLE CONSTRAINT │ │ ├── 删除:ALTER TABLE ... DROP CONSTRAINT │ │ └── 有外键引用时删除需加CASCADE │ └── 13.4.4 查看约束信息 │ ├── SYSOBJECTS │ └── SYSCONS │ ├── 13.5 管理对象依赖性 │ ├── 依赖对象:引用了别的对象 │ ├── 被依赖对象:被引用的对象 │ └── 对象被调用时自动重新编译 │ ├── 13.6 管理对象名称解析 │ ├── 13.6.1 SQL语句对象 │ │ ├── 只有一个名字:当前模式下寻找 │ │ └── 有点号:模式.对象或模式.表.列 │ └── 13.6.2 DMSQL程序对象 │ ├── 只有一个名字:当前模式下寻找 │ └── 有点号:优先解析为"本模式下包.对象" │ └── 13.7 显示有关模式对象的信息 ├── SYSOBJECTS:主要记录 ├── SYSINDEXES:索引详细信息 ├── SYSTEXTS:存储过程、函数等定义信息 └── SYSCONS:约束详细信息