那后面的查询的结果集会不会不是最新的?
Oracle 不会自动建立索引,之所以快是因为从内存中读取比disk IO要快的原因。
LZ的概念理解有误,我来举例说明下。
ORACLE data一般缓存在SGA中的data cache中 1.表A有10000条数据,在0:00时刻对其进行查询,则将表A的所有数据块从disk缓存至data cache中。因此第二次查询时直接从data cache中获得速度变快。 2.0:05时刻 对表A进行更新等操作,20000行。再次对表A进行查询,之前没有变化的数据块仍然直接从data cache中直接获得。发生过变更,或新增的数据块,需要重新从disk读入data cache中,如果data cache空间已满,就会将之前发生变更的脏数据块及不常使用的数据块清空出data cache,然后缓存新的数据块。 因此整个过程中,不会出现你说的只能查到缓存数据的现象。分析你遇到的问题,很有可能是你用userA 进行查询后发现表10000行,然后使用userB进行更新至20000行,但是userB并没有commit。因此userA在查询时仍然只能看到10000行。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有