域名解析_国外虚拟主机推荐_返现

产品 虚拟云 浏览

小编:最近我们正在处理一个客户关于其生产系统性能问题的投诉。我们正在从ABAP和DB两方面进行调查,以寻求潜在的改进。在数据库方面,我们正在与客户合作进行可能的数据库索引优化

域名解析_国外虚拟主机推荐_返现

最近我们正在处理一个客户关于其生产系统性能问题的投诉。我们正在从ABAP和DB两方面进行调查,以寻求潜在的改进。在数据库方面,我们正在与客户合作进行可能的数据库索引优化。

另一方面,我们观察到造成性能痛苦的数据库表有大量的记录(在50~200+百万之间)。我们确实看到了获得一些历史数据的可能性,但是我们不确定客户在获得这些数据之后是否能够获得性能提升。

所以我做了一个小实验,试图获得表记录数和性能之间关系的初步想法。

数据库:HANA DB,版本1.00.74.00.390550。测试是在我们的内部系统上进行的。在客户的系统中进行测试更有意义,因为客户当前使用的是非\u HANA DB,但不幸的是,上海云服务器,我无法实现它–我需要编写几个报告来生成大量的测试数据,而我请求在他们的沙盒系统中使用用户的请求没有得到批准。我希望最后有机会在客户沙盒系统上重复这个实验

导致性能问题的表是PPFTTRIGG,它是SAP CRM中的标准表,存储动作框架处理细节的事务数据

在客户系统中有7500万条记录。在ST12中,它的DB时间总是在跟踪结果中排名第一。

对于表本身:

红色:关键字段

蓝色:索引字段

黄色:非索引字段

我将标准表复制到十个技术设置完全相同的新Z表中,并在每个Z表中填充10 millons~100 millons记录。

对于字段os\U guid,appl\u oid和medium\u oid,我使用功能模块GUID\u CREATE生成新的GUID并分配给它们。

对于其他字段,如applctn、context和ttype,我从它们的值表中读取所有可能的值并平均分配给表记录。

下面对十个Z表进行测量。本博客中记录的所有时间默认以毫秒为单位。

我使用索引字段appl\u oid,这可以确保每个Z表只返回唯一的记录。时间以微秒为单位。

我反复测试,云服务器2,结果总是显示时间不会随表记录数的增加而线性增加。

时间以微秒为单位。

结果显示,通过表键字段读取平均比通过索引读取快一点字段。

在本例中,我通过非索引字段MEDIUM\u OID查询这十个表。每个查询只为每个Z表返回一个结果。时间以微秒为单位。

三种读取操作都能保证SQL语句返回的唯一记录,是云服务器,按效率排序:通过键读取>通过索引字段读取>通过非索引字段读取

读取在索引字段applctn和context上执行。

X轴表示返回的记录数通过从中选择*INTO TABLE,其中每个Z表的applctn=XX和context=XXX.

与上述测试类似,但是加上6000行强制每个Z表上的SQL总是返回固定数量的记录。

我执行read来检索每个表的所有记录,这些表的标志被标记为abap\u true。在测试之前,我手动更改每个Z表的表条目,以确保所有10个表都有相同数量的记录,并将is\u changed标记为abap\u true。

更新操作在非索引字段is\u changed上完成。首先,大数据云,我使用SELECT UP TO XX来检索给定的记录集,啊里云系统,该记录集是\u changed=abap\u true,然后使用UPDATEFROM table来更新表。从table测量语句UPDATE的执行时间:

当在同一个会话中对10个表逐个进行批量更改时,包含10000个要更新的条目:

在我测试之前,我的假设是更新的消耗时间将根据表的数量线性增加记录。

但是根据这个测试结果,表记录的数量至少在HANA DB中不会降低更新性能。

根据这个测试结果,在HANA DB中,对于只返回唯一记录的读取操作,即使表记录的数量增加,也不会有显著的性能提高大幅减少(从1亿减少到1千万)。对于通过updateFROM table

执行的更新操作也是如此。对于返回多条记录的读取操作,无论使用索引字段还是非索引字段,返回的记录数是固定的还是不同的,读取所用的时间总是几乎与表条目数呈线性增长。在这种情况下,客户仍然可以从表归档中获益。

文章来源:www.vmchk.com

 
你可能喜欢的: