Oracle 12c 开启异步通信新阶段(oracle12c 队列)
Oracle 12c: 开启异步通信新阶段
Oracle 12c数据库引入了名为Asynchronous Global Index Mntenance(AGIM)的新特性,它允许数据库在执行数据更新操作时,不必等待全局索引的重建完成,而是采用一种异步方式更新全局索引。这一特性的引入,标志着Oracle数据库开启了一段全新的异步通信阶段。
在以往的版本中,为了保证全局索引和表数据相互保持一致,当表数据发生更改时,全局索引需要同时更新。而全局索引的更新,往往需要较长的时间,导致数据更新操作变得十分缓慢。而现在,引入AGIM,使得当数据更新操作完成后,可以成立异步的任务,另开线程进行全局索引的更新,从而大大提高了数据库的并行效率。
AGIM主要由两个部分构成:系统会将需要更新全局索引的数据块标记为invalid,然后在事务提交之前,将这些标记的块更新到全局索引中,并将它们重建为有效的数据块。全局索引重建时,Oracle会将一些变更转换成异步任务,异步任务会在互相独立的线程中异步执行。异步任务的异步执行,就是数据库中异步通信新阶段的具体体现。
除了提高了数据库的并行效率外,AGIM还在某种程度上降低了数据库出现锁的可能性。在往常的情况下,当需要更新全局索引时,数据库往往需要锁定相关的数据表,以保证更新操作的正确进行,但这种方式很容易引发死锁等问题。现在,AGIM的异步更新方式可以在一定程度上减少对数据库的加锁,从而保证数据库的高可靠性、高可用性。
AGIM的实现依赖于数据库中的一个队列,当数据更新操作完成后,会将需要更新全局索引的任务放入该队列中。如果该队列已满,则将任务以回滚事务的形式进行提交,等待空闲的队列空间。当队列空间空闲时,会立即执行这些异步任务,以保证全局索引和数据表间的数据一致性。
下面是一个使用AGIM的示例代码:
CREATE TABLE employees_new
AS SELECT * FROM employees;
--创建全局索引CREATE INDEX emp_name_idx ON employees_new(last_name, first_name);
--启动AGIMALTER SESSION SET INMEMORY_FORCE=DEFAULT;
ALTER TABLE employees_new MODIFY ( last_name DEFAULT "unknown" NOT NULL
);COMMIT;
--查询任务是否已完成SELECT log.mesg_text FROM v$bg_async_io agg, v$bg_async_io_msgs log
WHERE agg.req_id = log.req_id AND log.mesg_date SYSDATE - 5/1440
AND log.mesg_text LIKE "Index Build%";
--查看任务执行情况SELECT owner_name, table_name, background_comp_task, created_date, state
FROM dba_background_comp_tasks WHERE table_name = "EMPLOYEES_NEW"
ORDER BY created_date DESC;
AGIM的引入标志着Oracle数据库进入了新的异步通信阶段,使得数据库的并行效率、可用性和可靠性得到了更进一步的提高。在实际应用中,我们可以将AGIM应用于不同的场景中,以便更好地使用Oracle数据库的各种优秀特性。
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 Oracle 12c 开启异步通信新阶段(oracle12c 队列)
相关文章
- ORA-39765: stream must be reset before used in a column array conversion ORACLE 报错 故障修复 远程处理
- Oracle 视图 USER_PROCEDURES 官方解释,作用,如何使用详细说明
- 深入理解Oracle中的中文索引(oracle中文索引)
- 命令使用Oracle的SPOOL命令轻松输出查询结果(oracle的spool)
- 使用 Oracle 插入单引号的指南(oracle插入单引号)
- 提升效率:Oracle分区查询数据实践(oracle分区查询数据)
- Oracle密码超时:如何重置密码(oracle密码过期了)
- 探索Oracle触发器类型:从A到Z(oracle触发器类型)
- Oracle如何返回当前日期的星期几?(oracle返回星期几)
- Oracle 异步技术:提升数据库性能的关键(oracle异步)
- 深入理解Oracle队列,提升系统处理效率(oracle队列)
- 深入浅出:Oracle数据库同步机制实现(oracle 数据库同步)
- Oracle培训合同——打造经典的学习伙伴(oracle培训合同)
- 月之神谕预知未来(lunar oracle)
- C语言与Oracle异步数据处理的探究(c oracle 异步)
- Oracle掌控利用Geode构建高可用体系(geode oracle)
- 防范Oracle主备库延迟一种实践性策略(oracle 主备库延迟)
- Oracle临时表实现数据处理的利器(oracle临时虚表)
- Oracle数据库实现人名脱敏技术(oracle 人名脱敏)
- 使用Oracle事务队列获得数据一致性(oracle 事务队列)
- Oracle消息队列的实际应用(oracle使用消息队列)
- 管理Oracle作业队列,增强企业执行力(oracle 作业队列)
- Oracle新增字段让你更轻松记录信息(oracle中新加字段)
- 的设置Oracle数据库中REUSE选项的设置方法(oracle中reuse)
- Oracle比较两个日期的差异(oracle两个日期)
- 利用Oracle统计数据,加快企业数据分析(oracle stats)
- Oracle SQL中最多的数量统计实例(oracle sql数量)
- Oracle Job队列值得信赖的调度服务(oracle job队列)
- Oracle EM13C实现数据库运维异步自动化(oracle em13c)