修改过用户门户之后,重新启动就报这个错,然后使用自带的修复功能,修复之后依然报错,日志中显示没有C:\InterSystems\HealthConnect\mgr\IRIS.WIJ,我复制了别人的过来依然报错,由于代码没有做备份我不能重装,有没有什么办法修复一下,或者把代码备份一下,我再重装。

InterSystems IRIS 是一个完整的数据平台
InterSystems IRIS 为您提供了捕获、共享、理解组织最宝贵的资产(数据)并采取相应行动所需的一切。
作为一个完整的平台,InterSystems IRIS 不需要集成多种开发技术。应用程序需要更少的代码、更少的系统资源和更少的维护。
修改过用户门户之后,重新启动就报这个错,然后使用自带的修复功能,修复之后依然报错,日志中显示没有C:\InterSystems\HealthConnect\mgr\IRIS.WIJ,我复制了别人的过来依然报错,由于代码没有做备份我不能重装,有没有什么办法修复一下,或者把代码备份一下,我再重装。

可以在SELECT、INSERT、UPDATE、或表命令中为查询优化器指定一个或多个注释选项。
注释选项指定查询优化器在编译SQL查询期间使用的选项。
通常,注释选项用于覆盖特定查询的系统范围默认配置。
语法(在和#之间没有空格)指定了一个注释选项。
注释选项不是注释;
它为查询优化器指定一个值。
注释选项使用语法指定,通常是对,例如: 。
支持更复杂的JSON语法,比如嵌套值。
注释选项不是注释;
除了语法之外,它可能不包含任何文本。
包含非文本在/* ... */分隔符导致错误。
InterSystems SQL不验证字符串的内容。
关键字必须用大写字母指定。
的大括号语法中不应该使用空格。
如果SQL代码用引号括起来,比如动态SQL语句,JSON语法中的引号应该是双引号。
例如:myquery="SELECT Name FROM Sample.MyTest /*#OPTIONS {""optName"":""optValue""} */".
可以在SQL代码中任何可以指定注释的地方指定 comment选项。 在显示的语句文本中,注释选项总是作为注释显示在语句文本的末尾。
你可以在SQL代码中指定多个 comment选项。 它们按照指定的顺序显示在返回的语句文本中。
InterSystems IRIS、IRIS for Health和HealthShare Health Connect的2021.1版本的预览版现已发布。
由于这是一个预览版,我们希望在下个月的通用版本发布之前了解您对这个新版本的体验。请通过开发者社区分享您的反馈,以便我们能够共同打造一个更好的产品。
InterSystems IRIS数据平台2021.1是一个扩展维护(EM)版本。自2020.1(上一个EM版本)以来,在持续交付(CD)版本中增加了许多重要的新功能和改进。请参考2020.2、2020.3和2020.4的发布说明,了解这些内容的概况。
这个版本的增强功能为开发人员提供了更大的自由度,可以用他们选择的语言构建快速和强大的应用程序,并使用户能够通过新的和更快的分析功能更有效地处理大量的信息。
通过InterSystems IRIS 2021.1,客户可以部署InterSystems IRIS Adaptive Analytics,这是一个附加产品,它扩展了InterSystems IRIS,为分析终端用户提供了更强大的易用性、灵活性、可扩展性以及效率,而不管他们选择何种商业智能(BI)工具。它能够定义一个利于分析的业务模型,并通过在后台自主构建和维护临时数据结构,透明地加速针对该模型运行分析查询时的工作负载。
索引通过维护常见请求数据的排序子集,提供了一种优化查询的机制。 确定哪些字段应该被索引需要一些思考:太少或错误的索引和关键查询将运行太慢; 太多的索引会降低插入和更新性能(因为必须设置或更新索引值)。
要确定添加索引是否会提高查询性能,请从管理门户SQL接口运行查询,并在性能中注意全局引用的数量。
添加索引,然后重新运行查询,注意全局引用的数量。
一个有用的索引应该减少全局引用的数量。
可以通过在WHERE子句或ON子句条件前使用%NOINDEX关键字来防止使用索引。
应该为联接中指定的字段(属性)编制索引。左外部联接从左表开始,然后查看右表;因此,应该为右表中的字段建立索引。在下面的示例中,应该为编制索引:
FROM Table1 AS T1 LEFT OUTER JOIN Table2 AS T2 ON T1.f1 = T2.f2
内部联接应该在两个ON子句字段上都有索引。
执行“显示计划”,然后找到第一张map。
如果查询计划中的第一个项目是,或者查询计划调用的模块的第一个项目是“Read master map”,则查询的第一个映射是主映射,而不是索引映射。
因为主映射读取数据本身,而不是数据索引,这总是表明查询计划效率低下。
InterSystems SQL自动使用查询优化器创建在大多数情况下提供最佳查询性能的查询计划。该优化器在许多方面提高了查询性能,包括确定要使用哪些索引、确定多个AND条件的求值顺序、在执行多个联接时确定表的顺序,以及许多其他优化操作。可以在查询的FROM子句中向此优化器提供“提示”。本章介绍可用于评估查询计划和修改InterSystems SQL将如何优化特定查询的工具。
InterSystems IRIS®Data Platform支持以下优化SQL查询的工具:
SQL Runtime Statistics用于生成查询执行的运行时性能统计信息EXPLAIN命令、$SYSTEM.SQL.ExPlan()方法以及管理门户和SQL Shell中的各种Show Plan工具。查询计划和统计数据是在准备查询时生成的,不需要执行查询。亲爱的社区开发者们:
本周进入 InterSystems 开发者工具编程大赛 投票时间(4月19日-25日)! 来为你心目中基于InterSystems IRIS而构建的最佳方案投票吧!
🔥 投票入口: 点击投票 🔥
如何投票?有哪些最新信息值得了解一下?
运行时计划选择(RTPC)是一个配置选项,它允许SQL优化器利用运行时(查询执行时)的离群值信息。运行时计划选择是系统范围的SQL配置选项。
当RTPC被激活时,准备查询包括检测查询是否包含具有离群值的字段上的条件。如果PREPARE检测到一个或多个异常值字段条件,则不会将查询发送到优化器。相反,SQL会生成一个运行时计划选择存根。在执行时,优化器使用此存根选择要执行的查询计划:忽略离群值状态的标准查询计划,或针对离群值状态进行优化的替代查询计划。如果有多个异常值条件,优化器可以从多个备选运行时查询计划中进行选择。
DECLARE QRS CURSOR FOR SELECT Top ? Name,HaveContactInfo FROM Sample.MyTest WHERE HaveContactInfo=?,用问号表示文字替代变量。在医院信息化建设中,如何打通医院的各个系统,给患者提供连续、无缝的良好体验,集成平台发挥着重要作用。而集成平台方案如何适应现在的多云时代、需要具备什么样的特性、如何与多云环境更好地结合以便为医院的信息化建设带来更多的便利?面对这一系列问题,InterSystems中国业务拓展经理李岩为您解读InterSystems集成平台方案的特点和优势,以及构建在VMware云方案上的最佳实践,让您了解云环境下集成平台方案的新特性和优势。
有人有将NonStop SQLMP与IRIS连接的经验吗?
如果可能的话,我需要一些参考或技巧,实际上是与JDBC驱动程序连接的,以便互连并解决许多各种各样的问题,例如:
一些查询(不是很多)有空获取,可以正常工作,但没有要获取的内容,而且确定Select 语句是正确的。
系统自动维护已准备好的SQL语句(“查询”)的缓存。这允许重新执行SQL查询,而无需重复优化查询和开发查询计划的开销。缓存查询是在准备某些SQL语句时创建的。准备查询发生在运行时,而不是在编译包含SQL查询代码的例程时。通常,PREPARE紧跟在SQL语句的第一次执行之后,但在动态SQL中,可以准备查询而不执行它。后续执行会忽略PREPARE语句,转而访问缓存的查询。要强制对现有查询进行新的准备,必须清除缓存的查询。
所有SQL调用都会创建缓存查询,无论是在ObjectScript例程中调用还是在类方法中调用。
$SYSTEM.SQL.DDLImport()方法在准备查询时创建缓存查询。管理门户执行SQL接口、InterSystems SQL Shell和%SYSTEM.SQL.Execute()方法使用动态SQL,因此使用准备操作来创建缓存查询。它们列在命名空间(或指定方案)的Management Portal常规缓存查询列表、每个正在访问的表的Management Portal Catalog Details缓存查询列表以及SQL语句列表中。动态SQL遵循本章中介绍的缓存查询命名约定。
%PrepareClassQuery()方法)或第一次执行(调用)时创建缓存查询。现在有windows上的 编译好的nginx 可以做为iris 的web 服务器吗? ngx_http_csp_module_sa.c , cspapi.h 这两个文件在哪下载?
调优表操作根据表中的代表性数据计算和设置表统计信息:
ExtentSize,它可能是表中的实际行数(行数),也可能不是。Map Name、BlockCount和Source of BlockCount。从管理门户运行Tune Table工具时,是表中当前行的实际计数。默认情况下,GatherTableStats()方法还将实际行数用作ExtentSize。当表包含大量行时,最好对较少的行执行分析。可以使用SQL tune table命令并指定来仅对总行的一定百分比执行分析。在针对包含大量行的表运行时,可以使用此选项来提高性能。此值应该足够大,以便对代表性数据进行采样。如果。
可以将设置为。如果表从来不打算填充数据,但用于其他目的(如查询联接),则可能需要这样做。当将ExtentSize设置为时,InterSystems IRIS会将每个字段的选择性设置为,并将每个字段的平均字段大小设置为。
Tune Table以百分比计算每个属性(字段)值的选择性。
IRIS相比Caché在部署上的一个进步是支持docker。即便不是云部署, 使用docker也带来非常多的便利。 尤其是在开发测试环节,由于docker的使用更便捷,除非要模拟客户的环境或者做规定的性能测试,我在测试中基本已经不再使用本机的实例或者虚机。IRIS的联机文档有详细的IRIS docker安装使用指导,本文只是一个简单的,快速上手的在测试环境安装IRIS docker的简单步骤,尤其适合初学者。
注意Windows上docker可能会遇到这样那样的问题,因此通常还是推荐在Linux或者Mac OS上使用。正式的生产环境的IRIS docker container也是不支持Windows系统的。
Referrence
##1. 在操作系统上安装Docker环境
Docker官方文档的安装步骤非常清晰,我按照上面的步骤在MAC和CentOS上安装docker从来没有出现过问题。
要确保InterSystems IRIS®Data Platform上的InterSystems SQL表的最高性能,可以执行多种操作。优化可以对针对该表运行的任何查询产生重大影响。本章讨论以下性能优化注意事项:
ExtentSize、Selective和BlockCount用于在用数据填充表之前指定表数据估计;此元数据用于优化未来的查询。当查询优化器决定执行特定SQL查询的最有效方式时,它会考虑以下三种情况:
为了确保查询优化器能够做出正确的决策,正确设置这些值非常重要。
你好,
smp里面如何添加数据库 只能用command添加吗?没有在portal里看到添加数据库这个功能。
还想请问要把Excel的数据import到IRIS应该用什么方式去操作?
可以使用以下任一方法验证索引
$SYSTEM.OBJ.ValidateIndices()验证表的索引,还验证该表的集合子表中的任何索引。%Library.Storage.%ValidateIndices()验证表的索引。集合子表索引必须使用单独的%ValidateIndices()调用进行验证。这两种方法都会检查指定表的一个或多个索引的数据完整性,并可以选择更正发现的任何索引完整性问题。他们分两步执行索引验证:
如果这两种方法中的任何一种发现不一致,它都可以有选择地更正索引结构和/或内容。它可以验证标准索引、位图索引、位图范围索引和位片索引,并可选择对其进行校正。默认情况下,这两种方法都会验证索引,但不会更正索引。
如果满足以下条件,%ValidateIndices()只能用于更正(生成)读写活动系统上的索引:如上所述,使用了SetMapSelecability();参数必须包括和。由于速度明显较慢,因此是在活动系统上构建索引的首选方法。
通常从终端运行。它显示当前设备的输出。此方法可以应用于指定的索引名称,也可以应用于为指定表(类)定义的所有索引。
位图索引是一种特殊类型的索引,它使用一系列位串来表示与给定索引数据值相对应的一组ID值。
位图索引具有以下重要功能:
counting、AND和OR)经过优化以获得高性能。位图索引的创建取决于表的唯一标识字段的性质:
ID,或使用定义自定义值,其中基于类型为且>的单个属性,或类型型且且。受下列限制,位图索引的操作方式与标准索引相同。 索引值将被整理,可以在多个字段的组合上建立索引。
位图索引的工作方式如下。
假设Person表,其中包含一些列:

此表中的每一行都有一个系统分配的RowID号(一组递增的整数值)。位图索引使用一组位字符串(包含1和0值的字符串)。在位串中,位的序号位置对应于索引表的RowID。对于给定值,假设State
圆满结束!
所有的专题会议都已经播出了。当然,我们全部102部预录制的专题会议现在可以点播了,您可以随意观看,即使您错过了现场问答的机会。
说到现场问答,我们已经举办了6次现场会议,您也可以观看。我之前写过一篇单独的博客文章,题目是如何让您的问题会帮助我们做得更好。
智能工厂启动包
今天备受关注的亮点之一是Intersystems IRIS智能工厂启动包在OpenExchange上发布。为此,我们的合作伙伴ITVisors和他们的客户Vlisco与我们的Joe Lichtenberg一起举办了一场精彩的会议“MFG001:介绍适用于制造业的InterSystems IRIS智能工厂启动包”。
容器和Kubernetes平台
今天我们宣布了一个高度安全的新版IRIS容器,名为“iris-lockeddown”,这个容器非常适合在Kubernetes中使用加固型pod安全策略的团队。说到Kubernetes,Steve Lubars演示了我们新的InterSystems Kubernetes Operator,它让您可以很轻松地在Kubernetes 中部署IRIS集群。而Luca Ravazzolo则演示了如何用CPF合并文件配置您的IRIS实例,特别是如何自动化进行镜像配置。还有其他一些有趣的问题。
我们刚刚结束了第二天的专题会议,会议内容精彩纷呈!虽然大家无法同时观看多个平行会议,但是线上会议有一个优势,那就是您可以根据自己的需要回看错过的内容!
在昨天的博客文章(第一天会议亮点)中,我介绍了大部分值得关注的公告,如 InterSystems IRIS Adaptive Analytics 和FHIR加速器服务等。所以,今天我想更宽泛地讨论一些战略主题。
运营和系统管理
现在,越来越多的客户业务已经运行在云端,也有越来越多的人开始在本地部署现代部署策略。Mark Bolinsky今天主持了两场背靠背会议:CL003 云存储策略和CL004 云备份策略,为使用云端生产工作的用户带来了很多技术细节。我们新推出的系统警报和监控(SAM)模块也得到了不错的反馈。相关内容请查看DEV007 系统警报和监控和CL005 分布式部署。另一个另广大开发者兴奋的消息是,集群监控现在可以轻松实现。在此感谢所有参与并提出问题的与会者!
安全性
在安全性方面,InterSystems一直受到客户和分析师的高度好评,不过大多数人会认为这样做是为了保持自身产品的安全。这当然是我们的一个目标,但是我们还添加了许多新的安全特性。今天的SEC000 OCSP装订就是一个典型的例子。虽然OCSP(在线证书状态协议)可提供更强的安全性,但也会影响浏览器性能。使用OCSP装订功能后,服务器会检查X.
IRIS 中支持的四种方式:
SQL、Objects、REST 和 GraphQL
卡济米尔·马列维奇,《运动员》(1932)
>
> “你当然无法理解! 习惯了坐马车旅行的人怎么可能理解乘坐火车或者飞机旅行的人的感受和印象?”
>
> >
> 卡济米尔·马列维奇 (1916)
>
## 引言
我们已经讨论过为什么在主题领域建模使用对象类型优于使用 SQL。 当时得出的结论和总结的事实如今依然适用。 那么,我们为什么要退后到对象和类型之前的时代,讨论将对象的操作拖回到使用global的技术? 我们又为什么要鼓励面条式代码?难道是为了用它难以跟踪的错误考验开发者的技能熟练度?
目前有几种观点支持通过基于 SQL/REST/GraphQL 的 API 传输数据,而不是将其表示为类型/对象:
在讨论实现 API 之前,我们先来看一下底层的抽象层。 下图显示了数据在永久存储位置与处理并向应用程序用户呈现的位置之间的移动方式。
InterSystems IRIS 下使用 DataOps .png)
Gartner 对 DataOps 的定义是:“DataOps 是一种协作式的数据管理方法,侧重于改善整个组织中数据管理者和数据消费者之间数据流的沟通、整合与自动化。 DataOps 的目标是创建可预测的数据、数据模型和相关项目的交付和变更管理,从而更快地交付价值。 DataOps 采取特殊技术手段和相应治理水平自动化数据交付的设计、部署和管理,以元数据提高动态环境中数据的易用性和价值。”
2014 年 6 月 19 日,InformationWeek 特约编辑 Lenny Liebmann 发表于 IBM Big Data & Analytics Hub 的题为“3 reasons why DataOps is essential for big data success”的文章中首次提出 DataOps 这一概念。 DataOps 一词后被 Andy Palmer 推广到 Tamr。 DataOps 是“数据运营”的专属名称。 2017 年对 DataOps 来说是意义重大的一年,生态系统取得巨大发展,分析师覆盖范围进一步扩张,关键字搜索量以及调查、出版物和开源项目数均有所提升。 Gartner 在 2018 年的 Hype Cycle for Data Management 中添加了 DataOps 。
我正在参加 Joel Solon 讲授的“使用 InterSystems Objects 和 SQL 进行开发”课程。 课程非常好,我将在这里分享一些从培训中总结的提示。
第 3 天的提示:
1. 您可以使用 %Dictionary 类查看类目录,并在 INFORMATION_SCHEMA 表中查看 sql 对象。
2. 可以在 ObjectScript 方法中以动态 SQL 或嵌入式 SQL 使用 SQL。
3. 您可以使用 ?(例如:where country = ?)将参数传递到动态 SQL 字符串, 使用冒号(例如:where country = :variable)将参数传递到嵌入式 SQL。
4. 动态 SQL 示例(来自 Intersystems 文档):
SET tStatement = ##class(%SQL.Statement).%New(,"Sample")
SET myquery = 3
SET myquery(1) = "SELECT TOP ? Name,DOB,Home_State"
SET myquery(2) = "FROM Person"
SET myquery(3) = "WHERE Age > 60 AND Age < 65"
SET qStatus = tStatement.%Prepare(.myquery)
IF qStatus'=1 {WRITE "%Prepare failed:" DO $System.Status.DisplayError(qStatus) QUIT}
DO tStatement.%Display()
WRITE !,"End of %Prepare display"我正在参加 Joel Solon 讲授的“使用 InterSystems Objects 和 SQL 进行开发”课程。 课程非常好,我将在这里分享一些从培训中总结的提示。
第 4 天的提示:
1. 所有数据都存储在global中,global名称以 ^ 开头。 global示例:^animal。 global可以有多个数据位置(“子数据”)。 示例:^animal("大象","吃草")。
2. 可从任意系统范围(命名空间)访问 ^%* global。
3. global使 IRIS 能够支持多模型数据(对象、关系、文档、多维等)。
4. 要查看global,请转到 Management Portal > Explorer > Globals > Select Global > View,或者在终端中输入 do ^%G 或 zwrite ^global。
5. 在持久类和 SQL 表之间有自动对应关系:
6. 一个表可以对应多个类,但序列类serial是持久类表的一部分(没有特定的表)。
7. 一个类可以对应多个表。
8.
原文在这里
我正在参加 Joel Solon 讲授的“使用 InterSystems Objects 和 SQL 进行开发”课程。 课程非常好,我将在这里分享一些从培训中总结的提示。
第 2 天的提示:
1. 您可以创建持久类(在数据库中具有对应表的类,用于保持类属性)。
2. 持久类示例:
Class dc.Person extends (%Persistent)
{
Property Name As %String;
Property BirthDate As %Date;
}3. 扩展 %Persistent 时,您将获得 %New() 以在内存中创建新实例,获得 %Save() 以保存到数据库,获得 %Id() 以获取该实例在数据库中的唯一 ID,以及获得 %OpenId() 以使用数据库值加载实例。
4. 持久类允许您调用 %Deleteid() 以从数据库中删除一个实例,调用 %DeleteExtent() 以删除所有保存的对象(没有 where 时删除!),调用 %ValidateObject() 以验证保存前传递的数据(验证是否必需、大小等)。
5. 持久类具有 %IsModified() 和 %Reload(),前者用于检查内存中的数据变化(参见评论中 joel 的提示),后者用于获取这些变化。
6.
与典型的SQL一样,InterSystems IRIS支持惟一键和主键的概念。
InterSystems IRIS还能够定义IdKey,它是类实例(表中的行)的唯一记录ID。
这些特性是通过Unique、PrimaryKey和关键字实现的:
Unique -在索引的属性列表中列出的属性上定义一个唯一的约束。
也就是说,只有这个属性(字段)的唯一数据值可以被索引。
唯一性是根据属性的排序来确定的。
例如,如果属性排序是精确的,则字母大小写不同的值是唯一的;
如果属性排序是SQLUPPER,则字母大小写不同的值不是唯一的。
但是,请注意,对于未定义的属性,不会检查索引的惟一性。
根据SQL标准,未定义的属性总是被视为唯一的。PrimaryKey -在索引的属性列表中列出的属性上定义一个主键约束。这些关键字的语法出现在下面的例子中:
Class MyApp.SampleTable Extends %Persistent [DdlAllowed]
{
Property Prop1 As %String;
Property Prop2 As %String;
Property Prop3 As %String;
Index Prop1IDX on Prop1 [ Unique ];
Index Prop2IDX on Prop2 [ PrimaryKey ];
Index Prop3IDX on Prop3 [ IdKey ];
}
什么是分布式人工智能 (DAI)?
试图找到一个“无懈可击”的定义是徒劳的:这个术语似乎有些“超前”。 但是,我们仍然可以从语义上分析该术语本身,推导出分布式人工智能也是人工智能(请参见我们为提出一个“实用”定义所做的努力),只是它分布在多台没有聚合在一起(既不在数据方面,也不通过应用程序聚合,原则上不提供对特定计算机的访问)的计算机上。 即,在理想情况下,分布式人工智能的安排方式是:参与该“分布”的任何计算机都不能直接访问其他计算机的数据和应用程序,唯一的替代方案是通过“透明的”消息传递来传输数据样本和可执行脚本。 与该理想情况的任何偏差都会导致出现“部分分布式人工智能”- 一个示例是通过中央应用程序服务器分发数据, 或者其反向操作。 不管怎样,我们都会得到一组“联合”模型(即,在各自数据源上训练的模型,或者按自己的算法训练的模型,或者同时以这两种方式训练的模型)。
Hi 社区开发者们,告诉大家一个好消息!InterSystems IRIS®数据平台已入驻AWS Quick Start,今后可在AWS上快速部署高可用的生产环境。
索引是由持久类维护的结构,InterSystems IRIS®数据平台可以使用它来优化查询和其他操作。
可以在表中的字段值或类中的相应属性上定义索引。(还可以在多个字段/属性的组合值上定义索引。)。无论是使用SQL字段和表语法还是类属性语法定义相同的索引,都会创建相同的索引。当定义了某些类型的字段(属性)时,InterSystems IRIS会自动定义索引。可以在存储数据或可以可靠派生数据的任何字段上定义附加索引。InterSystems IRIS提供了几种类型的索引。可以为同一字段(属性)定义多个索引,为不同的目的提供不同类型的索引。
无论是使用SQL字段和表语法,还是使用类属性语法,只要对数据库执行数据插入、更新或删除操作,InterSystems IRIS就会填充和维护索引(默认情况下)。可以覆盖此默认值(通过使用%NOINDEX关键字)来快速更改数据,然后作为单独的操作生成或重新生成相应的索引。可以在用数据填充表之前定义索引。还可以为已经填充了数据的表定义索引,然后作为单独的操作填充(构建)索引。
InterSystems IRIS在准备和执行SQL查询时使用可用的索引。默认情况下,它选择使用哪些索引来优化查询性能。 可以根据需要覆盖此默认值,以防止对特定查询或所有查询使用一个或多个索引。
每个索引都有一个唯一的名称。
InterSystems SQL支持几个特性来优化InterSystems IRIS®数据平台的SQL性能。
SQL性能从根本上取决于良好的数据架构。 将数据划分为多个表并在这些表之间建立关系对于高效的SQL是必不可少的。
描述了以下优化表定义的操作。 这些操作要求定义表,但不要求用数据填充表:
%Storage.Persistent、%Storage.SQL或自定义存储来存储数据。USEEXTENTSET参数为数据和索引查找操作指定更短、更高效的散列全局名称。根据对表中典型数据的分析,可以执行以下操作来优化表访问:
BlockCount元数据。查询优化器使用此信息来确定最有效的查询执行计划。