写点什么

YashanDB SWAP 表空间管理

作者:YashanDB
  • 2025-03-14
    广东
  • 本文字数:2871 字

    阅读完需:约 9 分钟

数据库操作(例如 order by,hash join,统计信息收集等)首先会通过数据库虚拟内存(通过 VM_BUFFER_SIZE 参数控制)缓存计算的中间结果,但如果虚拟内存不足时,需要通过将虚拟内存交换到 SWAP 表空间来释放内存,必要时再将内存从 SWAP 表空间换入。


SWAP 表空间是非持久化表空间,只用于数据库虚拟内存的换入换出,因此持久化对象(例如表、索引等)不能创建在 SWAP 表空间。


SWAP 表空间空间不足时,可能会导致产生大量中间结果的操作失败,因此需要根据实际业务合理规划 SWAP 表空间大小或打开自动扩展。


分布式部署中,CREATE DATABASE 时内置了 SWAP 表空间,不允许手动创建新的 SWAP 表空间。


创建 SWAP 表空间


示例(单机部署)

CREATE SWAP TABLESPACE swap_shared TEMPFILE '?/dbfiles/swap_shared' SIZE 4M;
复制代码

示例(共享集群部署)

CREATE SWAP TABLESPACE swap_shared TEMPFILE '+DG0/dbfiles/swap_shared' SIZE 4M;
复制代码

创建本地 SWAP 表空间

示例(共享集群部署)

CREATE LOCAL SWAP TABLESPACE swap_local TEMPFILE '?/dbfiles/swap_local' SIZE 4M;
复制代码

为 SWAP 表空间添加数据文件

示例(单机部署)

ALTER TABLESPACE swap_shared ADD TEMPFILE 'swap01' SIZE 10M AUTOEXTEND ON;
复制代码


示例(共享集群部署)

ALTER TABLESPACE swap_shared ADD TEMPFILE '+DG0/dbfiles/swap_shared01' SIZE 10M AUTOEXTEND ON;
复制代码

Note

共享集群部署中,SWAP 表空间与本地 SWAP 表空间均支持添加 YFS 路径的文件,但只有本地 SWAP 表空间可以添加本地磁盘路径的文件。


为 SWAP 表空间调整数据文件大小

分布式部署/共享集群部署中无法使用此功能。

示例(单机部署)

ALTER DATABASE TEMPFILE 'swap01' RESIZE 20M;
复制代码

为 SWAP 表空间删除数据文件

不允许删除默认 swap 表空间的数据文件。

示例(单机部署)

ALTER TABLESPACE swap_shared DROP TEMPFILE 'swap01';
复制代码


示例(共享集群部署)

ALTER TABLESPACE swap_shared DROP TEMPFILE '+DG0/dbfiles/swap_shared01';
复制代码

Note

共享集群部署中,必须全部实例在线才能删除文件。


删除(本地)SWAP 表空间

示例(单机、共享集群部署)

DROP TABLESPACE swap_shared INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
复制代码

Note

共享集群部署中,必须全部实例在线才能删除 SWAP 表空间。


查询当前正在使用的 SWAP 表空间名称

示例

show parameter DEFAULT_SWAP_TABLESPACE;
复制代码

切换 SWAP 表空间

示例

ALTER SYSTEM SET DEFAULT_SWAP_TABLESPACE = 'SWAP';
复制代码


查询 SWAP 表空间信息


示例

SELECT ID,TABLESPACE_NAME,BLOCK_SIZE,MAX_SIZE/1024/1024 MAX_SIZE,TOTAL_BYTES/1024/1024 TOTAL_SIZE,STATUS,CONTENTS,LOGGING,ALLOCATION_TYPE,SEGMENT_SPACE_MANAGEMENT,ENCRYPTED FROM DBA_TABLESPACES;
ID TABLESPACE_NAME BLOCK_SIZE MAX_SIZE TOTAL_SIZE STATUS CONTENTS LOGGING ALLOCATION_TYPE SEGMENT_SPACE_MANAGEMENT ENCRYPTED -- --------------- ------------ ----------- ----------- --------- ----------- ------------- --------------- ------------------------ --------- 0 SYSTEM 8192 524288 64 ONLINE PERMANENT LOGGING AUTO BITMAP N 1 SYSAUX 8192 524288 64 ONLINE PERMANENT LOGGING AUTO BITMAP N 2 UNDO 8192 65536 64 ONLINE UNDO LOGGING UNIFORM BITMAP N 3 TEMP 8192 524288 94 ONLINE TEMPORARY NOLOGGING AUTO BITMAP N 4 SWAP 8192 524288 64 ONLINE SWAP NOLOGGING UNIFORM BITMAP N 5 USERS 8192 524288 124 ONLINE PERMANENT LOGGING AUTO BITMAP N
复制代码

查询 SWAP 表空间的数据文件信息

可以查询DBA_DATA_FILESDBA_TEMP_FILES视图获取 SWAP 表空间数据文件的基本信息。

示例

SELECT FILE_NAME,FILE_ID,TABLESPACE_NAME,BYTES,BLOCKS,STATUS,MAXBYTES,MAXBLOCKS,AUTO_EXTEND FROM DBA_DATA_FILES WHERE TABLESPACE_NAME='SWAP';
FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS MAXBYTES MAXBLOCKS AUTO_EXTEND ------------------------------------------- -------- --------------- --------- ------------ --------- ------------ ----------- ----------- /usr/local/yashandb/yasdb_data/dbfiles/swap 4 SWAP 67108864 8192 ONLINE 549755813888 67108864 ON /usr/local/yashandb/yasdb_data/dbfiles/swap01 8 SWAP 20971520 2560 ONLINE 549755813888 67108864 ON
SELECT FILE_ID,FILE_NAME,STATUS,BYTES,BLOCKS,RELATIVE_FNO,AUTOEXTENSIBLE,TABLESPACE_NAME,MAXBYTES,MAXBLOCKS FROM DBA_TEMP_FILES WHERE TABLESPACE_NAME='SWAP';
FILE_ID FILE_NAME STATUS BYTES BLOCKS RELATIVE_FNO AUTOEXTENSIBLE TABLESPACE_NAME MAXBYTES MAXBLOCKS ------- --------------------------------------------- ------- -------- ------- ------------ -------------- --------------- ------------ ---------- 4 /usr/local/yashandb/yasdb_data/dbfiles/swap ONLINE 67108864 8192 0 ON SWAP 549755813888 67108864 8 /usr/local/yashandb/yasdb_data/dbfiles/swap01 ONLINE 20971520 2560 1 ON SWAP 549755813888 67108864
复制代码

此外,还可查询V$TEMP_EXTENT_POOL动态视图获取当前 SWAP 表空间的 EXTENT 分配情况。

示例

SELECT TABLESPACE_NAME,FILE_ID,EXTENTS_CACHED,EXTENTS_USED,BLOCKS_CACHED,BLOCKS_USED,BYTES_CACHED,BYTES_USED,INTER_FNOFROM V$TEMP_EXTENT_POOLWHERE TABLESPACE_NAME='SWAP';
TABLESPACE_NAME FILE_ID EXTENTS_CACHED EXTENTS_USED BLOCKS_CACHED BLOCKS_USED BYTES_CACHED BYTES_USED INTER_FNO---------------------------------------------------------------- ------------ -------------- ------------ ------------- ----------- ------------ ----------- ------------SWAP 5 4747 4747 37976 37976 311099392 311099392 0SWAP 6 4592 4592 36736 36736 30094131
复制代码


发布于: 刚刚阅读数: 6
用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB SWAP表空间管理_数据库_YashanDB_InfoQ写作社区