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

这篇具有很好参考价值的文章主要介绍了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.文章来源地址https://www.toymoban.com/news/detail-671692.html

到了这里,关于DB2的系统数据表空间,用户数据表空间,系统临时表空间,用户临时表空间详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PHP分析二维数据表(长度|数字字段|空值|纯姓名|英文用户名|科学计数|是否等长|是否唯一)

    先看图,后有完整代码    仅供娱乐!

    2024年02月22日
    浏览(62)
  • Linux系统安装DB2数据库的详细步骤

    1、DB2数据库的安装 一、将DB2的安装介质上传至/home目录,并解压:    tar –zxvf v9.5fp3_linuxx64_server.tar.gz 二、执行LANG=C 三、进入解压后的server目录(cd server/),执行./db2setup,步骤如下: # cd /home # tar -zxvf v9.7_linuxx64_server.tar.gz # cd server/ # ./db2setup     请额外注意:这里选择 Do

    2024年02月08日
    浏览(48)
  • 用户案例 | 蜀海供应链基于 Apache DolphinScheduler 的数据表血缘探索与跨大版本升级经验

    蜀海供应链是集销售、研发、采购、生产、品保、仓储、运输、信息、金融为一体的餐饮供应链服务企业。2021年初,蜀海信息技术中心大数据技术研发团队开始测试用DolphinScheduler作为数据中台和各业务产品项目的任务调度系统工具。本文主要分享了蜀海供应链在海豚早期旧

    2024年02月10日
    浏览(41)
  • 商城管理系统的数据表从属关系+navicat建表操作+数据库文件转储并入代码操作

    1,商城管理系统的数据表从属关系 在商城管理系统中,我们会面临属性分组的问题,商品表与分类表需要建立链接; 在控制类中我们将分类表中属性类传过来,与商品值params建立链接 在service类中,我们写入判断key的语句; 由此我们可以建立商品表与属性表之间的链接 2,

    2024年02月01日
    浏览(66)
  • <DB2>《DB2数据库健康检查》第3部分

    检查点: 检查是否需要对表和所有进行runstats 检查方法: 示例: 检查点: 检查是否需要重组reorg 检查方法: ü 示例: 检查点: 查看表是否正常 检查方法: 示例 输出信息说明: □ 输出显示了模式名、表名、状态和表类型。 □ 在 SYSCAT.TABLES 中有项的所有用户定义的表的名

    2024年02月08日
    浏览(43)
  • 图书管理系统(Java实现,十个数据表,含源码、ER图,超详细报告解释,2020.7.11更新)...

    图书管理系统数据库设计实验报告 2020.7.11 修改了表的结构,表之间增加了外键联系,更加完整且符合第三范式。 数据库设计实验报告 疫情期间,大家都只能够在家里,不能去到学校,此时需要在图书馆借书,就是只能通过网络来操作了。因此,网上图书馆就此诞生了,有了

    2024年02月05日
    浏览(127)
  • 数据库实验2 创建数据表修改数据表和删除数据表

    实验2 创建数据表修改数据表和删除数据表 实验类型: ●验证性实验  ○综合性实验  ○设计性实验 实验目的:      (1)了解数据表的结构特点。      (2)掌握表中列定义时所用到的各种数据类型。      (3)学会使用企业管理器(即MSSMS-----Microsoft SQL Server Manag

    2024年02月07日
    浏览(81)
  • oracle数据表转换为mysql数据表

    oracle数据表转换为mysql数据表,或者反过来,我们可以借助navica的工具 1.打开navicat的工具-数据传输 2.选择源数据库以及目标数据库 目标可以选择数据库也可以选择文件,目标数据库需要提前建好表,这里是选择文件,注意选择一个文件,sql格式即为目标数据库类型,这里不

    2024年02月16日
    浏览(63)
  • MySql基础教程(三):创建数据表、数据增删改查、删除数据表

    创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 1.1 语法 下面是创建MySQL数据表的SQL通用语法: 以下例子在 nobug 数据库中创建数据表 nobug_user : 实例解析: 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,

    2024年02月11日
    浏览(69)
  • 实现一个MYSQL工具类,包含判断创建数据表是否存在,创建数据表

    可以使用Python的MySQLdb模块来实现一个MYSQL工具类。下面是一个简单的实现示例: 使用示例: 在上面的示例中,我们首先创建了一个MySQLTool类,并在初始化方法中传入了数据库的连接信息。然后使用connect方法连接到数据库。 table_exists方法用于判断给定的数据表是否存在,它执

    2024年01月15日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包