DB2的系统数据表空间,用户数据表空间,系统临时表空间,用户临时表空间详解

可以参考DB2 information center的官方文档:https://www.ibm.com/docs/zh/db2/10.5?topic=spaces-table-system-user-temporary-data
每个数据库都必须要有最小的一组表空间,这些表空间用于存储系统数据、用户数据和临时数据。

一个数据库至少必须包含三个表空间:
目录表空间
一个或多个用户表空间
一个或多个临时表空间
目录表空间
目录表空间包含数据库的所有系统目录表。此表空间称为 SYSCATSPACE,它不能被删除。
用户表空间
用户表空间包含用户定义的表。缺省情况下,将创建一个用户表空间 USERSPACE1。
如果创建表时未对其指定表空间,那么数据库管理器将自动进行选择。有关更多信息,请参阅 CREATE TABLE 语句的 IN tablespace-name 子句的文档。

表空间的页大小确定了表中的最大行长度或列数。CREATE TABLE 语句的文档说明了页大小与最大行大小和列数之间的关系。在 V9.1 之前,缺省页大小为 4 KB。在 V9.1 及其后续版本中,缺省页大小可以是其他受支持的值中的一个。缺省页大小是在创建新的数据库时声明的。声明了缺省页大小之后,仍然可以使用具有一种页大小的表空间作为表,而使用具有另一种页大小的另一个表空间来存储长型数据或 LOB 数据。如果列数或行大小超过表空间页大小的限制,那么返回一个错误(SQLSTATE 42997)。

临时表空间
临时表空间包含临时表。临时表空间可以是系统临时表空间或用户临时 表空间。
系统临时表空间存放数据库管理器在执行诸如排序或连接之类的操作时所需的临时数据。这些类型的操作需要额外的空间来处理结果集。数据库必须有至少一个系统临时表空间;在缺省情况下,创建数据库时会创建一个名为 TEMPSPACE1 的系统临时表空间。

处理查询时,数据库管理器可能需要访问页大小足以处理与查询相关的数据的系统临时表空间。例如,如果查询返回的数据包含长度为 8KB 的行,并且没有页大小至少为 8KB 的系统临时表空间,那么该查询将失败。您可能需要创建具有更大页大小的系统临时表空间。通过定义页大小等于用户表空间的最大页大小的临时表空间,可以帮助您避免这些类型的问题。

用户临时表空间存放使用 DECLARE GLOBAL TEMPORARY TABLE 或 CREATE GLOBAL TEMPORARY TABLE (DGTT(DECLARE GLOBAL TEMPORARY TABLE)/CGTT(CREATE GLOBAL TEMPORARY TABLE)) 语句创建的表的临时数据。缺省情况下,创建数据库时不会创建这些表空间。它们还存放已创建临时表的实例化版本。为了能够定义已声明临时表或已创建临时表,至少一个用户临时表空间应该是使用相应 USE 特权创建的。USE 特权是使用 GRANT 语句授予的。

如果数据库使用多个临时表空间,并且需要新的临时对象,那么优化器将为此对象选择相应的页大小。然后将把该对象分配到具有相应页大小的临时表空间中。如果存在多个具有该页大小的临时表空间,那么将以循环方式来选择表空间,即,先选择具有该页大小的表空间,然后为将要分配的下一个对象选择下一个表空间并依此类推,直到用尽所有合适的表空间后回到第一个表空间。但是,在大多数情况下,建议您不要创建多个具有相同页大小的临时表空间。


临时表的创建和维护?

在做复杂业务分析时,一个存储过程也会用到很多临时表(存储业务分析某一步的中间结果),这些表的数据经常变化(每个周期都会被清空再装入),还需要和别的表做关联,那么这种表在建表的时候有什么要注意的吗?为了提升程序性能,优化时考虑这些表吗?要建立索引吗?runstats应该保持在什么状态?需要reorg吗?


分享一:

这些临时表不是会话表(DGTT 或 CGTT)吧?如果每次调用存储过程生成的临时表数据变化都比较大,建议在存储过程中搜集统计信息(调用sysproc.admin_cmd('runstats on table <临时表>'),因为临时表每次调用一般都清空,没有必要reorg;建不建索引,具体看表关联的需要,存储过程一般是加工数据的,临时表一般不需要建索引。另外,建议将存储过程对应的package绑定成 REOPT ALWAYS的,这样每次调用该存储过程都会根据最新的统计信息生成新的执行计划,通常也会提高性能。

分享二:
1)如果是DGTT(DECLARE GLOBAL TEMPORARY TABLE)/CGTT(CREATE GLOBAL TEMPORARY TABLE),则一般不必对其建立index,也不需对其进行runstats、reorg,因为DB2查询优化器在每次分析和执行SQL时,都会对包含DGTT/CGTT的SQL进行重新优化并且生成新的最优access plan。

分享三:
在排序、表关联等处理时会用到系统临时表空间,顺序是Sortheap不足时溢出到临时表空间对应的bufferpool,buffpool再不足时溢出到磁盘。如果想看数据是否使用了系统临时表空间、使用了多少,直接db2 list tablespaces show detail 看看系统临时表空间的Used pages即可, 或者db2top 进去看表空间(按 t ),再看系统临时表空间上是否有Writes。


创建用户临时表空间测试:

[db2inst1@t3-dtpoc-dtpoc-web04 liys]$ db2 "DECLARE GLOBAL TEMPORARY TABLE temp.employee1 (id int)"
DB21034E  The command was processed as an SQL statement because it was not a 
valid Command Line Processor command.  During SQL processing it returned:
SQL0079N  The Schema name for the declared global temporary table or index 
"EMPLOYEE1" must be SESSION, not "TEMP".  SQLSTATE=428EK
[db2inst1@t3-dtpoc-dtpoc-web04 liys]$ db2 "DECLARE GLOBAL TEMPORARY TABLE employee1 (id int)"     
DB21034E  The command was processed as an SQL statement because it was not a 
valid Command Line Processor command.  During SQL processing it returned:
SQL0286N  A table space could not be found with a page size of at least "4096" 
that authorization ID "DB2INST1" is authorized to use.  SQLSTATE=42727
[db2inst1@t3-dtpoc-dtpoc-web04 liys]$ db2pd -d test1 -tablespaces

Database Member 0 -- Database TEST1 -- Active -- Up 0 days 02:05:34 -- Date 2023-08-25-16.40.27.261485

Tablespace Configuration:
Address            Id    Type Content PageSz ExtentSz Auto Prefetch BufID BufIDDisk FSC NumCntrs MaxStripe  LastConsecPg RSE  Name
0x00007FBF8F81CD40 0     DMS  Regular 4096   4        Yes  4        1     1         Def 1        0          3            Yes  SYSCATSPACE
0x00007FBF8F829EE0 1     SMS  SysTmp  4096   32       Yes  32       1     1         On  1        0          31           No   TEMPSPACE1
0x00007FBF9535F040 2     DMS  Large   8192   32       Yes  32       2     2         Def 1        0          31           Yes  TSP8K
0x00007FBF8F844220 3     DMS  Large   4096   4        Yes  4        1     1         Def 1        0          3            Yes  SYSTOOLSPACE
0x00007FBF9536D260 4     DMS  Large   16384  32       Yes  32       3     3         Def 1        0          31           Yes  TSP16K
0x00007FBF9537B260 5     DMS  Large   32768  32       Yes  32       4     4         Def 1        0          31           Yes  TSP32K
0x00007FBF9539E0A0 6     DMS  Large   32768  32       Yes  32       4     4         Def 1        0          31           Yes  TSP32K02
0x00007FBF953AB240 7     DMS  Large   32768  32       Yes  32       4     4         Def 1        0          31           Yes  TSP32K03
0x00007FBF953B83E0 8     DMS  Large   32768  32       Yes  32       4     4         Def 1        0          31           Yes  TSP32K04

[db2inst1@t3-dtpoc-dtpoc-web04 liys]$ db2 "create user TEMPORARY tablespace TEMPSPACE2 pagesize 32 K"
DB21034E  The command was processed as an SQL statement because it was not a 
valid Command Line Processor command.  During SQL processing it returned:
SQL1582N  The PAGESIZE of the table space "TEMPSPACE2" does not match the 
PAGESIZE of the bufferpool "IBMDEFAULTBP" associated with the table space.  
SQLSTATE=428CB

[db2inst1@t3-dtpoc-dtpoc-web04 liys]$ db2 "create user TEMPORARY tablespace TEMPSPACE2 pagesize 32 K bufferpool BP32K"
DB20000I  The SQL command completed successfully.
[db2inst1@t3-dtpoc-dtpoc-web04 liys]$ db2 "DECLARE GLOBAL TEMPORARY TABLE employee1 (id int)"        
DB20000I  The SQL command completed successfully.
[db2inst1@t3-dtpoc-dtpoc-web04 liys]$ db2 "DECLARE GLOBAL TEMPORARY TABLE employee2 (id int) in TEMPSPACE2"
DB20000I  The SQL command completed successfully.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/52146.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

丰田中国vs中国丰田:一次历史性的战略探讨

比亚迪、长城、奇瑞等中国汽车品牌表现优异&#xff0c;让原本处于领先地位的日系、美系、德系等合资品牌面临压力&#xff0c;市场份额遭受前所未有的全新挑战。 东风雷诺、广汽菲克、广汽讴歌等逐渐退出中国市场&#xff0c;丰田也面临销售下滑。在中国汽车市场全新竞争格局下…

Qt跨平台无边框窗口探索记录

一、前言 实现的效果为&#xff1a;通过黑色矩形框预操作&#xff0c;鼠标释放时更新窗口。效果图如下&#xff1a; 1.功能 1.1 已实现功能 8个方向的缩放标题栏拖动标题栏双击最大化/正常窗口窗口最小尺寸预操作框颜色与背景色互补多屏幕默认标题栏 1.2 待开发功能 拖动到…

SQL-Injection

文章目录 引入columns表tables表schemata表以sqli-labs靶场为例路径获取常见方法文件读取函数文件写入函数防注入 数字型注入(post)字符型注入(get)搜索型注入xx型注入 引入 在MYSQL5.0以上版本中&#xff0c;mysql存在一个自带数据库名为information_schema,它是一个存储记录…

macOS - 上编译运行 risc-v (spike)

文章目录 一、说明二、安装步骤三、测试 一、说明 本文根据以下文章改编&#xff1a; RISC-V 环境配置 https://decaf-lang.github.io/minidecaf-tutorial/docs/step0/riscv_env.html 相关链接&#xff1a; riscv-gnu-toolchain GNU toolchain for RISC-V, including GCC ht…

YOLOV1

YOU ONLY LOOK ONCE

常见设计模式学习+面试总结

一 设计模式简介 二 面试总结 1 什么是单例模式&#xff1f;都有哪些地方用到单例&#xff1f; 内存中只会创建且仅创建一次对象的设计模式&#xff0c;保证一个类只有一个实例&#xff0c;并且提供一个访问该全局访问点。 应用场景&#xff1a; 网站的计数器&#xff0c;一般…

学习ts(六)数据类型(元组、枚举、Symbol、never)与类型推论

1.元组 元组&#xff08;Tuple&#xff09;是固定数量的不同类型的元素的组合。是数组的变种。 元组与集合的不同之处在于&#xff0c;元组中的元素类型可以是不同的&#xff0c;而且数量固定。元组的好处在于可以把多个元素作为一个单元传递。如果一个方法需要返回多个值&…

生成式人工智能的潜在有害影响与未来之路(三)

产品责任法的潜在适用 背景和风险 产品责任是整个二十世纪发展起来的一个法律领域&#xff0c;旨在应对大规模生产的产品可能对社会造成的伤害。这一法律领域侧重于三个主要危害&#xff1a;设计缺陷的产品、制造缺陷的产品和营销缺陷的产品。产品责任法的特点有两个要素&…

R包开发1:RStudio 与 GitHub建立连接

目录 1.安装Git 2-配置Git&#xff08;只需配置一次&#xff09; 3-用SSH连接GitHub(只需配置一次) 4-创建Github远程仓库 5-克隆仓库到本地 目标&#xff1a;创建的R包&#xff0c;包含Git版本控制&#xff0c;并且能在远程Github仓库同步&#xff0c;相当于发布在Github。…

C语言练习2(巩固提升)

C语言练习2 选择题 前言 “志之所趋&#xff0c;无远弗届&#xff0c;穷山距海&#xff0c;不能限也。”对想做爱做的事要敢试敢为&#xff0c;努力从无到有、从小到大&#xff0c;把理想变为现实。要敢于做先锋&#xff0c;而不做过客、当看客&#xff0c;让创新成为青春远航的…

xshell 学习记录

xshell 检查config目录是否在当前目录下存在 current_directory$(pwd) if [ -d "$current_directory/config" ]; then echo "config目录存在于当前目录。" else echo "config目录不存在于当前目录。" fi xshell检查某个端口是否被占用…

HTML 网页中 自定义图像单击或鼠标悬停时放大

HTML 网页中 自定义图像单击或鼠标悬停时放大 一&#xff1a;在悬停时更改 HTML 图像的大小 例子中&#xff0c;使用 CSS 样式&#xff1b;来设置每个图像元素的高宽 200px&#xff1b;以及 10px 边距&#xff0c;以便在图像周围留出空间。 使用 CSS 的 :hover 属性来添加悬停效…

EFCore常见用法

EFCore官方文档置顶&#xff0c;看这个就行。下面的内容只是总结&#xff0c;算是备忘录。 一、创建和删除 //1、创建数据库和表 db.Database.EnsureCreated();//将创建数据库&#xff08;如果不存在&#xff09;并初始化数据库架构。 如果存在任何表 (包括另一 DbContext 类)…

概念解析 | 电磁计算的新篇章:智能电磁计算

注1&#xff1a;本文系“概念解析”系列之一&#xff0c;致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是&#xff1a;智能电磁计算。 电磁计算的新篇章&#xff1a;智能电磁计算 随着人工智能的飞速发展&#xff0c;我们正处在一个信息爆炸的时代。各个领域&a…

图为科技-边缘计算在智慧医疗领域的作用

边缘计算在智慧医疗领域的作用 随着科技的进步&#xff0c;智慧医疗已成为医疗行业的重要发展趋势。边缘计算作为新兴技术&#xff0c;在智慧医疗领域发挥着越来越重要的作用。本文将介绍边缘计算在智慧医疗领域的应用及其优势&#xff0c;并探讨未来发展方向。 一、边缘计算…

matlab使用教程(19)—曲线拟合与一元方程求根

1.多项式曲线拟合 此示例说明如何使用 polyfit 函数将多项式曲线与一组数据点拟合。您可以按照以下语法&#xff0c;使用 polyfit 求出以最小二乘方式与一组数据拟合的多项式的系数 p polyfit(x,y,n), 其中&#xff1a; • x 和 y 是包含数据点的 x 和 y 坐标的向量 …

laravel中Mail发送邮件失败,但是没有错误信息,该如何调试?

在Laravel中&#xff0c;当使用Mail类发送邮件失败但没有错误信息显示时&#xff0c;可以按照以下步骤进行调试&#xff1a; 检查日志文件&#xff1a; Laravel会记录各种应用程序活动和错误信息。查看应用程序的日志文件&#xff0c;通常位于storage/logs目录下&#xff0c;寻…

Git笔记--分支常用命令

目录 1--git branch -v 2--git branch 3--git checkout 4--git merge 1--git branch -v git branch -v git branch -v 用于查看分支版本&#xff1b; 2--git branch git branch xxxxx # xxxxx表示分支名 git branch 用于创建分支&#xff1b; 3--git checkout git check…

搭建一个spring框架(基于spring.formwork的@Configuration和@Bean注解搭建)

使用 Spring Framework的注解方式来搭建 Spring 框架&#xff0c;以下是基本步骤&#xff1a; **步骤 1&#xff1a;准备开发环境** 确保你的开发环境中有 Java 开发工具&#xff08;如 JDK&#xff09;和一个集成开发环境&#xff08;IDE&#xff09;。 **步骤 2&#xff1…

uniapp 安卓平台签名证书(.keystore)生成

安装JRE环境 下载jre安装包&#xff1a;https://www.oracle.com/java/technologies/downloads/#java8安装jre安装包时&#xff0c;记录安装目录(例:C:\Program Files\Java\jdk-20)打开命令行&#xff08;cmd&#xff09;&#xff0c;将JRE安装路径添加到系统环境变量 d: se…