根据informix的语法手册,create temp table或者select ... into temp语句,会显式创建临时表,如果在语句中没有包含存放位置子句的话,临时表的存放位置应该放在环境变量DBSPACETEMP或者ONCONFIG 参数DBSPACETEMP所指定的Dbspace中。
但是在实践中,发现事实并非如此,如果create temp table没有带with no log子句,那么该临时表不会放到DBSPACETEMP所指定的Dbspace,而是放到informix的系统Dbspace——rootdbs。
经过查询资料,终于弄明白原因所在。
通常用户创建的Dbspaces(相当于oracle中的tablespace)都是带日志功能的,但临时类型Dbspace(创建时指定Temp标志为Y)例外,是不带日志功能的。
创建临时表时,如果没有指定with no log子句,那么informix就会根据表所在数据库的日志模式,来设定表的日志模式。大多数情况下,我们用户为了保证数据可靠性,都会开放数据库日志模式。于是,informix只能选择那些带日志功能的Dbspaces来存放临时表,而不幸的是,管理员总是把一些临时类型Dbspace列在 DBSPACETEMP变量中。这就出现——虽然指定DBSPACETEMP,但informix仍然把临时表放在rootdbs的问题。
解决方法就是在DBSPACETEMP变量中,添加一些非临时类型的Dbspace(临时和非临时Dbspaces可以共存)。
另:DBSPACETEMP变量应该还要放一些临时类型的Dbspace,用于那些非显式生成临时表的情况,例如:大表join,排序等等。
分享到:
相关推荐
`-p` 选项不检查临时表,`-s` 将数据库置为静模式。`-i` 选项会初始化磁盘空间,这应谨慎使用,因为它可能清除所有数据。 例如: ``` oninit oninit -s ``` **三、onload 命令** `onload` 命令用于创建数据库或表...
`oninit`可以启动服务器,`oninit -p`启动时不搜索临时表,提高启动速度。`oninit -s`或`-is`将服务器初始化到静默(quiescent)状态,意味着所有活动都会停止,等待进一步操作。 3. **onload**:此命令用于加载...
本文将详细介绍如何操作Informix数据库,包括查看数据库实例名、新建数据库、查看表空间、使用dbschema工具进行数据库对象导出以及数据库和数据表的导入导出操作。 首先,查看数据库实例名,可以通过 Informix 的 ...
可选的选项包括 `-p`(不检测临时表)和 `-s`(将数据库转为静模式)。 例如: - `oninit` 初始化并启动数据库。 - `oninit -s` 初始化并启动数据库,然后将其置于静模式。 **三、onload** onload用于创建数据库...
磁盘空间、磁盘chunk状态和临时表空间是数据库稳定运行的硬件保障,需要定期检查确保数据库有足够的存储空间以及合理地利用存储资源。 4. 其他注意事项 由于文档是通过OCR技术扫描形成的,可能会存在识别错误或者...
10. **高可用性与复制技术**:了解Informix的镜像、全局临时表、Hot Standby和Informix Dynamic Server (IDS)复制等高可用性解决方案。 11. **Informix的扩展功能**:如XML支持、大数据处理、时空数据管理等,这些...
TEMP 参数指定是否创建临时表。 例: ```sql CREATE TABLE user (c0 serial NOT NULL, c1 char(10), c2 char(2), c3 smallint, c4 decimal(6,3), c5 date) IN “/usr/john/customer.dbs/user” ``` 六、修改表结构...
Migration Workbench是用于数据库迁移的工具,可以帮助进行方案对象的转换,比如数据库、表空间、用户、表、全局临时表、PL/SQL过程和函数等。 6. **方案对象和数据类型的比较** Oracle与Informix的数据库对象有...
本文将深入探讨如何在 Informix 中进行基本的数据库操作,包括查看数据库实例名、创建数据库、查看表空间、使用 dbschema 工具以及数据库的导入和导出。 1. **查看数据库实例名** 使用 `dbaccess` 工具可以查看 ...
- oninit:将系统从离线模式转换到在线模式,或者从静止模式转换到离线或静止模式,还可以执行其他操作,如清理临时表。 - onmode:用于改变系统模式,如立即关闭、从静止模式切换到在线模式,或者执行检查点和日志...
在某些情况下,数据库会自动创建临时索引来加速查询过程。这种扫描方式通常适用于那些频繁进行简单查询的应用程序,因为自动索引可以减少查询时间,尽管可能会增加维护成本。 #### 四、连接策略分析 在多表查询中...
这将保留临时表,避免回收临时表对数据库的影响。 * oninit -s:初始化共享内存,留在静默模式下。这将数据库服务器启动到单用户模式,方便维护工作。 * oninit:正常启动数据库。 * oninit -v:正常启动数据库,并...
`TEMP`关键字用于创建临时表,表名和字段名必须唯一,指定`IN "pathname"`可以指定表的存储位置。 6. **修改表结构**: `ALTER TABLE`语句用于修改已存在的表结构,包括添加、删除和修改列: ```sql ALTER ...
当你需要对大量数据进行排序或连接时,可以先将数据 SELECT 到内存中的临时表,再进行后续操作。例如,将两个表的连接结果存储到临时表后再排序,可以显著提高执行速度。 2. **使用 `NOT IN` 或 `NOT EXISTS`** ...
优化器会生成一个或多个查询计划,每个计划都包含一系列操作,如表的扫描顺序、索引的选择、以及是否使用临时表等。IDS优化器使用成本模型来估计每个计划的成本,并选择成本最低的计划来执行查询。成本模型通常考虑...
- 每天应检查数据库运行状态,监控性能指标,清理无用的临时表和日志,以及执行必要的备份操作。 5. **平时定期和不定期做的工作有哪些?** - 定期工作包括更新统计信息、维护索引、优化查询等;不定期工作可能...
`TEMP`关键字用于创建临时表,仅对当前会话可见。 `ALTER TABLE`语句用于修改已存在的表结构。例如,`ALTER TABLE user ADD (c6 char(20) before c5);`将向`user`表添加一个新字段`c6`。`ADD`, `DROP`, `MODIFY`...