目前我了解的数据库缓冲区作用是储存最近使用的查询语句,在这些语句再次被执行时直接返回结果。不知如此理解对不对。希望大神给出数据库缓冲区概念及作用比较正式的说法。
此外一般如何查看缓冲区数据或者如何统计数据库缓冲区使用情况?最好指出使用的工具。
数据库缓冲区概念,作用,以及查看工具
答案:2 悬赏:50 手机版
解决时间 2021-12-25 16:31
- 提问者网友:低吟詩仙的傷
- 2021-12-25 08:00
最佳答案
- 五星知识达人网友:忘川信使
- 2021-12-25 08:47
数据库缓冲区不是用来存储最近使用的查询语句的,是用来存储最近最长使用的数据的。例如你执行一个查询语句,该查询语句涉及的数据如果缓冲区中有,则会直接命中;如果没有就会读取相关数据文件,把相关的数据页面放入缓冲区,并返回给用户。数据的修改也是首先发生在缓冲区,然后由专门的进程写入数据文件。
如何查看缓冲区的使用情况要看你用的是哪个数据库产品,SQL Server还是Oracle。
如何查看缓冲区的使用情况要看你用的是哪个数据库产品,SQL Server还是Oracle。
全部回答
- 1楼网友:山君与见山
- 2021-12-25 10:23
日志缓冲区log_buffer是oracle专门用于存入重做日志的内存区域。
数据库启动时,可以看到:
sql> startup
oracle 例程已经启动。
total system global area 85006980 bytes
fixed size 453252 bytes
variable size 46137344 bytes
database buffers 37748736 bytes
redo buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
redo buffers就是分配给log_buffer的内存大小。
对日志缓冲区的大小,可以从下面的视图中查询的到:
sql> select * from v$parameter;
也可以
sql> show parameter log_buffer
name type value
------------------------------------ ----------- ------------------------------
log_buffer integer 524288
从这儿查询出的数据,是在配置文件中配置的数据,配置文件有:spfileora92.ora,initora92.ora等。
这个值和真实的日志缓冲区的大小不同。如果要知道真实的log_buffer的大小,可以用下面的方法查询:
sql> select * from v$sgastat where name ='log_buffer';
pool name bytes
----------- -------------------------- ----------
log_buffer 656384
上面的这个值,是oracle的sga实际分配给log_buffer的大小。
另外,还可以从 v$sga中查询:
sql> select * from v$sga;
name value
-------------------- ----------
fixed size 453252
variable size 46137344
database buffers 37748736
redo buffers 667648
这个值也就是oracle启动时分配给log_buffer的大小。
那这个值为什么和实际的大小有差别呢?
sql> select (667648-656384)/1024 ||'k' from dual;
(66
---
11k
相差11k,那这11k干什么用呢?
这11k是oracle为了保护log_buffer,分配出来的日志保护页。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯