翻译日志缓存(The log cache)

日志缓存(The log cache)

节译自:Microsoft SQL Server 2012 Internals P177(译注:本节是2012版本新增)

就像数据页在写入磁盘之前会先写入数据缓存(data cache)一样,SQL Server会在物理写入磁盘之前先缓存日志记录。64位系统中,日志缓存最多包含128个项;32位系统中,则最多包含32个项。每个项含有一个缓冲器(buffer)用来存储日志记录——在它们作为一整个块(block)写入磁盘之前。虽然块的大小从512字节至60KB,但是因为缓冲器(Buffer)能容纳的最大的潜在块,所以缓冲器(buffer)总是60KB。实际分配的缓冲器数目(译注:即不是所有的项都被用到)根据实际的工作负荷和日志磁盘的性能来决定。当日志缓冲器(buffer)被写入到磁盘后,SQL Server会重新使用这个缓冲器。如果写入过程占用时间较长,那么就需要分配更多的缓冲器(buffer);如果写入过程很快完成,那么就只需要很少的缓冲器(buffer)就够了。由于一次日志写入最多可以是4M大小,所以如果你的的工作会产生大的日志块,那么你就比产生小日志块的工作需要较少的缓冲器(buffer)了。

SQL Server 2012引进了一种新的结构用来管理缓存日志块——日志池(the log pool)。日志池是一个根据块ID(block id)和数据库ID (database id)进行散列计算的散列表(hash table)。日志池允许SQL Server为各种不同技术存取日志记录集(sets of log records)。比如,复制代理(replication agents)需要存取已复制事务的日志集、镜像(mirroring)和复制管理器(replica manager)需要存取事务日志来进行镜像和复制,等等。如果你检索DMV列表,你会发现7个DMV涉及到日志池。尽管实际已缓存日志块有一个全局散列表,但是因为每个数据库管理它自己的日志,所以元数据(metadata)指向了日志池管理器——该管理器管理它们自己的日志记录和一个它们数据库的空的日志buffer的空池。

时间: 2024-10-14 16:59:57

翻译日志缓存(The log cache)的相关文章

Linux 小知识翻译 - 「日志」(log)

这次聊聊「日志」. 「日志」主要指系统或者软件留下的「记录」.出自表示「航海日志」的「logbook」. 经常听说「出现问题的时候,或者程序没有安装自己预期的来运行的时候,请看看日志!」. 确实,记录了系统和软件详细运行情况的「日志」是信息的宝库,通过日志来解决问题的事例也非常多. 但事实上,「无论如何也不会看日志」的用户也有很多.理由很简单,日志的信息量非常大,全部用眼睛来看的话是非常吃力的. 而且,英语写的日志也会让英文不好的人敬而远之. 虽说「要养成用眼睛来看日志的习惯」,但实行起来却非常

【翻译自mos文章】禁止写入日志到Sqlnet.log和Listener.log

禁止写入日志到Sqlnet.log和Listener.log 参考原文: How to Disable Logging to the Sqlnet.log and the Listener.log (Doc ID 162675.1) 适用于: Oracle Net Services Information in this document applies to any platform. Checked for relevance on 15-Jan-2012 解决方案: Disable Cli

【m从翻译os文章】写日志禁令Sqlnet.log和Listener.log

写日志禁令Sqlnet.log和Listener.log 参考原始: How to Disable Logging to the Sqlnet.log and the Listener.log (Doc ID 162675.1) 适用于: Oracle Net Services Information in this document applies to any platform. Checked for relevance on 15-Jan-2012 解决方式: Disable Clien

MySQL二进制日志(binary log)总结

本文出处:http://www.cnblogs.com/wy123/p/7182356.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) 今天无意中发现了一个云栖社区举行的MySQL“第一季:挑战玄惭之 慢SQL性能优化赛”,在测试服务器上执行其测试脚本写入数据的时候报错提示如下,Multi-statement transaction required more than 'max_binlog_cache_

Loadrunner:场景运行较长时间后报错:Message id [-17999] was not saved - Auto Log cache is too small to contain the message.

loadrunner运行时间较长后,跑数据过程老是失败,有如下error: Message id [-17999] was not saved - Auto Log cache is too small to contain the message. Action.c(58): 20470-byte response body for IMAP Fetch 因为脚本中默认写日志的缓存为1KB,修改该配置为999

Java 日志缓存机制的实现--转载

概述 日志技术为产品的质量和服务提供了重要的支撑.JDK 在 1.4 版本以后加入了日志机制,为 Java 开发人员提供了便利.但这种日志机制是基于静态日志级别的,也就是在程序运行前就需设定下来要打印的日志级别,这样就会带来一些不便. 在 JDK 提供的日志功能中,日志级别被细化为 9 级,用以区分不同日志的用途,用来记录一个错误,或者记录正常运行的信息,又或是记录详细的调试信息.由于日志级别是静态的,如果日志级别设定过高,低级别的日志难以打印出来,从而导致在错误发生时候,难以去追踪错误的发生原

JVM致命错误日志(hs_err_pid.log)解读

致命错误出现的时候,JVM生成了hs_err_pid<pid>.log这样的文件,其中往往包含了虚拟机崩溃原因的重要信息.因为经常遇 到,在这篇文章里,我挑选了一个,并且逐段分析它包含的内容(文件可以在文章最后下载).默认情况下文件是创建在工作目录下的(如果没权限创建的话JVM 会尝试把文件写到/tmp这样的临时目录下面去),当然,文件格式和路径也可以通过参数指定,比如: java -XX:ErrorFile=/var/log/java/java_error%p.log 这个文件将包括: 触发

zt:缓存一致性(Cache Coherency)入门 cach coherency

http://www.infoq.com/cn/articles/cache-coherency-primer http://www.cnblogs.com/xybaby/p/6641928.html 本文是RAD Game Tools程序员Fabian “ryg” Giesen在其博客上发表的<Cache coherency primer>一文的翻译,经作者许可分享至InfoQ中文站.该系列共有两篇,本文系第一篇. 我计划写一些关于多核场景下数据组织的文章.写了第一篇,但我很快意识到有大量的

Oralce重做日志(Redo Log)

1.简介 Oracle引入重做日志的目的:数据库的恢复. Oracle相关进程:重做日志写进程(LGWR). 重做日志性质:联机日志文件,oracle服务器运行时需要管理它们. 相关数据字典:v$log ; v$logfile . 操作者权限:具有sys用户或system用户权限. 重做日志文件: 日志文件的数据文件类型:在线日志文件(又叫联机日志)与归档日志文件(在线日志文件的历史备份),每个重做日志组中有一个或多个重做日志文件.每个势力至少要有两个重做日志组. 日志运行的模式:归档模式.非归