<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>查询优化 on AntiO2</title>
        <link>https://blog.antio2.cn/tags/%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96/</link>
        <description>Recent content in 查询优化 on AntiO2</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <lastBuildDate>Thu, 23 Jul 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://blog.antio2.cn/tags/%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Agentic Data System</title>
        <link>https://blog.antio2.cn/tech/0_database/agent-first-data-systems/</link>
        <pubDate>Thu, 23 Jul 2026 00:00:00 +0800</pubDate>
        
        <guid>https://blog.antio2.cn/tech/0_database/agent-first-data-systems/</guid>
        <description>&lt;p&gt;大语言模型正在改变人与数据系统交互的方式。过去，用户需要理解数据库模式、查询语言和分析工具，再把自己的意图转换成SQL、Python或一组固定的数据流水线。在传统系统中，这一过程通常围绕CRUD展开：用户通过INSERT/UPDATE/DELETE完成数据写入与修改，通过SELECT查询数据，通过事务机制保证一致性，通过应用层逻辑或ETL pipeline将这些操作串联成业务流程。也就是说，用户不仅要表达“想要什么结果”，还需要明确“如何一步步操作数据”。Agent则能够代表用户探索数据、生成代码、调用工具、验证结果，并根据中间反馈不断修改方案。&lt;/p&gt;
&lt;p&gt;这种变化带来的问题，并不止于之前热门的研究问题：Text-to-SQL。其本质上仍然是在利用传统数据系统暴露出来的CRUD接口，只是把“写SQL”这一步交给了模型自动完成。当Agent可以低成本地产生大量查询、并行探索多个方案、执行假设性更新并保存长期记忆时，数据系统面对的workload结构本身也发生了变化。&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.vldb.org/cidrdb/papers/2026/p32-liu.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Supporting Our AI Overlords: Redesigning Data Systems to be Agent-First&lt;/a&gt;(CIDR&#39;26)将这一过程称为&lt;strong&gt;agentic speculation&lt;/strong&gt;，即“智能体推演”：Agent围绕一个任务持续提出假设、访问数据、构造局部方案、验证结果、从多个候选方向中选择下一步行动，数据系统需要从面向单条查询的query-first架构，演进为能够原生支持这种探索过程的agent-first架构。&lt;/p&gt;
&lt;h2 id=&#34;0x0-agentic-speculation对workload基本结构的改变&#34;&gt;0x0 Agentic Speculation对workload基本结构的改变
&lt;/h2&gt;&lt;p&gt;Agentic Speculation的第一个特征是高吞吐请求。&lt;/p&gt;
&lt;p&gt;传统数据库同样追求高吞吐，但传统吞吐通常来自大量相对独立的请求，例如一个网页后端可能通过JDBC并发地往数据库发送大量请求。系统主要优化单条查询的延迟、并发事务数和整体资源利用率在Agent workload中，大量请求可能来自同一个任务。 为了执行用户的一个任务，Agent可能先读取catalog，再查看表结构和列分布；随后抽样数据、尝试多个join key、生成几种过滤条件、执行近似聚合；如果结果不合理，它还会回到前面的步骤，更换数据源或修改分析路径。 因此，high throughput更准确地描述了一个高fan-out的任务结构：&lt;/p&gt;
&lt;p&gt;&lt;img class=&#34;gallery-image&#34; data-flex-basis=&#34;426px&#34; data-flex-grow=&#34;177&#34; height=&#34;720&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://blog.antio2.cn/tech/0_database/agent-first-data-systems/images/1_agent.jpeg&#34; srcset=&#34;https://blog.antio2.cn/tech/0_database/agent-first-data-systems/images/1_agent_hu_c70eeb8bfaee6b22.jpeg 800w, https://blog.antio2.cn/tech/0_database/agent-first-data-systems/images/1_agent.jpeg 1280w&#34; width=&#34;1280&#34;&gt;
这些请求之间通常具有明确联系：它们访问相似的数据，执行重叠的操作，并共享相同的最终目标。若后端仍将它们视为彼此独立的SQL或API请求，系统虽然可能实现很高的QPS，却会把大量计算资源消耗在最终被放弃的探索分支上&lt;/p&gt;
&lt;p&gt;论文使用BIRD text-to-SQL benchmark做了一个初步实验。增加串行或并行尝试次数后，任务成功率提高了约 14% 到 70%；但在每个问题生成的 50 次尝试中，真正不同的子计划通常只占总数的 10% 到 20% 以下。这说明多次探索确实能够提高成功率，同时也产生了显著的计算冗余。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;增加并行尝试次数或连续探索轮数后，Agent的任务成功率提高&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;651px&#34; data-flex-grow=&#34;271&#34; height=&#34;280&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://blog.antio2.cn/tech/0_database/agent-first-data-systems/images/figure-1-bird-success-rate.png&#34; width=&#34;760&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Agent的多次尝试中存在大量重复子表达式&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;552px&#34; data-flex-grow=&#34;230&#34; height=&#34;330&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://blog.antio2.cn/tech/0_database/agent-first-data-systems/images/figure-2-redundant-subexpressions.png&#34; width=&#34;760&#34;&gt;&lt;/p&gt;
&lt;p&gt;这种workload具有四个核心特征。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;规模性&lt;/strong&gt;意味着一个任务会诱发大量后端请求。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;异构性&lt;/strong&gt;意味着这些请求可能同时包含SQL、Python、向量检索、元数据访问、模型推理和外部工具调用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;冗余性&lt;/strong&gt;意味着不同探索分支经常重复扫描数据或执行相近计算。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可引导性&lt;/strong&gt;则意味着探索过程尚未固定，系统提供的成本、质量和数据特征反馈，可以直接改变Agent的下一步选择。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;单独看，每一种特征都不是数据库领域的新问题。多查询优化研究共享计算，近似查询处理允许精度与成本交换，自适应查询处理根据运行时反馈调整计划，事务分支和time travel支持多个数据版本。Agentic workload的特殊之处在于，这些机制需要跨越多个动态生成的请求，并围绕完整任务进行联合决策。&lt;/p&gt;
&lt;p&gt;优化单位开始从query转向trajectory，也就是Agent为完成一个任务，从开始到结束所经历的完整执行过程，包括每一步思考、查询、工具调用、中间结果、分支、回退和重新规划。&lt;/p&gt;
&lt;h2 id=&#34;0x1研究方向&#34;&gt;0x1研究方向
&lt;/h2&gt;&lt;h3 id=&#34;0x11-从query接口转向probe接口&#34;&gt;0x11 从Query接口转向Probe接口
&lt;/h3&gt;&lt;p&gt;传统查询接口要求调用者先准确描述自己需要什么。比如，一个BI用户可能通过一条精确的SQL查询，统计过去三个月各地区的销售额及同比变化。但是，当这个用户现在用Codex时，他更可能直接发出一个任务：“分析过去三个月各地区销售额下降的原因，找出最值得关注的异常，并给出可复现的证据。”Agent在探索早期通常无法提供完整的查询描述。它只知道任务目标，但尚不确定应该读取哪些表、采用哪些连接关系、分析哪些时间范围，以及需要用什么指标验证结论。这些信息需要在探索数据的过程中逐步确定。&lt;/p&gt;
&lt;p&gt;Agent-first论文因此引入了&lt;strong&gt;probe&lt;/strong&gt;。Probe仍然可以包含SQL或其他数据操作，但它还会携带任务阶段、Agent身份、精度要求、目标和优先级等上下文。论文将这些自然语言上下文称为&lt;strong&gt;brief&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;例如，同一条统计请求可以对应三种不同的系统语义：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;探索阶段：&lt;/strong&gt; 只需要判断某个方向是否值得继续，允许近似结果。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证阶段：&lt;/strong&gt; 需要确认候选结论，要求更高精度和可追溯性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;输出阶段：&lt;/strong&gt; 需要稳定结果、完整权限检查和可复现的执行记录。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;传统数据库只能看到查询文本，很难判断某个聚合究竟是最终答案，还是用于排除一个假设的临时探针。Brief让系统能够依据任务阶段选择执行策略：使用采样、返回已有中间结果、推迟精确计算，或者直接告诉Agent当前方向缺乏数据支持。&lt;/p&gt;
&lt;p&gt;这篇论文的作者团队，在另一个工作 &lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2502.13016&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LLM-Powered Proactive Data Systems&lt;/a&gt;里面已经提出，数据系统应从被动执行查询，转向主动解释、重写和分解用户请求，并在查询结果之外与用户交互。Agent-first架构进一步把这一思想扩展到连续、多分支、可能由多个Agent共同完成的任务轨迹。&lt;/p&gt;
&lt;p&gt;工业界目前最接近Probe接口的实现，是“自然语言意图 + 语义模型 + 工具调用”的组合。&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.databricks.com/aws/en/genie/set-up&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Databricks AI/BI Genie&lt;/a&gt;允许团队为数据空间配置可信数据、示例SQL、Unity Catalog函数、业务规则和知识说明，并利用&lt;a class=&#34;link&#34; href=&#34;https://docs.databricks.com/aws/en/data-governance/unity-catalog/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Unity Catalog&lt;/a&gt;中的指标、&lt;a class=&#34;link&#34; href=&#34;https://docs.databricks.com/aws/en/data-governance/unity-catalog/data-lineage&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;数据血缘&lt;/a&gt;和语义元数据约束Agent。&lt;a class=&#34;link&#34; href=&#34;https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Snowflake Cortex Agents&lt;/a&gt;则组合&lt;a class=&#34;link&#34; href=&#34;https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-analyst&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cortex Analyst&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;https://docs.snowflake.com/en/user-guide/views-semantic/overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Semantic Views&lt;/a&gt;和&lt;a class=&#34;link&#34; href=&#34;https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-search/cortex-search-overview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cortex Search&lt;/a&gt;，使Agent可以在结构化数据和非结构化数据之间规划调用。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Databricks AI/BI Genie的对话界面&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;311px&#34; data-flex-grow=&#34;129&#34; height=&#34;539&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://blog.antio2.cn/tech/0_database/agent-first-data-systems/images/databricks-genie-agent-ui.png&#34; width=&#34;700&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Snowflake Semantic Views连接业务语义、工具和底层数据&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;456px&#34; data-flex-grow=&#34;190&#34; height=&#34;667&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://blog.antio2.cn/tech/0_database/agent-first-data-systems/images/snowflake-semantic-views.png&#34; srcset=&#34;https://blog.antio2.cn/tech/0_database/agent-first-data-systems/images/snowflake-semantic-views_hu_2fe57e5a1e39561d.png 800w, https://blog.antio2.cn/tech/0_database/agent-first-data-systems/images/snowflake-semantic-views.png 1268w&#34; width=&#34;1268&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.cloud.google.com/bigquery/docs/create-data-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google BigQuery Data Agents&lt;/a&gt;可以绑定表、视图、图和UDF等知识源，并结合表元数据与面向特定use case的查询处理指令回答自然语言问题。&lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/en-us/fabric/data-science/how-to-create-data-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft Fabric Data Agent&lt;/a&gt;也采用类似方式，将Lakehouse、Warehouse、Power BI Semantic Model、KQL Database、Ontology和Microsoft Graph等&lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/en-us/fabric/data-science/data-agent-add-datasources?tabs=gql&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;数据源&lt;/a&gt;暴露为可对话的数据能力。&lt;/p&gt;
&lt;p&gt;这些产品已经开始携带查询文本之外的上下文，但当前上下文主要用于grounding和工具选择。论文设想中的Probe还要求执行引擎理解任务阶段、精度预算和未来决策价值，这一层尚未形成稳定的工业接口。&lt;/p&gt;
&lt;h3 id=&#34;0x12-优化器需要决定执行什么以及执行到什么程度&#34;&gt;0x12 优化器需要决定“执行什么”以及“执行到什么程度”
&lt;/h3&gt;&lt;p&gt;传统查询优化器通常假设查询的语义已经确定，它需要做的是在一组语义等价的执行计划中找到成本最低的一个。但在Agent任务中，一条请求往往不是独立的最终查询，而是探索过程中的一个Probe。它的价值不仅取决于自身返回了什么，还取决于这个结果会让Agent继续、放弃还是改变当前分析方向。因此，优化器面对的不再只是“如何执行这条查询”，还需要判断哪些Probe值得执行，以及每个Probe执行到什么程度才足够。&lt;/p&gt;
&lt;p&gt;这两个问题实际上相互关联。如果某个Probe只是为了初步判断一个特征是否与目标相关，那么完整扫描数据并计算精确结果可能没有必要。一个小样本、粗略直方图或历史缓存结果，也许已经足以排除这个方向。相反，如果Probe用于验证即将写入最终报告的关键结论，系统就需要提供更高精度、可追溯且可复现的结果。同一种数据操作处于不同任务阶段时，合理的执行方式可能完全不同。&lt;/p&gt;
&lt;p&gt;基于这一观察，Agent-first论文提出了&lt;strong&gt;satisficing probe optimizer&lt;/strong&gt;。这里的satisficing不是简单地牺牲准确率，而是让计算投入与当前决策所需的信息相匹配：优化器不必把每个Probe都执行到最高精度，只需以尽可能低的成本，提供足以支持Agent下一步判断的结果。为此，它需要同时估计Probe与任务目标的语义相关性、结果可能带来的信息增益、可复用的共享计算、近似执行产生的误差，以及该结果可能诱发的后续请求。&lt;/p&gt;
&lt;p&gt;于是，优化目标也从单条查询的最低latency转向整个任务的完成成本。一个执行极快但信息量不足的结果，可能让Agent继续生成十几个无效请求；另一个成本稍高但能够明显缩小搜索空间的结果，反而会减少后续探索，使任务更早收敛。判断一个执行计划是否“便宜”，不能只看本次Probe消耗了多少资源，还要看它如何改变剩余的任务轨迹。&lt;/p&gt;
&lt;p&gt;近年来出现的一些系统已经开始从不同层面接近这一目标。&lt;a class=&#34;link&#34; href=&#34;https://www.vldb.org/pvldb/vol18/p3035-shankar.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DocETL: Agentic Query Rewriting and Evaluation for Complex Document Processing&lt;/a&gt;(VLDB&#39;25)将复杂文档处理表示为声明式pipeline，由Agent生成重写策略并评估候选计划，再使用类似Cascades的方法搜索优化方案。在论文的四类任务中，优化后的pipeline相比基线取得了约21%到80%的准确率提升。这说明，当Agent的搜索空间受到结构化算子和评估器约束时，传统数据库的计划搜索思想仍然能够发挥作用。&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.vldb.org/cidrdb/papers/2026/p30-russo.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Deep Research is the New Analytics System: Towards Building the Runtime for AI-Driven Analytics&lt;/a&gt;(CIDR&#39;26)进一步把深度研究工作流抽象为计算算子、搜索算子和可物化的Context。系统在Palimpzest基础上加入ContextManager，为已经生成的上下文建立索引，从而把动态的Agent规划与上下文复用、物化等传统优化手段连接起来。其原型相较deep-research baseline将F1提升至1.95倍，同时将成本和运行时间分别减少约76.8%和72.7%。&lt;/p&gt;
&lt;p&gt;类似的变化也发生在模型服务层。&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2603.16104&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Efficient LLM Serving for Agentic Workflows: A Data Systems Perspective&lt;/a&gt;(SIGMOD&#39;26)提出的&lt;strong&gt;Helium&lt;/strong&gt;将Agent workflow视为查询计划，将每次LLM invocation视为其中的算子，再通过主动缓存和cache-aware scheduling优化执行，报告了最高约1.56倍的加速。虽然它主要处理模型推理侧的重复计算，但背后的逻辑与Probe优化一致：系统需要看到完整workflow中各次调用之间的关系，才能判断哪些结果值得计算、复用或推迟。&lt;/p&gt;
&lt;p&gt;这些工作共同指向一个新的优化层次。数据库优化器未必需要接管Agent的完整规划过程，但它至少需要看到多个请求之间的关联，以及它们服务的共同任务目标。只有这样，多查询优化、增量执行和共享物化才有可能从局部技巧上升为面向整个Agent任务的执行策略。&lt;/p&gt;
&lt;h3 id=&#34;0x13-grounding应成为双向反馈机制&#34;&gt;0x13 Grounding应成为双向反馈机制
&lt;/h3&gt;&lt;p&gt;当前Agent数据产品普遍强调grounding：通过schema、semantic layer、catalog、lineage和示例查询，使模型生成更可信的数据操作。&lt;/p&gt;
&lt;p&gt;Agent-first论文对grounding的要求更进一步。Agent不仅需要知道字段名称和业务定义，还需要理解数据分布、缺失值、编码方式、时间粒度、数据新鲜度、索引状态、查询代价和当前系统负载。&lt;/p&gt;
&lt;p&gt;论文中的第二个案例让OpenAI o3在PostgreSQL、SQLite、MongoDB、DuckDB和Python之间完成数据分析任务。研究者向Agent提供人类专家总结的系统提示后，Agent发出的SQL数量从平均 12.67 条下降到 10.38 条，总体减少约 18.1%；用于探索列的查询减少约 27.7%，不完整查询尝试减少约 36.6%。这说明少量系统侧知识就能显著改变Agent的探索轨迹。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Grounding hints减少Agent的无效查询&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;701px&#34; data-flex-grow=&#34;292&#34; height=&#34;260&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://blog.antio2.cn/tech/0_database/agent-first-data-systems/images/figure-5-grounding-hints.png&#34; width=&#34;760&#34;&gt;&lt;/p&gt;
&lt;p&gt;论文据此提出&lt;strong&gt;sleeper agents&lt;/strong&gt;：部署在数据系统内部、持续观察数据和执行状态的轻量Agent。它们可以发现schema变化、数据异常、热点、陈旧缓存或昂贵访问模式，并在需要时将这些信息提供给主Agent。&lt;/p&gt;
&lt;p&gt;现有工业系统已经完成了其中一部分。&lt;a class=&#34;link&#34; href=&#34;https://docs.databricks.com/aws/en/data-governance/unity-catalog/data-lineage&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Databricks Unity Catalog的数据血缘&lt;/a&gt;能够追踪到列级，&lt;a class=&#34;link&#34; href=&#34;https://docs.databricks.com/aws/en/uc-semantics/metric-views&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Metric Views&lt;/a&gt;则集中管理业务指标及面向Agent的语义元数据；&lt;a class=&#34;link&#34; href=&#34;https://docs.snowflake.com/en/user-guide/views-semantic/sql&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Snowflake Semantic Views&lt;/a&gt;可以定义维度、事实、指标和表间关系；&lt;a class=&#34;link&#34; href=&#34;https://docs.cloud.google.com/bigquery/docs/create-data-agents&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BigQuery Data Agents&lt;/a&gt;与&lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/en-us/fabric/data-science/how-to-create-data-agent&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fabric Data Agent&lt;/a&gt;允许开发者配置数据源说明、示例查询和专用指令。两家公司也把可观测性纳入Agent平台：&lt;a class=&#34;link&#34; href=&#34;https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-agents-monitor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Snowflake Cortex Agent Monitoring&lt;/a&gt;记录规划、工具选择、执行结果和最终回答，&lt;a class=&#34;link&#34; href=&#34;https://docs.databricks.com/aws/en/mlflow3/genai/tracing/observe-with-traces/ui-traces&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Databricks MLflow Tracing&lt;/a&gt;则展示调用链及每个span的输入、输出和耗时；相应的&lt;a class=&#34;link&#34; href=&#34;https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-agents-evaluations&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;evaluation&lt;/a&gt;与&lt;a class=&#34;link&#34; href=&#34;https://docs.databricks.com/aws/en/mlflow3/genai/eval-monitor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;评估和监控&lt;/a&gt;能力可进一步检查Agent的行为与答案质量。&lt;/p&gt;
&lt;p&gt;从公开能力看，这些系统当前更擅长将人工维护的语义知识注入Agent。数据库根据实时执行成本、数据质量和共享计算机会主动影响Agent计划的能力仍然有限。&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://modelcontextprotocol.io/docs/learn/architecture&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MCP&lt;/a&gt;进一步统一了Agent调用数据工具的接口。其数据层定义了Resources、Prompts和Tools等核心原语，使数据库、搜索系统和业务API可以通过一致的发现与调用方式暴露给模型，具体实现则可以只支持其中一部分。&lt;a class=&#34;link&#34; href=&#34;https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-agents-mcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Snowflake-managed MCP server&lt;/a&gt;能够将Cortex Analyst、Cortex Search、Cortex Agents、SQL和自定义函数封装为Tools；发布后的&lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/en-us/fabric/data-science/data-agent-mcp-server&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fabric Data Agent MCP server&lt;/a&gt;则把一个Data Agent作为单独的Tool，通过远程MCP端点提供服务。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;Fabric Data Agent发布后的MCP Server设置&#34; class=&#34;gallery-image&#34; data-flex-basis=&#34;438px&#34; data-flex-grow=&#34;182&#34; height=&#34;1882&#34; loading=&#34;lazy&#34; sizes=&#34;(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px&#34; src=&#34;https://blog.antio2.cn/tech/0_database/agent-first-data-systems/images/fabric-data-agent-mcp-server.png&#34; srcset=&#34;https://blog.antio2.cn/tech/0_database/agent-first-data-systems/images/fabric-data-agent-mcp-server_hu_2f040de314bee097.png 800w, https://blog.antio2.cn/tech/0_database/agent-first-data-systems/images/fabric-data-agent-mcp-server_hu_1b9f11d9cca45129.png 1600w, https://blog.antio2.cn/tech/0_database/agent-first-data-systems/images/fabric-data-agent-mcp-server_hu_7fc606250a49dc42.png 2400w, https://blog.antio2.cn/tech/0_database/agent-first-data-systems/images/fabric-data-agent-mcp-server.png 3442w&#34; width=&#34;3442&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Fabric Data Agent发布后的MCP Server设置页，其中包含Server URL、Tool名称和Tool描述。来源：&lt;a class=&#34;link&#34; href=&#34;https://learn.microsoft.com/en-us/fabric/data-science/data-agent-mcp-server&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft官方文档&lt;/a&gt;。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;从协议范围看，MCP关注的是上下文交换、能力发现和调用互操作，并不规定AI应用应当如何使用这些上下文。它没有定义多个工具调用如何联合优化，也没有定义数据系统如何向Agent反馈执行代价、近似误差和信息增益。因此，MCP可以成为Agent-first系统的连接层，但仅仅接入MCP并不会自动形成Agent-first优化器。&lt;/p&gt;
&lt;h3 id=&#34;0x14-agent-memory需要成为可管理的语义缓存&#34;&gt;0x14 Agent Memory需要成为可管理的语义缓存
&lt;/h3&gt;&lt;p&gt;Agent在长期任务中需要记住此前访问过的数据、尝试过的假设、失败原因和中间结果。最直接的实现是把历史对话和文档切片写入向量数据库，再通过相似度检索放回上下文。&lt;/p&gt;
&lt;p&gt;这种实现只覆盖了memory retrieval的一部分。一个数据系统意义上的Agent memory还需要解决：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些信息值得长期保留；&lt;/li&gt;
&lt;li&gt;中间结果依赖哪个数据版本；&lt;/li&gt;
&lt;li&gt;当源数据变化时，哪些记忆已经失效；&lt;/li&gt;
&lt;li&gt;不同用户、Agent和任务之间能否共享记忆；&lt;/li&gt;
&lt;li&gt;失败路径何时有价值，何时应被淘汰；&lt;/li&gt;
&lt;li&gt;如何在检索质量、写入成本和读取延迟之间取舍。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Agent-first论文将memory store描述为一个持久、可查询的语义缓存。它既可以保存历史Probe和部分解决方案，也可以保存有关底层数据的统计与解释，例如字段编码、缺失值模式、时间粒度和空间粒度。论文同时指出，新鲜度、权限和生命周期管理仍然是开放问题。
&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2606.06448&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Agent Memory: Characterization and System Implications of Stateful Long-Horizon Workloads&lt;/a&gt;(arXiv&#39;26)对十类Agent memory系统进行分析，将memory lifecycle拆为构建、检索和生成阶段，并指出不同架构会在写路径、读路径、延迟、新鲜度和资源调度之间转移成本。&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2606.24775&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Are We Ready For An Agent-Native Memory System?&lt;/a&gt;(arXiv&#39;26)则将memory拆为表示与存储、信息抽取、检索与路由、维护四个环节。其评估显示没有一种架构在所有workload上占优，局部维护通常比全局重组更具成本效率。&lt;/p&gt;
&lt;p&gt;这些结果与传统数据库中的物化视图维护、缓存失效、增量计算和数据版本管理高度相关。Agent memory的工程难点很可能不在embedding index本身，而在于如何建立从记忆到数据版本、工具执行和任务决策的provenance。&lt;/p&gt;
&lt;p&gt;例如一个可靠的memory entry应该记录以下信息：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;字段&lt;/th&gt;
          &lt;th&gt;内容&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;观察&lt;/td&gt;
          &lt;td&gt;过去七天欧洲区域退款率上升&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;数据依赖&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;orders&lt;/code&gt; snapshot &lt;code&gt;183&lt;/code&gt;&lt;br&gt;&lt;code&gt;refunds&lt;/code&gt; snapshot &lt;code&gt;92&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;执行依赖&lt;/td&gt;
          &lt;td&gt;查询计划hash：&lt;code&gt;7f2...&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;有效范围&lt;/td&gt;
          &lt;td&gt;截至&lt;code&gt;2026-07-20&lt;/code&gt;&lt;br&gt;仅适用于EU region&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;置信度&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;0.87&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;失效条件&lt;/td&gt;
          &lt;td&gt;任一依赖表出现新snapshot&lt;br&gt;或退款口径发生变化&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这条memory的核心是把结论与产生它的数据状态绑定在一起。数据依赖和查询计划让系统能够追溯、验证或重新计算这条观察；有效范围和置信度帮助Agent判断它能否用于当前任务；失效条件则规定何时需要将其标记为陈旧并重新评估。例如，&lt;code&gt;orders&lt;/code&gt;或&lt;code&gt;refunds&lt;/code&gt;出现新snapshot后，系统不应继续把旧结论当作当前事实，而应触发增量更新或重新执行相关Probe。这样，memory才从一段可以被相似度检索出来的文本，变成一个能够随底层数据演化而维护的语义对象。&lt;/p&gt;
&lt;h3 id=&#34;0x15-分支事务可验证执行&#34;&gt;0x15 分支事务、可验证执行
&lt;/h3&gt;&lt;p&gt;数据分析Agent主要读取数据，操作型Agent还会执行更新。&lt;/p&gt;
&lt;p&gt;论文给出的航班调度示例中，Agent需要为延误航班构造多个候选机组方案。每个方案可能涉及数十次数据库更新。为了比较这些方案，Agent需要复制数据库状态、执行推测性修改、验证约束，再回滚不合适的分支。&lt;/p&gt;
&lt;p&gt;传统事务可以保证单个方案的原子性，却不适合频繁维护大量并行假设世界。论文将所需能力称为&lt;strong&gt;multi-world isolation&lt;/strong&gt;，并形容为“MVCC on steroids”：系统需要低成本的copy-on-write分支、快速回滚、跨分支比较，以及最终选择性合并。论文还引用Neon的观察：Agent创建分支的频率约为人类用户的20倍，回滚频率约为50倍。&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://neon.com/blog/instantly-copy-tb-size-datasets-the-magic-of-copy-on-write&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Neon Database Branching&lt;/a&gt;已经将数据库branch实现为copy-on-write clone。创建子分支时，系统不会完整复制父分支的数据，而是让两者引用相同的数据页；只有当子分支发生修改时，才为变化的内容写入新页面。子分支与父分支彼此隔离，还可以通过&lt;a class=&#34;link&#34; href=&#34;https://neon.com/blog/announcing-branch-reset&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;branch reset&lt;/a&gt;放弃修改并重新对齐父分支，因此适合作为Agent测试方案或执行推测性更新的临时环境。&lt;/p&gt;
&lt;p&gt;Lakehouse领域也开始出现类似工作。&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2607.08319&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitLake: Git-for-data for the agentic lakehouse&lt;/a&gt;(DASHSys@VLDB&#39;26)将Iceberg snapshot提升为lakehouse范围的commit、branch和merge，使Agent可以在隔离分支中执行数据修改，再由人类审核和发布。&lt;/p&gt;
&lt;h2 id=&#34;0x2-研究空白&#34;&gt;0x2 研究空白
&lt;/h2&gt;&lt;p&gt;围绕Agent-first data systems，现有研究已经覆盖数据Agent评测、工作流优化、长期记忆和数据库分支等局部问题，但完整的系统架构仍处于早期阶段。当前比较明确的研究空白主要体现在以下几个方面。&lt;/p&gt;
&lt;h3 id=&#34;0x21-缺少面向数据系统的agent-workload-benchmark&#34;&gt;0x21 缺少面向数据系统的Agent Workload Benchmark
&lt;/h3&gt;&lt;p&gt;这里需要区分两个问题：Agent能否完成数据任务，以及数据系统能否高效承载Agent产生的workload。前者已经有直接相关的工作。&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2603.20576&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Data Agent Benchmark&lt;/a&gt;(DAB)覆盖六个行业中的跨数据库集成、转换和分析任务；&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2607.01647&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AgenticDataBench&lt;/a&gt;则包含15个领域的真实数据科学任务，并提供细粒度skill标注。&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2604.17180&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BranchBench&lt;/a&gt;和&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2606.06448&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Agent Memory&lt;/a&gt;的系统化评测也开始分别关注数据库分支与长期记忆。&lt;/p&gt;
&lt;p&gt;但这些benchmark的评价对象仍是Agent能力或某个局部机制。目前还缺少被广泛接受的端到端Agent workload benchmark，将完整的Agent任务视为后端workload，同时记录任务目标、数据和工具约束、schema与数据版本、Probe序列、并行分支、回退重试、任务预算和停止条件。评价指标也需要从QPS和单条SQL latency扩展到任务成功率、完成时间、总成本、重复计算比例、共享收益、memory新鲜度以及branch、rollback和merge开销。&lt;/p&gt;
&lt;h3 id=&#34;0x22-缺少trajectory-level-optimizer&#34;&gt;0x22 缺少Trajectory-Level Optimizer
&lt;/h3&gt;&lt;p&gt;当前研究已经分别优化SQL、语义算子pipeline、LLM serving和多Agent workflow，但还没有统一的数据结构与成本模型，能够同时表示数据算子、模型调用、搜索、代码执行和外部工具。这样的优化器不仅要估计当前Probe的执行成本，还要估计它能够减少多少后续探索；目标也不能只是最小化单条查询延迟，而需要联合考虑任务完成时间、总成本、结果质量和信息增益。&lt;/p&gt;
&lt;h3 id=&#34;0x23-缺少语义级的跨probe共享执行&#34;&gt;0x23 缺少语义级的跨Probe共享执行
&lt;/h3&gt;&lt;p&gt;传统multi-query optimization通常面对一组已经给定的查询，通过匹配相同或相似的物理算子共享Scan、Join和Aggregate。Agent产生的Probe则是动态的：两个请求可能使用不同的自然语言、SQL结构甚至执行引擎，但访问相同数据并探索同一个概念。系统需要识别这种语义重叠，并判断能否安全复用数据扫描、模型推理、中间结果或近似答案。现有的语法级公共子表达式匹配还不足以解决这一问题。&lt;/p&gt;
&lt;h3 id=&#34;0x24-缺少双向steering机制&#34;&gt;0x24 缺少双向Steering机制
&lt;/h3&gt;&lt;p&gt;现有工业产品主要通过schema、semantic layer、verified queries和业务指令向Agent提供静态grounding。Agent-first系统还需要根据实时状态返回查询代价、数据新鲜度、结果置信度、缓存状态和why-not provenance，并在当前Probe过于昂贵、已有结果可以替代或继续探索的预期收益过低时主动建议Agent改变计划。这里不仅缺少稳定的表达协议，也缺少关于何时介入、Agent是否应遵循反馈，以及错误steering如何恢复的控制机制。&lt;/p&gt;
&lt;h3 id=&#34;0x25-缺少version-aware-agent-memory&#34;&gt;0x25 缺少Version-Aware Agent Memory
&lt;/h3&gt;&lt;p&gt;现有Agent Memory大多围绕历史文本的写入、压缩和相似度检索展开，但数据任务中的记忆往往依赖特定snapshot、schema、查询计划、模型版本和业务口径。任何依赖发生变化，都可能使历史结论失效。因此，Agent Memory更接近带语义和provenance的物化结果，其开放问题包括依赖追踪、增量失效、权限继承、跨Agent共享和生命周期管理。&lt;/p&gt;
&lt;h3 id=&#34;0x26-缺少面向speculative-writes的事务与治理机制&#34;&gt;0x26 缺少面向Speculative Writes的事务与治理机制
&lt;/h3&gt;&lt;p&gt;BranchBench、Neon和GitLake已经展示了Agent workload对数据库分支的需求，但低成本创建分支只是第一步。真实系统还需要在多个候选世界中验证业务约束、发现写冲突、比较方案质量，并把选中的修改安全合并回主分支；跨数据库、模型和外部工具传播的中间状态也必须遵守权限与数据流策略。传统事务解决一次确定执行的原子性与隔离性，Agent-first系统则需要进一步支持大量不确定候选方案的生成、验证、审核和淘汰。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
