首页 > 编程知识 正文

lsattr命令详解,oracle中char和varchar区别

时间:2023-05-05 02:03:13 阅读:167223 作者:2082

3358 blog.csdn.net/Robinson 1988/article/details/5982996

根据这篇文章

那么,增加这些AUX List到底是什么呢? 数据库启动后,Buffer首先存储在LRU AUX List中。

用户进程搜索Free Buffer是从LRU AUX List的结束/结尾开始的。

当修改这些块时,或者当用户进程尝试构建CR块时(尝试构建CR块表示该块不满足读取一致性,并且为Dirty )。

LRU aux列表上的缓冲区被移动到LRU主列表的中间。

记住,中间不是头,也不是末尾,

DBWR搜索Dirty Buffer可以从LRU主列表开始(注意: DBWR搜索LRU主列表是因为增量检查点)。

当DBWR搜索LRU Main List时,如果它找到了一个冰冷的可复用Buffer,

将其移动到LRU aux列表中。 这样,在LRU Main List中搜索的Buffer几乎都是Dirty Buffer,从而提高了搜索效率。

DWR会将搜索到的Dirty Buffer移动到原始主列表中,如果需要导出该Dirty Buffer,请单击,

将此Dirty Buffer移动到lruw aux列表。 然后,可以在DBWR执行导出时从LRUW AUX List中导出。

这实际上是异步导出机制。 (知识源Metalink: 157868.1 )

这里没有提到ckpt-q,但是这里的写入写为LRUW AUX List

3358 space.itpub.net/9842/view space-399668

根据这篇文章

排队的是与脏块对应的buffer header。

每次写入脏块时,DBWR都会从检查点队列中扫描脏块。

将这些脏数据块实际写入数据文件。

写入完成后,DBWR将从检查点队列中删除写入数据文件的脏块。

这样,即使在巨大的buffer cache下工作,CKPT也可以快速确定哪些脏块写入了数据文件。

只要检查点队列中的数据块是未写入数据文件的脏数据块,则未写入数据文件的数据块是显而易见的

当DBWR在主LRUW链表中查找更新已完成且正在等待写入数据文件的buffer header时,

当找到的buffer header的数量超过一定限度时(由隐藏参数: _db_writer_scan_depth_pct决定),

DWR不再继续向下扫描,转到次LRUW链表中的脏块并写入数据文件。

这是同一篇文章,但关于如何写肮脏数据的说法也不一样。

真的困惑了吗?

3358 www.Oracle fans.cn/forum/show topic.JSP? rootid=35493CPages=1

根据这篇文章

在进行正常的CHECKPOINT操作时,CKPT进程会找到CKPT链的开头,将CKPT QUEUE传递给DBWR,DBWR组织CHECKPOINT DBWR批处理,然后DBWR进程开始写入操作。 由于CKPT QUEUE是按照LOW RBA的顺序排序的,因此在进行CHECKPOINT的DBWR完成写入操作后,CKPT进程将对文件和相关的标头的SCN数据进行更高的控制,并记录此次的CKPT操作的结果。

由于ckpt队列上的缓冲区可能在LRU链上,也可能在LRU-W链上,因此在组织DBWR批时,LRU链上的缓冲区是否拆下并放入LRU-W,这些算法目前正在验证

也不知道怎么写。

到底写数据时是什么样的算法呢?

bmdgtx,你能告诉我吗?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。