永发信息网

数据库缓冲区概念,作用,以及查看工具

答案:2  悬赏:50  手机版
解决时间 2021-12-25 16:31
  • 提问者网友:低吟詩仙的傷
  • 2021-12-25 08:00
目前我了解的数据库缓冲区作用是储存最近使用的查询语句,在这些语句再次被执行时直接返回结果。不知如此理解对不对。希望大神给出数据库缓冲区概念及作用比较正式的说法。
此外一般如何查看缓冲区数据或者如何统计数据库缓冲区使用情况?最好指出使用的工具。
最佳答案
  • 五星知识达人网友:忘川信使
  • 2021-12-25 08:47
数据库缓冲区不是用来存储最近使用的查询语句的,是用来存储最近最长使用的数据的。例如你执行一个查询语句,该查询语句涉及的数据如果缓冲区中有,则会直接命中;如果没有就会读取相关数据文件,把相关的数据页面放入缓冲区,并返回给用户。数据的修改也是首先发生在缓冲区,然后由专门的进程写入数据文件。
如何查看缓冲区的使用情况要看你用的是哪个数据库产品,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,分配出来的日志保护页。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯