1. 为什么AI/Agent应用的数据库选型不能照搬传统OLTP经验最近帮三个做智能客服Agent平台的团队做技术架构评审发现一个高频误区他们直接把过去十年用MySQL支撑电商订单系统的那套选型逻辑原封不动套在新项目上——结果上线两周就遇到查询延迟飙升、向量索引重建失败、多租户数据隔离失效三连击。根本原因在于AI/Agent应用对数据库的压测维度和传统业务系统完全不同。它不是简单地“增删改查”而是同时扛着四类并发压力实时对话状态快照写入每秒数百次小事务、向量相似度检索单次扫描千万级embedding、RAG上下文动态拼接跨表关联全文模糊匹配、以及Agent工作流状态机持久化长事务高一致性要求。我拿手头正在跑的两个真实负载对比某金融知识Agent平台其向量检索QPS峰值达820但平均响应时间必须压在120ms内而另一个电商导购Agent其对话状态表日均写入量2.3亿条但95%的查询都是基于会话ID的点查。这种混合负载特征让PolarDB、Aurora、TDSQL-C、TiDB这四个主流分布式数据库的底层设计差异被彻底放大。比如Aurora的存储计算分离架构在应对突发向量扫描时网络带宽成为瓶颈而TiDB的强一致性Raft协议在高频状态更新场景下日志同步延迟直接拖垮Agent决策链路。更关键的是所有团队都忽略了Agent应用特有的“冷热数据分层”需求——对话历史需要毫秒级访问但三个月前的归档日志只需低成本存储。这就导致选型时只看TPC-C测试分数却没算清实际部署中SSD缓存命中率下降37%带来的连锁反应。所以本文不谈理论参数只拆解四个数据库在真实Agent场景下的四维表现向量能力边界、状态机事务模型、多租户隔离机制、以及冷热数据自动分层策略。这些才是决定你Agent平台能否撑过下一个流量高峰的关键。2. 向量检索能力不是支持向量类型就等于能跑通RAG很多团队看到数据库文档里写着“支持向量类型”就默认能直接接入RAG流程结果在POC阶段就被打脸。真正决定RAG落地效果的是向量检索的底层实现方式、索引构建效率、以及与SQL引擎的耦合深度。我把四个数据库的向量能力拆成三个硬指标来实测100万条768维向量的ANN建索引耗时、单次TOP-K查询P95延迟、以及混合查询向量相似度布尔过滤的执行计划合理性。先看PolarDB。它通过PGVector插件提供向量能力本质是PostgreSQL的扩展。实测100万向量建HNSW索引耗时48秒单次TOP-10查询P95延迟86ms。但问题出在混合查询上——当加上WHERE categoryfinance AND created_at 2024-01-01这类条件时执行计划经常选择全表扫描而非先走向量索引再过滤导致延迟飙升到320ms。这是因为PGVector的索引无法与原生查询优化器深度协同本质上还是“两张皮”。我们曾为某法律咨询Agent调优最终靠强制SET enable_seqscan off加hint才稳定住性能但这违背了自动化运维原则。Aurora的情况更典型。它原生支持VECTOR数据类型但底层依赖的是Amazon自家的ANN引擎。建索引速度最快100万向量仅需22秒单次查询P95延迟压到63ms。可致命伤在于冷启动首次查询必须等待索引加载到内存实测平均等待1.8秒。这对Agent场景是灾难性的——用户发起提问后要等两秒才开始思考体验断层。更麻烦的是Aurora的向量索引不支持在线更新每次新增向量都要重建整个索引。我们测试过增量插入1000条向量后的重建耗时发现它随数据量呈O(n²)增长到500万条时重建需17分钟完全无法满足知识库实时更新需求。TDSQL-C走的是另一条路。它把向量计算卸载到独立的向量计算节点主库只负责元数据管理。建索引耗时中等35秒但单次查询P95延迟最稳58ms且混合查询执行计划始终优先走向量索引。它的优势在于资源隔离——向量检索不会抢占主库CPU这对高并发Agent平台是刚需。但代价是架构复杂度需要额外部署向量节点并配置专用网络策略。我们在某政务问答Agent项目里部署时发现向量节点与主库间的gRPC通信在跨AZ时抖动严重最终通过强制同AZ部署才解决。TiDB的方案最有意思。它没有内置向量类型而是通过TiFlash列存引擎自定义UDF实现。建索引最慢68秒但胜在弹性——TiFlash支持按需扩缩容向量检索资源可独立于TPS资源池。混合查询表现最佳执行计划能自动将布尔过滤下推到TiFlash再在列存上做向量计算P95延迟稳定在72ms。不过要注意TiDB的向量UDF需要自己编译部署我们踩过一个坑不同版本TiDB的UDF ABI不兼容升级集群时必须重新编译否则查询直接报错。提示向量能力不是“有无”问题而是“如何协同”的问题。PolarDB适合轻量RAG强SQL需求场景Aurora适合读多写少、能接受冷启动延迟的静态知识库TDSQL-C适合高并发、需严格资源隔离的生产环境TiDB适合需要弹性扩缩、且团队具备UDF开发能力的深度定制场景。3. Agent状态机持久化事务模型决定决策链路可靠性Agent的核心是状态机——从接收用户输入到调用工具再到生成回复每一步都依赖前序状态。这就要求数据库必须提供强一致、低延迟、高并发的状态持久化能力。但四个数据库的事务模型差异极大直接决定了Agent工作流的稳定性。PolarDB采用PostgreSQL的MVCC模型支持真正的SERIALIZABLE隔离级别。我们测试过连续1000次状态更新模拟Agent多步推理数据一致性100%达标。但问题在于锁粒度它默认行锁但在Agent场景中一个会话状态常被多个子任务并发修改如并行调用3个API后汇总结果容易触发锁等待。实测在100并发下平均锁等待时间达42ms导致部分Agent步骤超时。解决方案是手动加SELECT ... FOR UPDATE SKIP LOCKED但这要求业务代码深度感知数据库特性增加了开发成本。Aurora的事务模型最特殊——它把redo log下沉到分布式存储层计算节点无状态。这带来两个反直觉现象一是高并发写入时因存储层日志同步延迟会出现短暂的“读已提交但不可见”二是长事务30秒可能被存储层主动中断。我们在某医疗问诊Agent中遇到过典型案例Agent执行一个需调用5个外部服务的复杂流程第3步写入中间状态后第4步查询时发现该状态丢失日志显示事务被存储层kill。根本原因是Aurora的“无状态计算节点”设计牺牲了长事务的鲁棒性来换取扩展性。TDSQL-C的事务处理最接近传统银行核心系统。它采用两阶段提交2PC Paxos日志复制保证跨分片事务的强一致性。实测1000并发下状态更新P95延迟稳定在18ms且零锁等待。但代价是写入吞吐上限——单分片写入峰值约12000 TPS超过后延迟陡增。我们为某教育陪练Agent设计分片策略时发现按学生ID哈希分片会导致热门教师的数据倾斜最终改用“学生ID课程ID”复合分片才解决问题。这里的关键洞察是TDSQL-C的强一致性是以牺牲写入弹性为代价的必须提前规划好分片键。TiDB的乐观事务模型在Agent场景反而成了优势。它默认使用Percolator协议冲突检测发生在提交阶段。这意味着在低冲突场景如多数Agent会话互不干扰写入延迟极低P95 9ms。但高冲突时如抢答类Agent重试开销巨大。我们做过压力测试当冲突率超过15%平均重试次数达3.2次有效吞吐下降40%。解决方案是启用TiDB的悲观事务模式但会损失部分性能。有趣的是TiDB 7.5版本新增的“Async Commit”特性能在99%场景下规避冲突检测我们实测后将高冲突场景的P95延迟从210ms压到38ms。注意Agent状态机不是简单的KV存储它要求事务具备“确定性重试”能力。PolarDB的SERIALIZABLE最可靠但需手动调优Aurora的无状态设计在长流程中风险最高TDSQL-C的2PC最稳但扩容成本高TiDB的乐观模型在低冲突场景下性能最优但必须配合Async Commit使用。4. 多租户隔离从物理隔离到逻辑隔离的生存博弈AI/Agent平台几乎全是SaaS模式多租户隔离不是功能选项而是生死线。但四个数据库的隔离方案差异巨大直接影响安全合规与成本结构。PolarDB提供三种隔离模式共享集群Schema级隔离、独享集群实例级隔离、以及Serverless模式按需分配。我们实测发现共享集群下不同租户的查询会竞争同一缓冲池当某个租户执行大表扫描时其他租户的缓存命中率从92%暴跌至37%。更严重的是PG的统计信息收集是全局的一个租户的查询计划可能被另一个租户的统计信息污染。某客户因此出现“租户A的慢查询拖垮租户B的实时推荐”的事故。解决方案是强制开启pg_stat_statements并为每个租户设置独立的work_mem但这需要DBA深度介入。Aurora的隔离最“云原生”——每个租户一个独立集群底层存储自动分片。好处是资源绝对隔离坏处是成本爆炸。我们测算过100个租户若全部用最小规格集群月成本比共享集群高3.8倍。更现实的问题是冷启动延迟新租户开通需5分钟无法满足“注册即用”的产品需求。Aurora Serverless v2虽支持弹性伸缩但最小vCPU配额仍为0.5对轻量租户仍是浪费。我们曾为某SAAS客服平台设计混合方案核心租户用独享集群长尾租户用Serverless v2但发现Serverless v2的冷启动在流量突增时不可控最终放弃。TDSQL-C的租户模型最像传统金融系统。它采用“租户数据库实例”的物理隔离但通过统一管控平台实现资源池化。关键创新在于“计算资源配额”——可为每个租户设置CPU/内存硬上限超限时直接拒绝连接而非降级。实测中当某个租户触发DDoS攻击时其他租户完全不受影响。但代价是运维复杂度每个租户需单独备份、单独监控、单独打补丁。我们在某政务云项目里部署时为200个委办局租户配置监控告警光脚本就写了3000行。TiDB的租户方案最具颠覆性。它通过TiDB Dashboard的“Placement Rules”实现逻辑隔离——同一集群内不同租户的数据可强制调度到指定TiKV节点组并绑定独立的PD调度策略。这意味着物理资源可共享但故障域完全隔离。我们实测过人为宕机一组TiKV节点只影响绑定在此的租户其他租户0感知。但挑战在于规则配置的复杂性——Placement Rules语法类似Kubernetes的Label Selector需要DBA掌握新技能栈。某客户曾因一条规则写错导致租户A的数据被误调度到租户B的节点组引发数据越界访问。关键结论多租户不是“能不能做”而是“怎么做才可持续”。PolarDB适合租户数少、预算充足的场景Aurora适合租户SLA要求极高、愿为隔离付费的客户TDSQL-C适合强监管行业如金融、政务TiDB适合技术能力强、追求极致资源利用率的平台型公司。5. 冷热数据分层Agent生命周期驱动的存储经济学Agent产生的数据天然具有强时效性刚结束的对话需毫秒级访问7天内的历史供质检回溯30天外的归档数据只需低成本存储。四个数据库的冷热分层能力直接决定你的存储成本曲线。PolarDB的分层依赖外部工具。它本身不提供自动分层需结合OSSFDWForeign Data Wrapper实现。我们为某电商Agent搭建过这套方案热数据留在本地SSD温数据7天前通过FDW映射到OSS冷数据30天前用OSS Lifecycle自动转低频存储。难点在于查询透明性——应用层需识别数据位置并路由SQL否则跨层JOIN会失败。我们最终用ProxySQL做了智能路由但增加了架构复杂度。实测下来存储成本降低64%但查询延迟增加12msOSS网关开销。Aurora的分层最省心。它原生支持“Aurora Serverless v2 Aurora Backtrack”Backtrack可将数据回滚到任意时间点最长2天本质是利用存储层的快照能力。但超出Backtrack范围的数据仍需手动导出到S3。我们测试过Aurora的S3 Unload功能发现它不支持向量字段导出导致RAG知识库无法归档。最终妥协方案是热数据用Aurora温数据用Aurora Serverless v2的自动暂停冷数据用Lambda定时导出到S3但Lambda函数需自行处理向量序列化。TDSQL-C的分层由“冷热数据表”机制驱动。它允许为同一张表的不同分区设置不同存储策略——例如PARTITION p202401 VALUES LESS THAN (20240201)存SSDp202312存HDD。关键优势是SQL透明SELECT * FROM session_log WHERE created_at 2024-01-01自动路由到SSD分区。但限制是分区键必须是日期字段且不支持向量字段的分区裁剪。我们在某物流Agent项目里因会话表含向量字段被迫将向量单独拆到另一张表用冗余存储换查询效率。TiDB的分层最灵活。它通过TiKV的“Region”和PD的“Placement Rules”组合实现可为不同Region设置不同副本策略如热Region三副本存SSD冷Region单副本存HDD。我们实测过将30天前的Region调度到HDD节点组后存储成本降58%且查询仍走TiDB SQL层应用无感。但挑战在于Region分裂策略——默认按Key Range分裂若会话ID是UUID会导致Region分布不均。解决方案是改造会话ID生成逻辑加入时间戳前缀使数据按时间局部性分布。实操心得冷热分层不是技术炫技而是成本控制的核心杠杆。PolarDB方案成熟但需额外组件Aurora开箱即用但功能残缺TDSQL-C强约束但SQL透明TiDB最灵活但需深入理解Region机制。建议从TiDB起步用Placement Rules快速验证分层效果再根据团队能力决定是否迁移到更成熟的方案。6. 四维对比实战决策树一张表定乾坤把前面所有维度的实测数据拉到一张表里你会发现选型不再是玄学而是可量化的工程决策。以下是我们为20个Agent项目沉淀出的决策树按优先级排序维度PolarDBAuroraTDSQL-CTiDB决策权重向量检索P95延迟86ms63ms58ms72ms★★★★☆状态机事务P95延迟42ms18ms18ms9ms★★★★★多租户故障隔离能力Schema级弱实例级强物理实例级最强Region级强★★★★冷热分层SQL透明度需ProxySQL弱Backtrack手动导出中分区表强Placement Rules最强★★★☆向量索引在线更新支持不支持支持支持★★★★长事务稳定性SERIALIZABLE强存储层中断弱2PC强Async Commit强★★★★团队运维能力要求PostgreSQL生态低AWS云服务中金融级DBA高TiDB生态高★★★决策树使用方法先锁定你的Agent平台最不可妥协的三个指标。比如如果你做的是实时金融风控Agent那么“长事务稳定性”“状态机事务延迟”“多租户隔离”就是前三名TDSQL-C直接胜出如果是创业公司做通用客服Agent追求快速上线和低成本“向量检索延迟”“冷热分层透明度”“团队运维门槛”更重要TiDB更合适而如果客户明确要求AWS生态集成且能接受冷启动延迟Aurora就是唯一选择。我们曾用这张表帮一家教育科技公司做选型。他们最初倾向PolarDB因团队熟悉PG但填表后发现其核心需求是“1000并发下Agent决策链路500ms”而PolarDB的状态机延迟42ms叠加向量延迟86ms已达128ms再算上网络和业务逻辑必然超限。转向TiDB后状态机9ms向量72ms81ms留出充足余量。更关键的是TiDB的Placement Rules让他们用一套集群支撑了500所学校租户首年存储成本比预估低41%。最后分享一个血泪教训不要在POC阶段只测单点性能。我们吃过亏——某项目POC时只测了向量查询四个库都达标上线后才发现TDSQL-C的2PC在跨分片JOIN时延迟翻倍而他们的RAG流程恰好需要关联用户画像表和知识库表。所以务必用真实业务SQL跑满72小时覆盖所有典型场景。7. 落地避坑指南那些文档里不会写的细节所有数据库厂商的白皮书都写“支持高并发”但真实世界里的坑往往藏在参数调优、版本兼容、甚至硬件选型的缝隙里。以下是我们在20个项目中踩过的坑按紧急程度排序第一坑TiDB的Region分裂与Agent会话ID设计TiDB默认按Key Range分裂Region若Agent会话ID用UUID如550e8400-e29b-41d4-a716-446655440000会导致Region分布极度不均——因为UUID是随机字符串新会话ID会散落在整个Key空间。实测中热点Region的QPS达12000而冷Region不足100PD调度器根本来不及平衡。解决方案是改造会话ID生成逻辑timestamp_ms shard_id random_suffix例如1717023456789_001_abc123。这样相同时间段的会话ID前缀一致Region按时间局部性分裂热点自动分散。这个改动让TiKV节点CPU使用率从92%降到65%。第二坑Aurora的Buffer Pool预热与Agent冷启动Aurora重启后Buffer Pool为空首次查询需从分布式存储加载数据延迟高达2秒。这对Agent平台是致命的——用户打开APP第一问就卡顿。官方方案是preload命令但只能预热指定表无法预热索引。我们摸索出有效方案在应用层健康检查接口里主动执行SELECT * FROM session_log WHERE id dummy LIMIT 1id设为高频访问的会话ID并用EXPLAIN ANALYZE触发索引加载。配合CloudWatch告警当Buffer Pool Hit Rate 80%时自动触发预热将冷启动延迟压到200ms内。第三坑PolarDB的PGVector与JSONB字段的隐式转换PGVector插件在处理jsonb-embedding路径时会触发隐式类型转换导致索引失效。某客户RAG查询突然变慢排查发现SQL里写的是WHERE embedding - [...]::vector但实际字段是>