gpt4 book ai didi

oracle - Oracle Database Architecture中的Segments, Extents, Data Blocks,如何使用?

转载 作者:行者123 更新时间:2023-12-05 03:14:14 27 4
gpt4 key购买 nike

在 Oracle 数据库体系结构中,有段、范围和数据 block 。

enter image description here

但是,作为一个程序员,我什么时候需要知道这些事情呢?例如,当我测试 Oracle 内存管理时,它们对我有何用处。

有没有办法查询这些内存单元?还是主要针对 dba 方面?谢谢

最佳答案

了解底层物理存储架构是件好事,因为它可以让您设计和编写更高效的数据库应用程序;但这不是绝对必要的。

段、范围和 block 是实现细节。

也就是说,您应该知道如何分析它们,并且您可以在没有 DBA 权限的情况下查看它们,初学者可以使用 USER_SEGMENTS 和 USER_EXTENTS View 。

段对于查看表/索引的低级存储很有用。您应该知道您的 table 有多大。

这是一个供初学者理解数据库或表空间中的对象的示例。

SQL> select segment_type, segment_name, bytes from user_segments
where segment_type in ('TABLE', 'INDEX') order by bytes desc


SEGMENT_TYPE SEGMENT_NAME BYTES
------------------ --------------------------------------------------------------------------------- ----------
TABLE BIG 209715200
TABLE FAKE 4194304
TABLE MD_TRIGGERS 262144
TABLE MD_DERIVATIVES 196608
INDEX IX_ZZ_NVL 196608
TABLE MD_PRIVILEGES 196608
INDEX MD_COLUMNS_PERF_IDX 131072
INDEX MD_DERIVATIVES_PERF_IDX1 131072
...

此查询的一个特殊用途是研究表和索引占用空间前后的情况,以了解重建的效果如何。例如,您可能会观察到在大范围表空间中有数百个小表,您可以用较小的初始范围重建这些表,并使用段 View 来查看效果如何。

我可以找到它们所在的表空间,并确定 BIG 可能是一个很好的表,可以从 USERS 表空间移出到更大范围的表空间。

SQL> select segment_type, tablespace_name, segment_name, bytes from user_segments
where segment_type in ('TABLE', 'INDEX') order by bytes desc;
2
SEGMENT_TYPE TABLESPACE_NAME SEGMENT_NAME BYTES
------------------ ------------------------------ --------------------------------------------------------------------------------- ----------
TABLE USERS BIG 209715200
TABLE USERS FAKE 4194304
TABLE USERS MD_TRIGGERS 262144
TABLE USERS MD_DERIVATIVES 196608

关于oracle - Oracle Database Architecture中的Segments, Extents, Data Blocks,如何使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26076377/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com