简介:面向企业CIO、IT架构师与数字化转型项目成员,PPT以华为与SAP联合打造的企业级HANA解决方案为主线,系统说明SAP HANA内存计算平台如何实时处理海量业务数据,并搭配经SAP认证的华为服务器(含RH2288H V5、KunLun等)、OceanStor存储、DA200压缩卡与ES3000 NVMe SSD等硬件,形成从底层基础设施到上层业务应用的一体化方案。内容覆盖全渠道零售创新应用(360度会员视图、一小时年货到家、全渠道备货物流补货、购物篮分析、智能渠道选择)、中小型与大型企业核心系统适配、FusionCloud云化部署等路径,同时给出英格列斯百货与良品铺子的落地案例,适合方案选型、技术交流与项目汇报参考。资源包为单个PPT演示文稿,大小3.14MB,共1个文件,图文并茂、结构完整,便于直接阅读与二次编辑。已有186人浏览学习,适合需要快速把握华为SAP HANA行业方案要点与最佳实践的企业技术团队。
1. 华为 SAP HANA 解决方案:这不是一份 PPT,是一套能落地的全栈选型清单
做数据库和基础架构的人,看到“华为 SAP HANA 行业解决方案”这种标题,第一反应多半是“又是厂商宣传片”。我拆完这份资料后的结论不太一样:它真正值钱的地方,不在那几张架构图,而在把 SAP HANA 从“内存数据库”落到企业生产环境时,硬件怎么配、场景怎么拆、云上和一体机怎么选——这些恰好是项目前期最容易拍脑袋、后期最容易翻车的环节。无论你是要给零售客户做全渠道中台,还是给制造企业做 BW/4HANA 数仓替换,这份方案能直接回答“华为系硬件配 SAP HANA 到底怎么选型、认证边界在哪”。
适合读它的人有两类:一类是刚接触 SAP HANA 项目的实施顾问,需要搞明白 KunLun 和 RH 系列服务器、ES3000 和 DA200 各自干什么用;另一类是甲方或集成商的技术负责人,想参考 ECI、良品铺子这类真实案例,确认“别人是怎么把性能数字吹出来的,我复现的时候要盯哪些参数”。
2. 从一体机到认证服务器:先把硬件家族的边界摸清楚
2.1 SAP 认证到底认证了什么
SAP HANA 对底层硬件的要求和普通 x86 数据库完全不同。它不是“能跑就行”,而是要求服务器、存储、网络整条链路都在 SAP 的认证清单里。这份方案里反复强调的“业界唯一 计算、存储、云通过 SAP 认证厂家”,说的就是这个事。华为目前主推的四款机型,RH2288H V5、RH2488H V5、RH8100 V5、KunLun 8100,覆盖了从中小企业到大型核心业务的三档需求。
这里有一个很容易被忽略的坑:SAP 认证不是给“某个型号”发一张长期有效的证书,而是针对“具体配置组合”做的认证。同样是 RH2288H V5,内存插满和只插一半,SAP 可能只认其中一种。所以选型时不要只看机型,要拿着最终的内存、CPU、网卡配置去 SAP 官方的 Hardware Configuration Check Tool 里核对。
2.2 三档配置怎么对号入座
方案里给出的内存范围很清楚:
| 机型 | 内存范围 | 定位 | 典型场景 |
|---|---|---|---|
| RH2288H V5 | 192 GB ~ 3 TB | 中小型企业、非核心业务 | SAP Business Suite、开发测试系统 |
| RH2488H V5 | 192 GB ~ 6 TB | 中等规模生产 | BW/4HANA、OLTP 生产 |
| RH8100 V5 | 768 GB ~ 12 TB | 大型核心业务 | S/4HANA、大型 OLTP |
| KunLun 8100 | 2 TB ~ 16 TB,可扩展 64 TB | 大型关键业务、数据仓库 | EDW、大规模 OLAP |
这里要特别说下 KunLun。它是华为的纵向扩展(Scale-Up)旗舰,最大 16TB 内存,方案里说“可扩展支持 64TB”。ECI 的案例就是用 KunLun HANA 一体机搭 EDW 平台,性能最大提升 1000 倍。64TB 这个数不是说 KunLun 单机就能插 64TB,而是指通过特定配置和认证组合能组成的最大规模。真到 64TB 级别,你要考虑的是机房承重、功耗、HANA 的 license 费用——内存越大,SAP 的软件授权越贵,这笔账要在项目立项时就算清楚。
2.3 存储架构:log volume 和 data volume 为什么必须分开
方案里反复出现“PCIe SSD log volume + HDD data volume”和“HDD or SSD data/log volume”这样的组合描述。这不是排版习惯,而是 SAP HANA 的持久化机制决定的。
HANA 的 log volume 承担的是 REDO 日志的实时写入,要求极低的写延迟;data volume 是数据落盘,对带宽要求高但对单次写入延迟的要求没那么苛刻。所以常见的推荐做法是 log volume 放 PCIe SSD(性能最好),data volume 放 HDD 或 SSD。如果你把两者混放在同一块盘上,log 写入和 data checkpoint 抢 I/O,表现就是 HANA 的 savepoint 耗时暴涨,业务高峰期出现明显卡顿。
我一般会建议客户至少把 log 和 data 从物理上分开。这里还要注意一个细节:data volume 内部其实还分“热数据”和“冷数据”。这份方案里给出的分层思路是——SAP HANA 内存放实时热数据,Hadoop 大数据平台(FusionInsight)放海量冷数据,中间用 DA200 数据压缩卡和 ES3000 NVMe SSD 做衔接。
2.4 真实案例里的硬件配置逻辑
看 ECI 的案例,不能只盯着“性能提升 1000 倍”这个数字。它背后的逻辑是:欧洲第一大连锁百货公司,数据量大,多系统数据要集中处理分析,原系统跑不动了。华为给的方案是 KunLun HANA 一体机支持 16TB 内存,同时具备扩展到 64TB 的能力——这就是为 EDW 场景选的型。
这里有个经验:案例里的“性能提升 1000 倍”,指的是某些特定查询从原来的小时级变成秒级,不是说所有 SQL 都提升 1000 倍。跟客户汇报的时候你要把这个口径讲清楚,不然验收的时候会有麻烦。
良品铺子的案例更适合做全渠道零售的参考。1400 家线下门店,加上线上电商,2015 年双十一单日 1.23 亿销售额,是 2014 年同日的三倍。支撑这个的核心是 SAP CRM、ERP 和 Hybris 跑在 HANA 上,分析性能提升 100 倍。这类项目的关键是:业务系统分析性能提升 100 倍背后,靠的是全内存计算,而全内存意味着你要先把“哪些数据进内存”想清楚——HANA 不是让你把所有历史数据都塞进内存,冷热分层才是常态。
3. DA200 与 ES3000 的实战价值:数据压缩和 I/O 加速怎么调
3.1 DA200 数据压缩卡不是玄学
DA200 是华为针对 HANA 数据压缩场景做的硬件加速卡。SAP HANA 本身有列存储压缩机制,但压缩和解压是消耗 CPU 的。数据量大到一定程度,CPU 会被压缩计算占掉不少,这时候 DA200 能把这部分工作从 CPU 卸载到专用硬件上。
方案里“数据压缩卡 DA200”和“ES3000 NVMe SSD”是并列出现在的。前者解决的是 CPU 消耗,后者解决的是 I/O 延迟。实际调优时,我的做法是先用 HANA 自带的ALTER SYSTEM RECONFIGURE观察 CPU 占用,如果压缩相关开销超过 15%,再考虑上 DA200。小内存(小于 1TB)的 HANA 环境一般不需要 DA200,CPU 还能扛得住。
3.2 冷热数据分层的手动操作路径
方案里描述了“实时热数据在 SAP HANA 内存,海量冷数据在 Hadoop”的架构。落地到具体操作,HANA 里最常用的是ALTER TABLE ... MOVE TO或者分区表的冷热分离设计。
-- 将 orders 表 2023 年之前的分区移动到冷存储 ALTER TABLE orders MOVE PARTITION p_2022 TO COLD STORAGE; -- 查看当前表的存储位置分布 SELECT TABLE_NAME, PARTITION_ID, STORAGE_TYPE FROM M_TABLE_PERSISTENCE WHERE TABLE_NAME = 'ORDERS';核心逻辑是:HANA 的列存表默认全量放内存,通过MOVE PARTITION TO COLD STORAGE可以把历史分区落到磁盘冷存储上。这里要注意,冷存储不等于 HDD,用 ES3000 NVMe SSD 做冷存储,查询历史数据时性能损失也不会太离谱。
参数上有一个需要盯的点:SAP HANA 的全局分配内存参数global_allocation_limit。默认情况下 HANA 会尽量吃满物理内存,但如果你在同一台物理机上跑了多个实例,就要手动限制。比如 512GB 物理机,两个 HANA 实例,每个实例的global_allocation_limit建议设为 233 GB 左右(512 * 0.9 / 2,预留 10% 给操作系统)。设过小了,HANA 会频繁触发内存回收,表现为查询突然变慢;设过大了,两个实例互相抢内存,直接 OOM。
3.3 内存表满了的排查思路
HANA 的内存管理比 Oracle 的 SGA/PGA 复杂得多。遇到“内存快满了”的告警,第一步不是加内存,而是先查哪张表吃掉了内存:
-- 找出内存占用前 10 的表 SELECT TABLE_NAME, SCHEMA_NAME, MEMORY_SIZE_IN_TOTAL / 1024 / 1024 / 1024 AS SIZE_GB FROM M_TABLE_PERSISTENCE ORDER BY MEMORY_SIZE_IN_TOTAL DESC LIMIT 10;如果发现某张表连续多次出现在这个列表里,而且数据量明显超出预期,那就要排查是不是有异常的SELECT *全表加载,或者是列存的LOAD单元设置不合理。常见做法是把列存的LOAD_UNIT从AUTO改成COLUMN_LOADABLE,避免整列全部加载到内存。
还有一个容易忽略的:HANA 的 savepoint 写盘失败也会导致内存上涨。data volume所在文件系统空间不足时,HANA 会暂停 release 内存,表现就是内存使用率只升不降。这时候去看/usr/sap/<SID>/HDB00/<host>/trace下的indexserver_alert_*.log,一般会有Failed to savepoint之类的记录,然后按文件系统扩容处理。
4. 全渠道零售场景拆解:360 度会员视图和购物篮分析的落地姿势
4.1 从 PPT 到 SQL:360 度会员视图怎么建
方案里“360 度会员视图”是个很唬人的词。落到实际就是一句话:把会员在不同渠道(POS、第三方商城、客服、App)产生的行为数据通过 HANA 实时汇总成一张宽表。HANA 有现成的ES_系列(Enterprise Search)和 attribute view 机制,不用像传统数仓那样先 ETL 再查。
-- 创建会员 360 度视图的核心逻辑(HANA Calculation View 里实现) -- 将 POS 交易、线上订单、客服记录按会员 ID 关联 SELECT m.member_id, COALESCE(SUM(o.order_amount), 0) AS total_spend, COALESCE(COUNT(o.order_id), 0) AS order_count, MIN(o.order_time) AS first_order_time, MAX(o.order_time) AS last_order_time FROM dim_member m LEFT JOIN fact_order o ON m.member_id = o.member_id GROUP BY m.member_id;这段 SQL 对应的是 HANA 里 Calculation View 的 base layer。实际产品中不要直接把它建成一个大的SELECT视图,而应该用 HANA 的CREATE VIEW加UNION ALL把线上线下数据先合并。我见过很多团队在这里踩坑:把所有渠道数据用一个FULL OUTER JOIN关联,结果行数爆炸,HANA 的内存直接被打满。
正确做法是分两层:底层是各渠道的明细表(POS 流水、电商订单、客服记录),上层用UNION ALL合并后,再和会员主数据做关联。
4.2 购物篮分析:别用 HANA 跑 Apriori
方案里提到“购物篮分析”。这是零售行业的老需求,但我得说句实话:HANA 是内存数据库,擅长的是高并发实时查询,不是数据挖掘算法。Apriori 这类关联规则算法需要反复扫描数据集、频繁计算支持度和置信度,HANA 跑起来很吃力。
我的经验是:HANA 负责提供实时特征(用户最近购买、频次、客单价),真正的购物篮分析放到 Hadoop(方案里的 FusionInsight)上用 Spark MLlib 做。两者通过 DA200/ES3000 这层做冷热数据交换,热数据在 HANA,历史明细在 Hadoop。
有一个选择是可以把购物篮的候选商品对提前在离线算好,加载到 HANA 里作为推荐表,然后在 POS 交易发生时实时查询。这样既利用了 HANA 的实时查询能力,又绕开了它的算法短板。
4.3 一小时年货到家和全渠道备货物流补货
“1 小时年货到家”和“全渠道备货物流补货”这两个场景本质上是同一套逻辑:实时库存可用量计算。传统 ERP 里库存是批处理更新的,电商下单扣一批库存,POS 销售再扣一批,两套系统之间经常对不上。HANA 的价值就是让所有渠道共享同一份实时库存。
落地时我一般会在 HANA 里建一个库存汇总表:
-- 实时库存可用量计算(按渠道汇总) CREATE COLUMN TABLE fact_inventory_available ( product_id INTEGER, channel_id TINYINT, available_qty INTEGER, reserved_qty INTEGER, last_update_time TIMESTAMP, PRIMARY KEY (product_id, channel_id) );这张表的核心是两个字段:available_qty是物理库存减掉已锁定库存,reserved_qty是订单创建但未支付锁定的库存。电商渠道下单时,在事务里扣减available_qty,增加reserved_qty;支付完成后把reserved_qty转成实际出库。
这里有一个很关键的参数:HANA 的TIMESTAMP类型微秒精度,在高并发下如果多笔事务同时更新同一行,会出现锁等待。我处理这类问题的标准做法是把库存表按product_id做 HASH 分区,把更新压力分散到多个分区上。实际项目中,良品铺子这种量级一般不会遇到严重的锁冲突,如果是双十一大促那类流量峰值,还是要在 HANA 前面加一层缓存(比如 Redis)做库存预扣,异步回写 HANA。
5. 云上和一体机怎么选:从 BMS 裸金属到 FusionCloud 虚拟化的取舍
5.1 三层部署形态的适用边界
方案里给了三条线:面向中小型企业的 SAP 商务套件、面向 SAP 商务套件业务系统、面向大型核心关键业务系统的服务器产品线。放到云环境里,对应的是 ECS for SAP HANA(虚拟化)、BMS(裸金属)、KunLun 一体机三类。
| 部署形态 | SAP 认证内存上限 | 适合场景 | 代价 |
| ECS for SAP HANA | 128 GB ~ 2TB | 开发测试、非核心生产 | 虚拟化开销虽小,但多租户隔离弱 |
| BMS | 3 TB ~ 6TB | 中小规模生产 | 不差资源,但没有整机柜交付 |
| KunLun 一体机 | 16 TB,可扩展 64TB | 大型核心业务、EDW | 成本高、交付周期长 |
选型的核心依据不是“业务多大”,而是“能不能接受虚拟化层”。SAP 官方对 HANA 在虚拟化环境里的支持力度是有限的,特别是 RTO 要求高的场景,虚拟化层会增加故障恢复的复杂度。我的经验是第一套生产环境尽量不要上 ECS,先用 BMS 或一体机把业务跑稳。
5.2 ECS for SAP HANA 的环境发放细节
方案里说“SAP 应用通过华为云上部署,能够实现当天环境发放、当天开始项目实施”。这个承诺的实现前提是镜像和自动化脚本提前准备好。
我按自己的实践梳理一个标准顺序:
# 1. 在 FusionCloud 上开通 ECS,规格选 saphana-large # 2. 挂载数据盘,并格式化为 XFS(SAP HANA 要求文件系统) mkfs.xfs /dev/vdb mkdir -p /hana/data /hana/log # 3. 修改 /etc/fstab 确保开机自动挂载 echo '/dev/vdb /hana/data xfs defaults 0 0' >> /etc/fstab # 4. 调整内核参数(HANA 安装前必做) sysctl -w vm.max_map_count=1000000 sysctl -w kernel.shmmax=4398046511104vm.max_map_count这里要特别提醒:SAP HANA 的内存映射数量远超普通应用,默认的 65530 会直接导致 HANA 启动失败或运行中崩溃。64GB 内存的 HANA 实例,max_map_count至少要设到 500000 以上。1TB 以上的大内存实例,建议直接 1000000 起步。
5.3 BMS 裸金属的坑:文件系统对齐和 NUMA 绑定
BMS 比 ECS 少了一层虚拟化开销,但相应地,你得自己处理更多底层细节。最常见的坑是文件系统对齐。华为云的数据盘默认可能没做 4K 对齐,HANA 的 data volume 写性能直接减半。
# 检查分区对齐(第一列数值能被 8 整除说明对齐正常) parted /dev/vdb align-check optimal 1 # 如果不满足,需要重新分区并指定对齐 parted /dev/vdb mkpart primary xfs 2048s 100%NUMA 绑定也是一个重灾区。HANA 对内存访问延迟敏感,跨 NUMA 节点访问内存会让性能下降 20% 到 30%。BMS 上你可以用numactl控制 HANA 进程的 CPU 和内存分配:
numactl --cpunodebind=0-1 --membind=0-1 \ /usr/sap/<SID>/HDB00/<host>/exe/sapstart \ pf=/usr/sap/<SID>/SYS/profile/<SID>_HDB00_<host>这里要说明的是,这样改完之后要重启 HANA 实例才生效。我见过有人改完不重启,然后发工单说“性能没提升”,最后排查半天发现进程根本没跑在绑定的 NUMA 节点上。
6. 避坑与常见问题:SAP HANA 硬件与运维的血泪排查记录
6.1 现象:HANA 启动后内存持续增长,直到 OOM
原因:global_allocation_limit没有设置,或者在多实例部署时设置过小/过大。HANA 默认会动态分配内存,并不会在一启动就占满,但在大量查询触发列存加载后,内存会持续攀升,直到触发操作系统 OOM。
解决:在全局 ini 文件中显式设置global_allocation_limit。具体做法是登录 HANA Studio 或执行hdbsql修改:
ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') SET ('memorymanager', 'global_allocation_limit') = '251658240' WITH RECONFIGURE;这个例子里的值 251658240 是 MB 为单位,约 240GB。注意这里的单位是 MB,不是 GB。设多少合适,要看物理机总内存减去操作系统和其他应用的开销。物理机 512GB,单 HANA 实例,建议设 460GB 左右(留 10% 给操作系统和 HANA 自身的非内存开销)。
6.2 现象:HANA 查询偶尔突然变慢,持续几秒后恢复
原因:检查点(savepoint)期间 data volume 在做批量写盘,如果 log volume 和 data volume 在同一个物理盘上,就会互相争抢 I/O。
解决:确认存储架构是否正确。log volume 用 PCIe SSD,data volume 用 HDD 或 SSD,两者分区必须物理独立。另外检查 HANA 的 savepoint 相关参数:
SELECT * FROM M_SAVEPOINTS ORDER BY SAVEPOINT_ID DESC LIMIT 10;正常情况 savepoint 应该在 1 到 3 秒内完成。如果超过 5 秒,就要查 I/O 是不是被其他业务占了。我们曾遇到过一个案例:存储阵列上还挂了别的 Oracle 数据库,HANA 的 savepoint 经常被拖到 10 秒以上,后来通过存储层划分独立的 LUN 并限制其他应用的 IOPS 才解决。
6.3 现象:HANA 安装时报错/hana/shared空间不足
原因:/hana/shared是 HANA 软件和配置文件所在目录,占用空间不大(通常 100GB 就够),但有人把/usr/sap也放进去,空间被日志撑爆。
解决:检查目录占用,把indexserver的 trace 日志重定向到独立磁盘。HANA 的 trace 日志增长极快,特别是错误级别调成 INFO 后,一天就能产生几十 GB。生产环境要把trace级别设置为ERROR,并配置日志轮转:
# 修改 global.ini [logging] trace = ERROR6.4 现象:BMS 上 HANA 性能达不到认证标准的一半
原因:绝大多数情况是文件系统未对齐 + NUMA 未绑定。HANA 的性能测试工具hdblcm跑出来的结果只是参考,真正的性能瓶颈要靠自己逐项排查。
解决:按顺序检查以下三项:parted align-check看分区是否对齐;numactl --hardware看 NUMA 拓扑,HANA 的进程是否跨节点访问;网卡中断是否均衡分布,多队列网卡没有配置 RSS 会导致网络延迟升高。
6.5 现象:云上 ECS 的 HANA 经常在高峰期出现 CPU 飙升
原因:虚拟化环境下,HANA 的 CPU 密集操作会被虚拟 CPU 的调度影响。如果宿主机上还跑了其他高负载虚拟机,HANA 的查询延迟就会不稳定。
解决:优先选择华为云上专门针对 SAP HANA 优化的 ECS 规格,这类规格在宿主机调度上做了特殊处理。另外把 HANA 的 CPU 线程数限制在物理 vCPU 的 80% 左右,留出余量给系统调用:
ALTER SYSTEM ALTER CONFIGURATION ('indexserver.ini', 'SYSTEM') SET ('sql', 'max_threads') = '64' WITH RECONFIGURE;max_threads这个参数的实际含义是单个 SQL 语句最多可以使用的线程数。64 这个值适用于 80 vCPU 的实例。设置太小,复杂查询跑不动;设置太大,并行查询互相抢 CPU。
6. 验证手段与性能测试:拿什么证明这套方案没白做
6.1 HANA 安装完成后的标准验证动作
不管是 KunLun 一体机还是 BMS,装完 HANA 后的第一件事不是跑业务,而是验证硬件和操作系统配置是否符合预期。我有个自己固定走的流程,每次做完都省掉后面大量的排障时间。
先检查 HANA 的版本和实例状态:
su - <sid>adm hdbsql -u SYSTEM -p <password> \ "SELECT VERSION, SYSTEM_ID FROM M_SYSTEM_OVERVIEW"然后看系统是否所有服务都是绿灯:
HDB infoHDB info会列出 indexserver、nameserver、xsengine 等服务的状态。正常输出里HDB进程应该存在并且显示running。如果某个服务状态异常,直接看/usr/sap/<SID>/HDB00/<host>/trace/下对应的日志文件,不要绕弯子。
接下来验证存储配置。用 HANA 自带的性能测试工具跑一轮:
hdbbench -s 10 -c 1000 -t 5 -m 1000000-s 10是 10 个 session,-c 1000是每个 session 的 commit 间隔,-t 5是跑 5 分钟,-m 1000000是内存表行数。这个命令测的是内存表的 insert/select 性能,主要看 I/O 路径是否正常。跑完看结果里的Throughput,如果低于同配置参考值的 70%,说明存储层有问题,回去查分区对齐和文件系统。
6.2 用真实 SQL 压测找到内存瓶颈
hdbbench只是验证安装,真正的压力测试要用业务 SQL。我的习惯是在 HANA Studio 里打开执行计划,跑三组典型的业务查询:单表精确查询、多表 JOIN、带有 GROUP BY 的聚合查询。
-- 模拟报表场景:30 天订单汇总 SELECT TO_CHAR(order_time, 'YYYY-MM-DD') AS day, channel_id, COUNT(*) AS order_cnt, SUM(order_amount) AS amount FROM fact_order WHERE order_time >= ADD_DAYS(CURRENT_TIMESTAMP, -30) GROUP BY TO_CHAR(order_time, 'YYYY-MM-DD'), channel_id ORDER BY day;看执行结果的Execution Time和Plan里的Estimated Cost。如果执行时间比预期高一个数量级,优先看是不是走了全表扫描,然后确认列存的LOAD_UNIT是否正确加载。常见做法是把大表的ALTER TABLE ... LOAD打开,把热数据提前加载进内存。
6.3 长期监控要盯的四个指标
验证做完不算完,还要配置监控。SAP HANA Studio 自带的监控太浅,要盯的是 HANA 的M_系列视图:
-- 查看内存使用详情 SELECT COMPONENT, USED_MEMORY_SIZE / 1024 / 1024 / 1024 AS USED_GB FROM M_MEMORY_RECORD ORDER BY USED_MEMORY_SIZE DESC; -- 查看列存表的加载状态 SELECT TABLE_NAME, LOAD_UNIT, MEMORY_SIZE_IN_TOTAL / 1024 / 1024 / 1024 AS SIZE_GB FROM M_TABLE_PERSISTENCE ORDER BY MEMORY_SIZE_IN_TOTAL DESC LIMIT 20;第一个查询告诉你内存大头在哪里。第二个查询告诉你哪些表占内存最多。我一般每个星期看一次这两个视图,把结果和上周对比,就知道数据增长趋势和有没有异常的表被加载进了内存。
有一种很常见的情况是:某张表的数据量一直涨,但 load unit 设置成了全量加载,导致内存增长曲线陡峭。处理方法是把大表改成PAGE_LOADABLE,让 HANA 按需加载数据页,而不是一启动就全部塞进内存。代价是首次查询该表时会有短暂的延迟,但对那些不常访问的历史表来说,这个取舍是值得的。
6.4 云上资源扩展的验证
华为云上跑 HANA 的好处是资源可以动态扩。但扩容不是点个按钮就完事,要验证 HANA 是否真的用上了新增的内存。
-- 确认内核能看到的总内存 SELECT (SELECT COUNT(*) FROM M_ACTIVE_PROCESSES) AS process_cnt, (SELECT VALUE FROM M_SYSTEM_OVERVIEW WHERE NAME = 'Total Memory') AS total_mem; -- 确认 HANA 实例的可用内存 SELECT (SELECT EFFECTIVE_MEMORY_SIZE / 1024 / 1024 / 1024 FROM M_SYSTEM_INFORMATION) AS effective_gb;如果扩容后 HANA 的effective_gb没有变化,极有可能是global_allocation_limit还在卡上限。这时候回到第 2 章的方法,把global_allocation_limit往大调。我见过最典型的翻车是:云上扩容了 2TB 内存,客户忘了调 HANA 的内存限制参数,结果花了几十万扩容费,性能一点没变——不是硬件的问题,是参数没跟上的问题。
从那以后,我每次做完 HANA 部署,都会把“检查内存限制参数”和“检查文件系统挂载参数”这两件事闹钟式地固定进项目收尾清单。希望这些经验对你落地华为 SAP HANA 项目有帮助。
本文还有配套的精品资源,点击获取