声明:本文仅代表原作者观点,仅用于ERP行业应用和交流,不代表任何公司。
笔者之前的文章介绍了 ABAP Development Tool 里提供的 ABAP 源代码全文搜索功能:系统版本 ≥ 7.40 SP05
底层数据库为 HANA
- Business Function SRIS_SOURCE_SEARCH 需要处于开启状态
在相关的 ABAP 框架代码里,我们可以看到通过检查系统字段 sy-dbsys 的值是否等于 HDB,来判断当前系统底层数据库是否是 HANA 数据库。同时,上面这段代码,通过方法 is_source_index_existing, 检测存储 ABAP 报表源代码的数据库表 REPOSRC,是否存在名叫 SRC 的索引。数据库表中类型为 STRING 和 RAWSTRING 的字段,不能用作索引字段。https://help.sap.com/doc/abapdocu_753_index_htm/7.53/en-US/abenddic_database_tables_index.htm支持 ABAP 全文搜索的 REPOSRC 数据库表的 DATA 字段,用来存储压缩后的 ABAP 源代码。其类型正好就是 RAWSTRING:不过 SAP HANA 数据库支持为 RAWSTRING 类型的字段创建 Full Text Index,所以就不存在上述限制了。下图即 REPOSRC 数据库表在 DATA 字段上创建的 Full Text Index:看看 ABAP 框架是如何判断该 Index 是否存在的?还是使用前一篇文章介绍的 ADBC(ABAP Database Connectivity),在 ABAP 层调用 HANA SQLScript,从一张名为 INDEXES 的视图中去查询。这张视图位于 Schema SYS 下,故又称为系统视图。https://help.sap.com/docs/SAP_HANA_PLATFORM/4fe29514fd584807ac9f2a04f6754767/20a7044375191014a939f50ae14306f7.html系统视图允许开发人员通过 SQL 命令查询各种系统状态信息,获得有关数据库架构、对象元数据、运行时统计等多方面的信息。系统视图以表格形式提供系统状态的信息,这些视图位于 SYS Schema 中。ABAP 开发人员可以将 Schema 类比成 ABAP 开发包。SAP HANA 系统视图主要分为两大类:元数据视图(Metadata Views)和运行时视图(Runtime Views)。元数据视图用于提供数据库中对象的元数据信息,包括通过 DDL 语句设置的选项或设置,例如表、索引、约束等的定义信息。DDL 全称是 Data Definition Language,即数据定义语言。它是用于定义、修改和删除数据库中的对象(如表、视图、索引等)的一种特殊语言。运行时视图则用于提供 HANA 实时数据,包括与 DML 语句执行相关的统计信息和状态信息。运行时视图的名称通常以 M_ 开头,通常用于监控系统的运行状态。一个常见的命名对称性是,例如 TABLES 和 M_TABLES,前者用于描述数据库中表的结构信息,而后者则提供运行时的状态信息。通过这张视图,我们能够轻易得到系统中数据库表很多维度的信息。比如笔者当前使用的 ABAP 系统里,高达 95.8% 的数据库表都是列存储表。M_TABLES 则提供了当前系统每一张数据库表的存储使用情况。比如我们可以按照表存储的记录数和占据的存储空间这些指标,从高到低进行排序。同理,INDEXES 与 M_CS_INDEXES 之间也存在类似的命名关系。其中 INDEXES 提供索引的元数据信息,而 M_CS_INDEXES 则提供与列存储索引相关的具体运行状态。M_CS_INDEXES 系统视图可以帮助我们了解列存储索引在运行时的状态信息,包括索引的大小、使用频率以及对系统性能的影响。这些信息对于进行索引优化是非常有价值的。通过这些视图,开发人员可以判断某些索引是否在实际应用中被有效利用,或者某些索引是否因数据变更而需要重新构建。从 SAP HANA 1.0 SPS 07 开始,HANA 提供了内嵌的统计服务视图,这些视图位于 _SYS_STATISTICS Schema 中。这些统计服务视图提供了丰富的系统性能和资源利用率的统计数据,可以用于帮助开发者和系统管理员更好地理解系统的性能瓶颈并进行优化。免责声明:本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,我们将根据您提供的证明材料确认版权并按国家标准支付稿酬或立即删除内容!本文内容为原作者观点,并不代表本公众号赞同其观点和对其真实性负责。