第十九章 维护本地数据库(四)
压缩数据库中的全局变量
管理数据库空间的另一种方法是使用 ^DATABASE
例程压缩数据库中的全局变量。压缩全局变量将全局数据合并到更少的块中,从而增加数据库中的可用空间量。
在创建和更新全局变量时 IRIS
通常以将全局块填充到大约 70%
容量的方式分配数据。 (完全按整理顺序增长的全局可能会分配到接近 90%
。)通常,允许 IRIS
自动管理全局块密度就足够了。然而,一些不连续的数据删除模式可能会显着降低平均全局块密度。
注意:要逐个全局地查看数据库中全局块的当前密度,可以运行完整性检查、并检查每个全局的数据级别输出。
压缩全局变量时,指定所需的全局块密度(默认为 90%
),操作会尝试通过合并数据来尽可能接近此值——例如,将分布在三个块中的全局数据重新排列为两个。通常(但并非总是),压缩全局变量会显着增加数据库中可用的可用空间。 (如果指定的目标密度低于数据库当前的全局块密度,则数据库的大小不会增加。)
要压缩数据库中的全局变量,请使用以下过程:
- 打开终端并更改为
%SYS
命名空间。 - 输入
do ^DATABASE
,然后从菜单中选择 7)Compact globals in a database
。
%SYS>do ^DATABASE
1) Create a database
2) Edit a database
3) List databases
4) Delete a database
5) Mount a database
6) Dismount a database
7) Compact globals in a database
8) Show free space for a database
9) Show details for a database
10) Recreate a database
11) Manage database encryption
12) Return unused space for a database
13) Compact free space in a database
14) Defragment a database
15) Show background database tasks
- 指定要在其上运行操作的数据库的目录。可以通过输入来指定多个数据库?在数据库目录压缩
?
提示,然后输入数字列表。
Database directories to compact? ?
1) c:\intersystems\irishealth\mgr\
2) c:\intersystems\irishealth\mgr\hscustom\
3) c:\intersystems\irishealth\mgr\hslib\
4) c:\intersystems\irishealth\mgr\hssys\
5) c:\intersystems\irishealth\mgr\irisaudit\
6) c:\intersystems\irishealth\mgr\irislocaldata\
7) c:\intersystems\irishealth\mgr\iristemp\
8) c:\intersystems\irishealth\mgr\user\
(Multiple selections allowed: * for all, or list such as 1,4,7-10)
- 指示您要压缩所有全局变量,或者输入要压缩的单个全局变量列表。
Database directories to compact? 8 c:\intersystems\irishealth\mgr\user\
Databases Selected
------------------
c:\intersystems\irishealth\mgr\user\
- 指定目标平均全局块密度,响应其余提示,并确认。
All Globals? Yes => yes
34 items selected from
34 available globals
How full do you want the database blocks? 90 => 50
Display compacted globals? No => n
Device: ""
Right margin: 80 => 50
Confirm compaction of databases? Yes => yes
Database Compaction
Aug 20 2022 5:49 PM
Database c:\intersystems\irishealth\mgr\user\
Global MB Processed MB Compres
sed To
Completed
------ ------------ ----------
------
---------
^IRIS.Msg 0
0
5:49 PM
^IRIS.MsgNames 0
0
5:49 PM
^IRIS.SASchema 0.008
0.008
5:49 PM
^ISC.Src.Jrn 0.008
0.008
5:49 PM
^ISCMethodWhitelist 0.008
0.008
5:49 PM
^ROUTINE 0.008
0.008
5:49 PM
^oddBIND 0
0
5:49 PM
^oddCOM 0.016
0.016
5:49 PM
^oddDEF 0.016
0.016
5:49 PM
^oddDEP 0.008
0.008
5:49 PM
^oddEXT 0.008
0.008
5:49 PM
^oddEXTR 0
0
5:49 PM
^oddMAP 0
0
5:49 PM
^oddMETA 0
0
5:49 PM
^oddPKG 0
0
5:49 PM
^oddPROC 0
0
5:49 PM
^oddPROJECT 0.008
0.008
5:49 PM
^oddSQL 0
0
5:49 PM
^oddStudioDocument 0
0
5:49 PM
^oddStudioMenu 0
0
5:49 PM
^oddTSQL 0
0
5:49 PM
^oddXML 0
0
5:49 PM
^rBACKUP 0
0
5:49 PM
^rINC 0
0
5:49 PM
^rINCSAVE 0
0
5:49 PM
^rINDEX 0.008
0.008
5:49 PM
^rINDEXCLASS 0.008
0.008
5:49 PM
^rINDEXEXT 0.10
0.10
5:49 PM
^rINDEXSQL 0.008
0.008
5:49 PM
^rMAC 0
0
5:49 PM
^rMACSAVE 0
0
5:49 PM
^rMAP 0.008
0.008
5:49 PM
^rOBJ 0.008
0.008
5:49 PM
^rPYC 0.008
0.008
5:49 PM
注意:紧凑的全局操作旨在与正常的数据库活动同时运行。但是,该操作确实会消耗一些系统资源,并且如果系统处于极高负载下,则可能无法完成。出于这些原因, 建议在非高峰时间运行此和其他数据库重组操作(包括压缩数据库和对全局进行碎片整理),并且一次只在系统上运行一个此类操作。
全局压缩可能涉及临时增加正在压缩的数据库大小。如果这导致数据库达到其配置的最大大小,或者由于存储卷上的可用空间不足而无法进行扩展,则取消操作。