技术设置与日志 (★★★)
技术设置与日志 (★★★)
#abap #abap-dictionary #abap-tables #abap-performance
概览表
| Setting (设置) | Purpose (目的) |
|---|---|
| Data Class (数据类) | 物理存储区域选择 |
| Size Category (大小类别) | 扩展(Extent)大小 |
| Buffering (缓冲) | 读性能优化 |
| Logging (日志) | 变更记录 |
Data Class(数据类)
数据类决定表存储在数据库的哪个物理区域(Oracle 中为 Tablespace)。
| Data Class | Description | Example (示例) |
|---|---|---|
| APPL0 | 主数据(很少修改) | 地址文件 |
| APPL1 | 事务数据(频繁修改) | 库存数据 |
| APPL2 | 组织数据(Customizing) | 国家代码 |
| APPL3 | 系统数据 | 程序源码 |
| USER/USER1 | 客户自定义类 | 客户开发 |
💡正确选择数据类
正确选择数据类可确保表存储在正确的物理区域,避免碎片化问题。
Size Category(大小类别)
| Category | Description |
|---|---|
| 0 | ~0 到 4,300 条记录 |
| 1 | ~4,300 到 34,000 条记录 |
| 2 | ~34,000 到 150,000 条记录 |
| 3 | ~150,000 到 700,000 条记录 |
| 4 | ~700,000 条以上 |
- 初始扩展(Initial Extent)大小对所有类别相同
- 额外扩展的大小由类别决定
- 正确选择可避免:过多小扩展 或 浪费空间的大扩展
Logging(日志)
记录表条目的修改(插入/更新/删除)。
两个条件缺一不可:
1 | 日志生效条件: |
⚠️日志性能影响
日志会造成系统瓶颈:
- 每次修改产生额外的写操作
- 可能导致锁竞争(即使访问不同的应用表)
- 查看日志:事务 SCU3
数据库碎片化
1 | 频繁插入/删除 → 数据碎片化 → 性能下降 |
| 解决方案 | 适用场景 |
|---|---|
| 删除并重建索引 | 索引碎片化(表仍可用) |
| 转换表 (Conversion) | 表碎片化(表不可用!) |
📌转换注意事项
- 转换期间表不可读写
- 大表转换可能持续数分钟到数小时
- 应在低负载时段执行