网站建设公司报价,电子网络工程建设范围,成安网站建设,网络设计什么学历一般可以参考DB2 information center的官方文档#xff1a;https://www.ibm.com/docs/zh/db2/10.5?topicspaces-table-system-user-temporary-data 每个数据库都必须要有最小的一组表空间#xff0c;这些表空间用于存储系统数据、用户数据和临时数据。
一个数据库至少必须包含三…可以参考DB2 information center的官方文档https://www.ibm.com/docs/zh/db2/10.5?topicspaces-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不足时溢出到临时表空间对应的bufferpoolbuffpool再不足时溢出到磁盘。如果想看数据是否使用了系统临时表空间、使用了多少直接db2 list tablespaces show detail 看看系统临时表空间的Used pages即可, 或者db2top 进去看表空间按 t 再看系统临时表空间上是否有Writes。 创建用户临时表空间测试
[db2inst1t3-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. SQLSTATE428EK [db2inst1t3-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. SQLSTATE42727 [db2inst1t3-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
[db2inst1t3-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. SQLSTATE428CB
[db2inst1t3-dtpoc-dtpoc-web04 liys]$ db2 create user TEMPORARY tablespace TEMPSPACE2 pagesize 32 K bufferpool BP32K DB20000I The SQL command completed successfully. [db2inst1t3-dtpoc-dtpoc-web04 liys]$ db2 DECLARE GLOBAL TEMPORARY TABLE employee1 (id int) DB20000I The SQL command completed successfully. [db2inst1t3-dtpoc-dtpoc-web04 liys]$ db2 DECLARE GLOBAL TEMPORARY TABLE employee2 (id int) in TEMPSPACE2 DB20000I The SQL command completed successfully.