Oracle内存结构(02)--缓冲区
专供数据字典使用的缓冲区,SQL语句分析过程中需要大量访问系统数据字典(从磁盘数据文件中访问数据字典成为recursive calls),即可使用该缓存区专门存放数据字典,从而避免过多的recursive calls所带来的性能损失。数据字典是关于数据库的参考信息、数据库的结构信息、数据库的用户信息等各类信息描述的一组表和视图的集合。
数据字典用于描述所有数据库对象的数据库对象的集合。
SQL> select * from v$fixed_table; #查看系统中所有的动态表。
SQL> select * from dict; #查看数据字典。
SQL> select object_name,object_type,created from dba_objects where object_name in ('TEST','T1'); #从数据字典的dba_objects表中查询指定数据库对象的相关描述。
SQL> select * from dba_users; #从数据字典dba_users表中查询数据库用户的相关描述。
SQL> select * from dba_data_files;#从数据字典dba_data_files表中查询所有数据库文件的相关描述。
数据字典中表的分类:
静态表:对各类数据库对象的各类属性的描述,常见的有下面三类字母开头:
[*]dba_*:存储当前数据库中所有数据库对象的描述
[*]all_*:存储当前用户能够访问的数据对象的描述
[*]user_*:存储当前用户所拥有的数据库对象的描述
动态表:不断动态更新以反映数据库当前运行状况,常见以“v$”开头。
查看data dictionary cache的大小:
SQL> select sum(sharable_mem) from v$sqlarea;
测试的data dictionary cache作用:
SQL> set autot on stat #打开统计信息显示。
SQL> select count(*) from dba_source; #查询一张表。
COUNT(*)
----------
292167
Statistics
----------------------------------------------------------
312recursive calls #recursive calls 次数。
0db block gets
1998consistent gets
698physical reads
0redo> 413bytes sent via SQL*Net to client
385bytes received via SQL*Net from client
2SQL*Net roundtrips to/from client
6sorts (memory)
0sorts (disk)
1rows processed
SQL> select count(*) from dba_source; #再次查同一张表。
COUNT(*)
----------
292167
Statistics
----------------------------------------------------------
0recursive calls #可见recursive calls 次数明显减少。
0db block gets
1927consistent gets
0physical reads
0redo> 413bytes sent via SQL*Net to client
385bytes received via SQL*Net from client
2SQL*Net roundtrips to/from client
0sorts (memory)
0sorts (disk)
1rows processed
页:
[1]