DB2表空间

数据存储层级关系:数据库-->表空间-->容器-->表。

表空间分类:

目录表空间

特性:每个数据库只有一个目录表空间,它是在发出 CREATE DATABASE 命令时创建的.目录表空间被 DB2 命名为 SYSCATSPACE,

用途:它保存了系统目录表;

 

常规表空间

特性:创建数据库时指定该表空间的缺省名为 USERSPACE1。长表空间是可选的,缺省情况下一个都不创建,

用途:保存表数据和索引、还可以保存LOB之类的长数据;

 

系统临时表空间

特性:随数据库创建的系统临时表空间的缺省名为 TEMPSPACE1,

用途:用于存储 SQL 操作(比如排序、重组表、创建索引和连接表)期间所需的内部临时数据;

 

以上是由系统管理的空间(SMS),必须有一个

以下是由数据库管理的空间(DMS),可选

 

长表空间

用途:用于存储长型或 LOB 表列,存储结构化类型的列或索引数据

 

用户临时表空间

用途:存储已声明的全局临时表


表空间的几个重要概念:

一、合适的数据页大小pagesize

创建表空间时需要考虑页大小,可以使用4k,8k,16k,32k,64k。我们在选择数据页大小时需要综合考虑空间需求和业务类型(性能需求)来确定。

页面大小选择不当会造成空间浪费,最好选择大型表空间,大型表空间的一个数据页可以存放更多的容量和行数。

二、extendsize。扩张数据块大小。

extendsize大小指定在跳到下一个容器之前可以写入一个容器中的PAGESIZE页面的数量。存储数据时数据库管理器反复均衡所有容器。该参数只有在表空间中有多个容器时才起作用,选择合理的extendsize对表空间的性能影响很大,在建表空间的时候定义设定,之后不能修改。所以我们创建表空间时必须选择合理的extendsize。


三、DB2表空间的prefetchsize的大小设置和extendsize的设置大小有关,所以首先我们应该合理设置extendsize。

创建表空间:

最有效的表空间设置属性:PAGESIZE(表空间大小)、EXTENTSIZE(将数据写入到下一个容器之前写入到当前容器中的数据的页数) 和 PREFETCHSIZE(预取)

 

CREATE TABLESPACE 语句的示例

下列语句将创建一个常规表空间。所讨论的所有设置都是为了进行说明。

CREATE TABLESPACE USERSPACE3

PAGESIZE 8K

MANAGED BY SYSTEM

USING ('d:\\usp3_cont1', 'e:\\usp3_cont2', 'f:\\usp3_cont3')

EXTENTSIZE 64

PREFETCHSIZE 32

BUFFERPOOL BP3     --指定缓冲池

OVERHEAD 24.1

TRANSFERRATE 0.9

 

查看表空间

list tablespaces

查看表空间详情

list tablespaces show detail



1、查出需要增加的表空间名

db2 connect to dbname;


SELECT substr(varchar(t.SNAPSHOT_TIMESTAMP),1, 13) AS time,
t.TABLESPACE_ID,
substr(t.TABLESPACE_NAME,1, 30) AS TABLESPACE_NAME,
t.TOTAL_PAGES*t.PAGE_SIZE/1024/1024 AS TOTAL_MB_SIZE,
t.FREE_PAGES*t.PAGE_SIZE/1024/1024 AS FREE_MB_SIZE,
decimal (t.USED_PAGES,31, 3)/t.TOTAL_PAGES* 100 AS USAGE_PERCENT
FROM table(snapshot_tbs_cfg('dbname',-2)) AS t
WHERE t.TABLESPACE_TYPE= 0
ORDER BY t.TABLESPACE_ID


2、查出表空间的容器名

select* from SYSIBMADM.SNAPCONTAINER a where a.TBSP_ID=5-----假设TBSP_ID为5


3、增加表空间
ALTER TABLESPACE USERSPACE4 EXTEND ( FILE 'D:\testdb\dataspace\userspace4_01' 500); //假设为userspace4改变表空间文件大小
ALTER TABLESPACE USERSPACE4 ADD ( FILE 'D:\testdb\dataspace\USERSPACE4_02' 500); //增加表空间文件


4、数据库表空间使用率(小于70%)

db2 list tablespaces show detail

5、缓冲池的使用情况(命中率超过90%)

select bp_name,int((1-(decimal(pool_data_p_reads+pool_index_p_reads)/nullif((pool_data_l_reads+pool_index_l_reads),0)))*100) as BP_hit_ratio
from table (snapshot_bp('dbname',-1)) as snapshot_bp

6、排序堆溢出率(小于3%)

select db_name,sort_overflows  from table (snapshot_database('dbname',-1)) as snapshot_database

7、锁定升级次数(几乎总是0)

select db_name, lock_escals from table (snapshot_database('dbname',-1)) as snapshot_database


8、是否存在需要重组的表或索引 

SELECT 'LOAD QUERY TABLE '||TABNAME||';' FROM SYSCAT.TABLES WHERE TABSCHEMA='ADMINISTRATOR';
LOAD QUERY TABLE emp
表状态:
  REORG 暂挂
REORG TABLE emp
db2 reorgchk update statistics on table all
db2 terminate





9、如果存在性能问题则检查一下是否存在死锁

select db_name,deadlocks from table (snapshot_database('dbname',-1)) as snapshot_database

select 
 int(total_log_used/1024/1024) as "log used (meg)",
int(total_log_available/1024/1024) as "log space free (meg)",
int((float(total_log_used))/
       float(total_log_used+total_log_available)*100 ) 
           as "pct used",
int(tot_log_used_top/1024/1024) as "max log used (meg)",
int(sec_log_used_top/1024/1024) as "max sec. used (meg)",
int(sec_logs_allocated) as "secondaries"
from sysibmadm.snapdb	


DB2表空间监控:db2pd -d sample -tablespace



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DB2数据库中的表空间是用来存储表数据和索引的逻辑存储单元。当表空间中的数据过多或者不再需要时,需要进行清理以释放空间和提升数据库性能。 表空间的清理一般分为以下几个步骤: 1. 分析表空间:首先需要对数据库中的表空间进行分析,了解每个表空间的大小、使用率以及存储的数据类型等信息。通过这样的分析可以确定哪些表空间需要清理,以及清理的优先级。 2. 数据迁移:在清理表空间之前,需要先将表空间中的数据迁移至其他地方,可以是其他表空间或者其他存储介质。在数据迁移过程中需要保证数据的完整性和一致性,可以通过数据库自带的工具或者自行编写脚本来实现数据迁移。 3. 清空表空间:当数据迁移完成后,可以对需要清理的表空间进行清空操作。清空操作包括删除不再需要的数据、重建索引、释放未使用空间等一系列操作,可以通过数据库自带的工具或者编写脚本来实现。 4. 重建表空间:在清空完成后,可以根据实际需求来重新设计和构建表空间的结构,包括调整表空间的大小、重新分布数据、优化索引等操作。通过这样的重建可以提升表空间的性能和使用效率。 5. 监控和维护:在清理完成后,需要对表空间进行监控和维护,定期检查表空间的使用情况,及时清理不再需要的数据,以保证数据库的性能和稳定性。 总之,表空间的清理是数据库管理中的重要工作,通过合理的清理和维护可以提升数据库的性能和稳定性,减少不必要的资源浪费。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值