Hana日志缓冲区和段

2020-08-24 15:38发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在努力了解hana手术的技术细节。 我有一些疑问:

1)我了解hana日志缓冲区(驻留在内存中)和logsegment(驻留在日志卷中)。 日志详细信息从内存缓冲区写入日志段。

很多时候,当hana日志已满时,SAP建议我增加logshipping_async_buffer_size(默认为64MB)。 我无法得知为什么此缓冲区大小将阻止生成日志段(默认为1 GB)。 有人可以帮我理解吗?

2)日志记录的最大数量为10240。日志缓冲区计数是否也有类似的参数?

3)从logshipping_async_buffer_size( https://help.sap .com/viewer/6b94445c94ae495c83a19646e7c3fd56/2.0.03/en-US/0cd257970d514abd8ddf9ee1f45f3bca.html ),"日志编写器首先将日志缓冲区复制到中间内存缓冲区中并继续进行处理。一个单独的线程从中读取日志缓冲区。 内存缓冲区,并将它们通过网络异步发送到辅助站点"

为什么要复制到中间存储器?

4)对于HSR,它是日志缓冲区,它已被运送,保留并在次要位置重播到内存中。 线程读取内存缓冲区(或日志缓冲区,但不读取日志段数据),然后发送到辅助缓冲区。 为什么不将日志分段发送到辅助站点?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在努力了解hana手术的技术细节。 我有一些疑问:

1)我了解hana日志缓冲区(驻留在内存中)和logsegment(驻留在日志卷中)。 日志详细信息从内存缓冲区写入日志段。

很多时候,当hana日志已满时,SAP建议我增加logshipping_async_buffer_size(默认为64MB)。 我无法得知为什么此缓冲区大小将阻止生成日志段(默认为1 GB)。 有人可以帮我理解吗?

2)日志记录的最大数量为10240。日志缓冲区计数是否也有类似的参数?

3)从logshipping_async_buffer_size( https://help.sap .com/viewer/6b94445c94ae495c83a19646e7c3fd56/2.0.03/en-US/0cd257970d514abd8ddf9ee1f45f3bca.html ),"日志编写器首先将日志缓冲区复制到中间内存缓冲区中并继续进行处理。一个单独的线程从中读取日志缓冲区。 内存缓冲区,并将它们通过网络异步发送到辅助站点"

为什么要复制到中间存储器?

4)对于HSR,它是日志缓冲区,它已被运送,保留并在次要位置重播到内存中。 线程读取内存缓冲区(或日志缓冲区,但不读取日志段数据),然后发送到辅助缓冲区。 为什么不将日志分段发送到辅助站点?

付费偷看设置
发送
6条回答
半个程序猿
1楼 · 2020-08-24 16:04.采纳回答

嗨Sumit,

让我再试一次; -)

问:如何增加logshipping_async_buffer_size(256MB)防止日志已满的情况?

A:请参阅Mechtild响应: logshipping_async_buffer_size与这无关。。 多喝咖啡如何使我的胡须长得更快? 它不会。 没有关系。

第二季度:日志段的最大数量为10240。日志缓冲区计数是否也有类似的参数?

A:我检查了

,并找到了log_buffer_count,log_buffer_size_kb

,在

所以,是的。

问题3:为什么要复制到中间存储器?

A:系统体系结构。 可能是为了保证系统复制不会干扰日志持久性操作(无依赖性)。

第4季度:为什么不将日志分段发送到辅助节点?

A:与第3季度的答案相同。

希望这可以澄清您的问题。 很好好奇。 谢谢。

歪着头看世界
2楼-- · 2020-08-24 16:03

感谢 Denys van Kempen

它会有所帮助。 我发现我的查询离我有点遥远:)。

95年老男孩
3楼-- · 2020-08-24 16:19

重做日志(又名日志缓冲区)

为确保在出现故障时零数据丢失的情况下恢复数据库,SAP HANA以所谓的重做日志条目的形式记录每个事务。 每个SAP HANA服务都分别编写其自己的重做日志文件。 典型的块写入大小范围为4KB至1MB。 在写事务期间,对数据的所有更改都会记录在重做日志中。 HANA以4 KB到1 MB大小的I/O顺序将重做日志异步保存到日志卷(在磁盘上)的日志段文件中。 将提交写入重做日志的事务将等待,直到包含提交的缓冲区已写入日志卷。 为了使日志卷不满,将在日志段已满时(取决于它们的logsegment_size_mb)或在特定时间间隔后进行备份。 这是一个非常基本的数据库概念!

logshipping_async_buffer_size与这无关!! 该特殊缓冲区仅在以复制方式ASYNC运行的 SAP HANA系统复制中起作用。 在SAP HANA系统复制中,上述重做日志(在写事务期间创建)总是立即发送到辅助系统(除了在日志卷中保留在主系统上)。 根据复制模式(SYNC,SYNCMEM或ASYNC),辅助节点会确认到达主系统的重做日志的收件人(例如,请在此处检查有关复制模式的详细信息: https://www.sap.com/documents/2017/07/606a676e- c97c-0010-82c7-eda71af511fa.html )。

在ASYNC系统复制中,主服务器不等待辅助服务器确认重做日志的到来。 在ASYNC复制模式下,日志编写器首先将重做日志缓冲区复制到中间存储缓冲区(大小为logshipping_async_buffer_size),然后继续在主数据库上处理写事务。 一个单独的线程从此中间内存缓冲区中读取日志缓冲区,并将它们通过网络异步发送到次级。 在此设置中,主服务器仅保持工作状态,而无需等待辅助服务器的确认。 然后,从该内存缓冲区中将重做日志异步发送到网络到辅助站点。 参数logshipping_async_buffer_size确定可以中间缓冲多少日志。 该缓冲区在高峰时间特别有用。 在主站点上生成日志比发送到辅助站点上更快的日志。 如果缓冲区很大,则可以在更长的时间内处理峰值。

callcenter油条
4楼-- · 2020-08-24 16:03

感谢您的时间 Mechthild Bore-Wuesthof

来自 您的解释,我试图推断出我的查询的答案。

我可以请您确认我的理解是否正确吗?

1)如何增加缓冲区大小(通过 更改logshipping_async_buffer_size(即以MB为单位)是否会影响hana日志量(以GB为单位的段)?

" 参数logshipping_async_buffer_size确定可以中间缓冲多少日志。 在高峰时段特别有用;当主站点上的日志生成速度比发送到辅助站点上的日志快时,如果缓冲区很大,它可以在更长的时间内处理峰值。"

我的理解-:增加缓冲区大小将仅允许数据库的平滑操作(在复制模式ASYNC中),从而在logshipping_async_wait_on_buffer_full = true的情况下使复制保持更多的连接时间。

因此,在高峰时间,较大的缓冲区大小将"只是延迟"主系统的事务开始变慢以等待将缓冲区运送到辅助系统时的情况。 增大缓冲区大小不会阻止日志满。

但是,由于高峰时段的日志缓冲区会经常变满(随后等待队列中的日志),因此将缓冲区复制到 日志段也将很频繁,因此主端(甚至在ASYNC模式下)的日志量可能会变得更快(如果在计划的备份释放日志段之前发生这种情况,有时会导致日志已满)。

2)日志段的最大数量为10240。日志缓冲区计数是否也有类似的参数?

我的理解:参数log_buffer_count的允许范围是4 128。 默认值为8。如果可用内存允许,我们可以增加计数。

3)为什么需要将日志缓冲区复制到中间存储器缓冲区?

" 一个单独的线程从该中间存储器缓冲区中读取日志缓冲区 并通过网络将它们异步发送到次级端。在这种设置下,初级端将继续工作,而不会等待次级端的确认。"

我的理解:我还没有 不确定是否需要中间存储器缓冲区。 我假设随着中间内存缓冲区(而不是日志缓冲区)的内容传送到辅助服务器,网络速度减慢的影响会最小化。 但是,即使网络传输日志缓冲区的速度很慢(ASYNC模式),中间存储器缓冲区也是如此(在所有日志缓冲区无法永远复制中间存储器缓冲区以保持主数据库不受影响的情况下),因此

4)在HSR的情况下,是日志缓冲区被运送并在次要位置重播到内存中。 为什么它不将日志分段发送到辅助日志?

"" HANA将I/O顺序为4 KB到1 MB的I/O指令异步保存到日志卷中的日志段文件中(在磁盘上) )。将提交写入重做日志的事务将一直等待,直到包含提交的缓冲区已写入日志卷为止。"

我的理解:由于以下两个原因,它是日志缓冲区,而不是交付给Secondary的日志段:

1. 1.一个日志段(GB大小)包含 如果提交了日志段(而不是缓冲区),则网络或主硬件方面的任何故障都可能导致多次提交丢失。 日志缓冲区(大小为MB)提交的提交点更少,因此有助于更紧密地同步到辅助。

2。 日志段是卷的一部分,如果要将其发送到Secondary,则它们将一直保留在Secondary的卷上,直到重新启动后才重播到内存中。

大简至美
5楼-- · 2020-08-24 16:09

Hi Sumit,

对于这些类型的问题,您可能需要查阅SAP ONE支持启动板上的许多出色的知识库文章(KBA)。

我做了一次快速搜索,发现logshipping_async_buffer_size的默认值已更改

派大星 ヾ
6楼-- · 2020-08-24 16:08

感谢Denys,

我经历了KBA(查看199880的次数太多了),并且知道logshipping_async_buffer_size的默认值已更改为256MB。

但是,我的查询保持不变。 增加logshipping_async_buffer_size(256MB)将如何防止出现日志已满的情况。

我认为,在复制断开连接之前,缓冲区可以延迟更长的时间(考虑将logshipping_async_wait_on_buffer_full设置为true)。

换句话说,更改缓冲区大小(以MB为单位)将如何影响hana日志量(以GB为单位的段)?

而且,我找不到查询2的答案 ,3和4中的任何KBA。

一周热门 更多>