微信搜索公众号:SAP中文学习网交流平台      SAP技术千人群: SAP中文学习网技术群      SAP技术交流2群:SAP技术交流2群      SAP新人群:SAP中文学习网新人群     

SAP中文学习网

SAP Business One系统性能提升最佳实践

来源: 互联网TAG标签: SAP Business One 作者:SAP中文学习网 点击:
从我这些年的实施经验来看,系统性能出现问题,很多情况下是由于硬件或服务器(特别是数据库服务器)配置不当。我想大家都了解SAP Business One的系统架构,知道存储在SQL服务器上的数据库层有多重要,因此,正确配置数据库服务器,对整个项目都是大有裨益的。

 我要分享的实践经验经常被大家所忽视,但如果得到重视,SAP Business One的系统性能将得到超乎想象的提升。

 

SQL服务器基础配置

最大服务器内存:该设置用于控制SQL服务器缓冲池可占用的最大内存——如果对此不设上限,可能导致SQL服务器的其他部件和操作系统本身无内存可用,系统不稳定,性能出现问题。因此,我建议最多分配70%-80%的物理内存给数据库服务器。这个数字是怎么得到的呢?比如说,Windows操作系统需要2GB内存,内部工作线程需要一部分内存,分页内存分配需要1GB内存,再加上其他应用程序可能需要1-3GB内存;最坏情况下,我们需要保证服务器不需要将分页从内存写入磁盘。基于这些假设,可得出如下计算结果:

 

物理内存 最大服务器内存
24GB  21500MB
32GB 22400MB
40GB 28000MB
48GB 33600MB

这是一个动态设置,在SQL服务器里更新设置之后就会自动生效。更新设置有两种方法:

  • 通过SQL查询编辑器,输入以下查询语句:

    – Turn on advanced options

    EXEC sp_configure ‘Show Advanced Options’,1;

    GORECONFIGURE;

    GO– Set max server memory = 2048MB for the server

    EXEC sp_configure ‘max server memory (MB)’,2048;

    GORECONFIGURE;

    GO

  • 通过SQL数据库管理工具图形界面(SQL Server Management Studio GUI):

锁定内存页:该设置属于Windows组策略,规定哪些账户可以通过进程将数据保留在物理内存中,从而阻止系统将数据分页到磁盘的虚拟内存中。网上有很多文章介绍这种策略,同时也有很多争议,讨论应不应该为了提高内存性能在数据库服务器上启用该设置;在此不予置评。总之,根据我的经验,如果SQL服务器装在64位操作系统上,启用该设置肯定可以提高性能。因此,如果你的数据库服务器是64位操作系统,就可以参阅本节内容。

该设置的基本作用是保证64位系统上的SQL服务器的内存不会分页到磁盘上;反之,如果关闭该设置,Windows系统则有可能把内存强制分页到磁盘上。

锁定内存页属于Windows高级用户权限,需要手动分配给SQL服务器服务账户——即使该账户属于本地管理员组,也不能自动获得该权限。

大家可以通过下面这篇微软帮助文档了解如何启用该设置:

http://msdn.microsoft.com/zh-cn/library/ms190730.aspx

 

该设置成功启用以后,运行”XP_readerrorlog”语句,查看SQL服务器的错误日志,可以看到如下错误信息:

“锁定的页用于缓冲池”

相关链接:

http://support.microsoft.com/kb/970070/zh-cn

http://blogs.msdn.com/b/psssql/archive/2007/10/18/do-i-have-to-assign-the-lock-privilege-for-local-system.aspx (译者注:英文文档;该链接引用数篇微软帮助文档,第一篇文档根据用户电脑的地区设置显示对应语言;另两篇将网址中的”en-us”替换为”zh-cn”,便可查看对应的简体中文帮助。)

最大并行度(Max Degree of Parallelism/MAXDOP):在SQL服务器上运行每条查询语句都有对应的执行计划,规定查询的执行路径、运算符和资源消耗。有些执行计划采用并行处理方案,即创建并行操作,在多线程上执行单个查询。指定(或默认)并行度则决定这些线程在多核处理器上如何调度。

相关链接:http://msdn.microsoft.com/zh-cn/library/ms181007(v=sql.105).aspx

执行SQL查询的时候,很多情况下等待状态CXPACKET消耗了最长的等待时间。这个等待状态和并行度设置有直接联系。

SQL服务器上的并行度默认设置为0。零并行度表示所有处理器内核都可用于执行并行查询。比如说,16核处理器,如果并行度为0,那么16个内核都要用于处理并行计划;这样经常会导致性能下降。为什么?因为这种系统很少会有并行查询,并发事件也比较少,但并行查询要到所有内核上排队,这样自然会延迟查询结果的产生。与此类似,如果并行度为1,就表示所有并行查询都只在一个内核上执行,这种设置在高并发系统和并行查询高发的数据库应用程序上也可能导致非常严重的性能问题。

因此,必须非常小心地测试并设置并行度数值,同时还要考虑具体的业务流程和实施背景。在此,我建议先在测试服务器上分步测试,逐步提高并行度,直到系统性能稳定下来,达到最佳状态。至于像0和1这样简单粗暴的数值,一定要慎之再慎。

设置并行度,可以通过更改SQL服务器属性来实现:

也可通过SQL语句来实现:

sp_configure ’show advanced options’, 1;

GO

RECONFIGURE WITH OVERRIDE;

GO

–Setting the MAXDOP at 2

sp_configure ‘max degree of parallelism’, 2;

GO

RECONFIGURE WITH OVERRIDE;

GO

存储

接下来讨论存储问题。存储或磁盘输入输出不给力造成了大部分的性能瓶颈。下面这些小贴士都是用于优化数据库服务器的磁盘或存储性能:

首先是微软的存储原则,参考如下链接:

http://technet.microsoft.com/en-us/library/cc966534.aspx
(译者注:无中文版本)

这篇文章建议存储SQL服务器日志文件采用RAID 10(或RAID 1)阵列,而不是RAID 5阵列。处理SQL服务器上的大规模写入操作,RAID 10非常可靠。日志文件写入速度越高,服务器事务运行起来就越快。

为数据库服务器选择合适的RAID(独立磁盘冗余阵列)模式,还要考虑这个服务器有几个驱动器插槽可用。如果服务器的存储设备为本地连接形式,那可能只有几个驱动器插槽可用,RAID组建方式也就屈指可数。反之,如果服务器部署在一个存储局域网上,转轴数、缓存和RAID组建灵活度都不成问题;不过,从另一方面来说,如果该数据库服务器与局域网上其他应用程序和服务器/客户端共享物理驱动,输入输出可能会发生问题。因此,一个数据库服务器必须专享一个物理驱动。

更多存储小贴士:

物理磁盘和数据库文件

    物理服务器的RAID策略

  • 禁止存储SQL数据库的RAID卡使用提前读取功能。
  • SQL数据库需要存储在单独的阵列(卡)上;这一点和操作系统类似。

TEMPDB

  • 存储在阵列为RAID 1的磁盘上
  • 禁止数据库自动收缩功能

确保tempdb文件设置足够大,有足够空间避免数据库运行过程中”动态增长”。

    SAP公司数据库

  • 禁止数据库自动收缩功能
  • 恢复模式设置为”简单”,同时应创建定期备份作业或设置定期备份服务
  • 确保数据库文件设置足够大,有足够空间避免数据库运行当天”动态增长”。如果自动增长比例或增长绝对值(MB)高到足以阻止动态增长经常发生,应当启用自动增长设置。
  • 主数据文件(MDF)存储在RAID 10磁盘上。
  • 日志文件(LDF)可以存储在单独的RAID 1阵列系统上;如果有RAID 10阵列,也可以存储在RAID 10磁盘上。其前提是恢复模式设置为”简单”。

只要遵循上述原则,对SQL服务器以及CPU、内存、存储进行合理配置,大部分的性能瓶颈都不会出现。

 

其他

除了上述提到的各项原则,还应该为一些基本维护任务(如数据库重建索引和统计更新)在数据库服务器上创建相应的SQL作业。如果是高并发系统,应该每天都自动运行这些任务。如需更多信息,请参看SAP Service Marketplace性能引导页上关于数据库优化的材料:

HTTP://service.sap.com → SAP Channel Partner Portal → Login → SAP Business Management Solutions → SAP Business One → Support → Support Self Help and Library → Performance

另外,为生产数据库服务器选择硬件的时候,需要关注以下几点:

  • 业务流程的性质(高并发还是低并发)
  • 用户数量(当前用户数量和预计用户数量)
  • 每日交易量(如每天发票录入数量;用于预估数据库增长趋势)  

原注:请注意,以上所有建议都是基于个人经验。SAP Business One产品支持范围目前并不包括硬件问题。

(编辑:cindy liu )
顶一下
(3)
75%
踩一下
(1)
25%
------分隔线----------------------------
您有可能感兴趣的文章