文章 Michael Lei · 五月 13, 2021 2m read

2020 年席卷全球的新冠疫情使每个人都在关注与 COVID-19 有关的新闻和数字。

为什么不趁这个机会去创造一些简单直观的东西,来帮助关注全球的疫苗接种数量呢?

为了应对这一挑战,我使用了 Our World in Data 提供的数据,他们的使命是提供解决全球最大问题所需的研究和数据。

他们在 Github 上有一个专门的 COVID-19 数据仓库,我采用了疫苗接种数据来完善我的跟踪器。

如果你不了解他们,去调查一下吧,这值得你花上一些时间。 Github 仓库

应用程序 iris-vaccine-tracker 有三个不同页面。

  1. 主仪表板
  2. 数据表,其中包含仪表板中呈现的数据的详细信息。
  3. 热图

仪表板

主仪表板提供全球疫苗接种情况的快速概览。

第一个小组件提供以下信息:

  • 用于接种人群的疫苗数量
  • 提供疫苗接种信息的国家/地区数量
  • 迄今已接种的疫苗总数。

第二个小组件提供了一个疫苗接种时间线视图,其中包括疫苗接种数量最多的前 10 个国家/地区。

第三个小组件提供了排名靠前的国家/地区的条形图,显示迄今为止的疫苗接种总数。

最后一个小组件展示疫苗的分布情况,哪些疫苗正在被使用以及所占的百分比。

数据表

数据表显示主仪表板汇总数据的详细信息。

热图

0
0 298
文章 姚 鑫 · 五月 13, 2021 4m read

第五章 管理全局变量(二)

在全局变量中查找值

“查找全局变量字符串”页使可以在下标或选定全局变量的值中查找给定的字符串。

要访问和使用此页,请执行以下操作:

  1. 显示“全局变量”页。
  2. 选择要使用的全局变量。为此,请参阅“全局页简介”一节中的步骤2和3。
  3. 单击查找按钮。
  4. 对于查找内容,输入要搜索的字符串。
  5. (可选)清除大小写匹配。默认情况下,搜索区分大小写。
  6. 单击Find First或Find All。

然后,页面显示选定全局变量中下标或值包含给定字符串的第一个节点或所有节点。该表左侧显示了节点下标,右侧显示了相应的值。

  1. 如果使用的是Find First,请根据需要单击Find Next以查看下一个节点。
  2. 完成后,单击关闭窗口。

执行批量更换

注意:在进行任何编辑之前,请确保知道IRIS使用哪个全局系统,以及应用程序使用哪个全局系统;参见“一般建议”此选项会永久更改数据。不建议在生产系统中使用。

出于开发目的,“查找全局字符串”页面还提供了对全局节点中的值进行整体更改的选项。要使用此选项:

  1. 显示“全局”页面。
  2. 选择要使用的全局。为此,请参见“全球页面简介”一节中的步骤2和3
  3. 单击替换按钮。
  4. 使用此页面查找上一节中描述的值。
  5. 为“替换为”指定一个值。
  6. 单击全部替换。
  7. 单击确定确认此操作。然后,页面会显示变更的预览。
  8. 如果结果可以接受,请单击保存。
  9. 单击确定确认此操作。

导出全局变量

0
0 119
文章 姚 鑫 · 五月 13, 2021 4m read

第五章 管理全局变量(二)

在全局变量中查找值

“查找全局变量字符串”页使可以在下标或选定全局变量的值中查找给定的字符串。

要访问和使用此页,请执行以下操作:

  1. 显示“全局变量”页。
  2. 选择要使用的全局变量。为此,请参阅“全局页简介”一节中的步骤2和3。
  3. 单击查找按钮。
  4. 对于查找内容,输入要搜索的字符串。
  5. (可选)清除大小写匹配。默认情况下,搜索区分大小写。
  6. 单击Find First或Find All。

然后,页面显示选定全局变量中下标或值包含给定字符串的第一个节点或所有节点。该表左侧显示了节点下标,右侧显示了相应的值。

  1. 如果使用的是Find First,请根据需要单击Find Next以查看下一个节点。
  2. 完成后,单击关闭窗口。

执行批量更换

注意:在进行任何编辑之前,请确保知道IRIS使用哪个全局系统,以及应用程序使用哪个全局系统;参见“一般建议”此选项会永久更改数据。不建议在生产系统中使用。

出于开发目的,“查找全局字符串”页面还提供了对全局节点中的值进行整体更改的选项。要使用此选项:

  1. 显示“全局”页面。
  2. 选择要使用的全局。为此,请参见“全球页面简介”一节中的步骤2和3
  3. 单击替换按钮。
  4. 使用此页面查找上一节中描述的值。
  5. 为“替换为”指定一个值。
  6. 单击全部替换。
  7. 单击确定确认此操作。然后,页面会显示变更的预览。
  8. 如果结果可以接受,请单击保存。
  9. 单击确定确认此操作。

导出全局变量

0
0 118
问题 Botai Zhang · 三月 8, 2021

大家好!
       目前产品应用MIRROR来保证医院业务正常运行,但是其中MIRROR同步信息不包含(web应用配置信息、任务计划、sql网关等等),关于这些信息同步我们有没有更好的处理解决这个问题?其中,如果想要将代码等关键信息(可以作为业务恢复)进行跨服务器备份,比如:突发状况双机服务器无法恢复并提供服务,需要恢复生产业务,可利用这些备份信息可以快速恢复业务,应对这一类场景有没有好的解决方案?

     期待解惑.

3
0 391
文章 Michael Lei · 五月 12, 2021 28m read

关键字:IRIS, IntegratedML, 机器学习, Covid-19, Kaggle 

目的

最近,我注意到一个用于预测 Covid-19 患者是否将转入 ICU 的 Kaggle 数据集。 它是一个包含 1925 条病患记录的电子表格,其中有 231 列生命体征和观察结果,最后一列“ICU”为 1(表示是)或 0(表示否)。 任务是根据已知数据预测患者是否将转入 ICU。

这个数据集看起来是所谓的“传统 ML”任务的一个好例子。数据看上去数量合适,质量也相对合适。它可能更适合在 IntegratedML 演示套件上直接应用,那么,基于普通 ML 管道与可能的 IntegratedML 方法进行快速测试,最简单的方法是什么?

0
0 163
文章 Michael Lei · 五月 12, 2021 16m read

本贴提供了在 VMware ESXi 5.5 及更高版本的环境中部署 Caché 2015 及更高版本时,关于配置、系统规模调整和容量规划等方面的指南。

我假定您已经了解 VMware vSphere 虚拟化平台,所以直接给出推荐。 本指南中的推荐不特定于任何具体硬件或站点特定的实现,也不应作为规划和配置 vSphere 部署的全面指南,而是一份您可以做出选择的最佳实践配置清单。 我希望您的 VMware 专家实施团队能针对具体站点对这些推荐进行评估。

这里是 InterSystems 数据平台和性能系列的其他帖子的列表。

_注:_本帖更新于 2017 年 1 月 3 日,强调必须为生产数据库实例设置虚拟机内存预留,以保证 Caché 有足够内存可用,并且不会出现内存交换或膨胀而对数据库性能产生负面影响。 更多详细信息,请参见下面的内存部分。

0
0 419
文章 Michael Lei · 五月 12, 2021 17m read

在本帖中,我将展示使用_外部备份_来备份 Caché 的策略,以及与基于快照的解决方案集成的示例。 如今,大多数解决方案部署在基于 VMware 的 Linux 上,因此许多帖子都以展示解决方案如何集成 VMware 快照技术为例。

Caché 备份 - 包括电池?

Caché 安装后即包含 Caché 在线备份,可提供不间断的 Caché 数据库备份。 但随着系统规模的扩大,您应该考虑更高效的备份解决方案。 集成了快照技术的_外部备份_是推荐的系统(包括 Caché 数据库)备份解决方案。

外部备份有特殊注意事项吗?

外部备份的在线文档包含了全部详细信息。 一个关键考虑事项是:

“为确保快照的完整性,Caché 提供了在创建快照时冻结数据库写操作的方法。 在创建快照期间,只冻结对数据库文件的物理写入,从而允许用户进程继续在内存中不间断地执行更新。”

还需要注意的是,虚拟化系统上的部分快照过程会导致正在备份的虚拟机短暂暂停,这段时间通常称为关闭时间。 该时间通常不到一秒,因此不会被用户注意到,也不会影响系统运行,但在某些情况下,关闭时间可能较长。 如果关闭时间长于 Caché 数据库镜像的 QoS 超时时间,那么备份节点将认为主节点出现故障,并将进行故障转移。 在本帖的后面部分,我将说明在需要对镜像 QoS 超时时间进行更改时如何查看关闭时间。

0
0 803
文章 Michael Lei · 五月 12, 2021 7m read

部分 在上个帖子中,我们安排了使用 pButtons 进行 24 小时的性能指标收集。 在本帖中,我们将研究几个收集到的关键指标,以及它们与底层系统硬件的关系。 我们还将开始探索 Caché(或任一 InterSystems 数据平台)指标与系统指标之间的关系。 以及如何使用这些指标来了解系统的每日节拍率并诊断性能问题。

0
1 269
文章 Michael Lei · 五月 12, 2021 13m read

本周,我将关注 CPU - 主要硬件食物群之一 :) 一位客户请我就以下情况提供建议:他们的生产服务器已接近使用寿命终止,是时候更新硬件了。 他们还考虑通过虚拟化来整合服务器,并希望适当调整裸机或虚拟机的容量规模。 今天我们将关注 CPU,在后面的帖子中,我将介绍适当调整其他主要食物群(内存和 IO)规模的方法。

所以问题是:

  • 如何将五年多以前对处理器的应用要求转换成针对当今的处理器?
  • 目前的处理器有哪些是合适的?
  • 虚拟化如何影响 CPU 容量计划?
0
0 313
文章 Michael Lei · 五月 12, 2021 15m read

本帖将展示为 InterSystems 数据平台上运行的数据库应用调整共享内存需求(包括 global 和例程缓冲区、gmheap 以及 locksize)的方法,以及在配置服务器和虚拟化 Caché 应用程序时应考虑的一些性能提示。 和以往一样,当我谈到 Caché 时,我指的是所有数据平台(Ensemble、HealthShare、iKnow 和 Caché)。

[本系列其他帖子的列表](https://cn.community.intersystems.com/post/intersystems-数据平台的容量规划和性能系列文章)

当我最初开始使用 Caché 时,大多数客户的操作系统是 32 位的,Caché 应用程序的内存有限且昂贵。 通常部署的英特尔服务器只有几个核心,唯一的扩展方式是选择大型服务器,或者使用 ECP 横向扩展。 现在,即使是基本的生产级服务器也具有多个处理器、几十个核心,并且最小内存为 128 或 256 GB,可能达到 TB。 对于大多数数据库安装,ECP 已被遗忘,我们现在可以在单台服务器上大幅提高应用事务处理速率。

0
1 310
文章 Michael Lei · 五月 10, 2021 10m read

关键字:深度学习,Grad-CAM,X 射线,Covid-19,HealthShare,IRIS

目的

在复活节周末,我谈到了一些针对 Covid-19 肺的深度学习分类器。  演示结果还算不错,似乎与当时有关该主题的一些学术研究刊物相吻合。 但它真的足够“好”吗? 

最近,我偶然收听了一个关于“机器学习中的可解释性”的在线午餐网络讲座,Don 在演讲的最后谈到了这个分类结果:

上图也出现在 “Why Should I Trust You?” Explaining the Predictions of Any Classifier 这篇研究论文中。   我们可以看到,分类器实际上经过训练,以背景像素(如雪等野生环境)作为主要输入,对宠物狗和野狼进行分类。 

这关乎我过去的兴趣,现在也激起一些好奇:

  • 我们如何“观察”这些通常以“黑盒”形式表示的 Covid-19 分类器,了解哪些像素实际上促成了“Covid-19 肺”结果?
  • 在这种情况下,我们可以利用的最简单的形式或工具是什么? 

这也是篇简单的 10 分钟笔记。 最后,我会谈到为什么它也与我们即将推出的全新 IRIS 和 HealthShare 功能有关。

范围

幸运的是,过去几年中,各种 CNN 衍生分类器都有了方便的工具:

0
0 283
文章 姚 鑫 · 五月 10, 2021 5m read

第四章 多维存储的SQL和对象使用(二)

索引

持久化类可以定义一个或多个索引;其他数据结构用于提高操作(如排序或条件搜索)的效率。InterSystems SQL在执行查询时使用这些索引。InterSystems IRIS对象和SQL在执行INSERTUPDATEDELETE操作时自动维护索引内的正确值。

标准索引的存储结构

标准索引将一个或多个属性值的有序集与包含属性的对象的对象ID值相关联。

例如,假设我们定义了一个简单的持久化MyApp.Person类,该类具有两个文本属性和一个关于其Name属性的索引:

Class MyApp.Person Extends %Persistent
{
Index NameIdx On Name;

Property Name As %String;
Property Age As %Integer;
}

如果我们创建并保存此Person类的多个实例,则生成的数据和索引全局变量类似于:

0
0 151
文章 Qianzhu Liu · 五月 9, 2021 10m read

提到临床医生与信息系统的交互,除外“病历书写”,恐怕最常见的临床场景就是“医嘱开具”了。医嘱是临床医生根据患者病史、体征、检验检查结果下达的医学指令,是医疗过程的重要环节和医疗质量的决定因素。在传统纸质医嘱时代,医生每天花费在医嘱开具、修改和确认等环节上的时间甚至接近于其与患者沟通的时间;且尽管上级医生、药剂师、护士等角色都会在不同阶段参与医嘱审核,依然难以避免医嘱差错的发生。因此,医学信息系统被广泛应用后,提升医嘱开具的便捷性和准确性成为其首当其冲的职责。那么,哪些系统功能是临床医生眼中的医嘱“助力神器”呢?

1
0 657
文章 姚 鑫 · 五月 9, 2021 6m read

第四章 多维存储的SQL和对象使用(一)

本章介绍InterSystems IRIS®对象和SQL引擎如何利用多维存储(全局变量)来存储持久对象、关系表和索引。

尽管InterSystems IRIS对象和SQL引擎会自动提供和管理数据存储结构,但了解其工作原理的详细信息还是很有用的。

数据的对象视图和关系视图使用的存储结构是相同的。为简单起见,本章仅从对象角度介绍存储。

数据

每个使用%Storage.Persistent存储类(默认)的持久化类都可以使用多维存储(全局变量)的一个或多个节点在InterSystems IRIS数据库中存储其自身的实例。

每个持久化类都有一个存储定义,用于定义其属性如何存储在全局变量节点中。这个存储定义(称为“默认结构”)由类编译器自动管理。

默认结构

用于存储持久对象的默认结构非常简单:

  • 数据存储在名称以完整类名(包括包名)开头的全局变量中。附加“D”以形成全局数据的名称,而附加“I”作为全局索引。
  • 每个实例的数据都存储在全局数据的单个节点中,所有非瞬态属性都放在$list结构中。
  • 数据全局变量中的每个节点都以对象ID值作为下标。默认情况下,对象ID值是通过调用存储在全局变量数据根(没有下标)的计数器节点上的$Increment函数提供的整数。

例如,假设我们定义了一个简单的持久化类MyApp.Person,它有两个文本属性:

0
0 171
文章 姚 鑫 · 五月 8, 2021 7m read

第三章 使用多维存储(全局变量)(四)

管理事务

InterSystems IRIS提供了使用全局变量实现完整事务处理所需的基本操作。 InterSystems IRIS对象和SQL自动利用这些特性。 如果直接将事务性数据写入全局变量,则可以使用这些操作。

事务命令是TSTART,它定义事务的开始; TCOMMIT,它提交当前事务; 和TROLLBACK,它将中止当前事务,并撤消自事务开始以来对全局变量所做的任何更改。

例如,下面的ObjectScript代码定义了事务的开始,设置了一些全局变量节点,然后根据ok的值提交或回滚事务:


/// w ##class(PHA.TEST.Global).GlobalTro(0)
ClassMethod GlobalTro(ok)
{

	TSTART

	Set ^Data(1) = "Apple1"
	Set ^Data(2) = "Berry1"

	If (ok) {
		TCOMMIT
	}
	Else {
	 	TROLLBACK
	}
	zw ^Data
	q ""
}

0
0 126
公告 Claire Zheng · 五月 8, 2021

亲爱的社区开发者们,大家好!

欢迎积极参与新一轮InterSystems开发者竞赛!

🏆 InterSystems 编程大赛:FHIR 加速器 🏆

提交在AWS上使用InterSystems的IRIS FHIR-as-a-service的应用程序,或帮助使用InterSystems IRIS FHIR加速器开发的解决方案。点击这篇文章,了解如何在AWS上申请应用InterSystems IRIS FHIR 加速器服务 (FHIRaaS) 。

时间:2021年5月10日-6月6日

奖金总额: $8,750 

👉  点击登录活动页面 👈


0
0 256
文章 Michael Lei · 五月 8, 2021 5m read

大家好!

约翰·霍普金斯大学每天都会发布有关 COVID-19 疫情的新数据。

我在部署于 GCP Kubernetes 上的 docker 中使用 InterSystems IRIS Community Edition 构建了一个简单的 InterSystems IRIS Analytics 仪表板,可显示疾病爆发的关键指标。

0
0 399
文章 Michael Lei · 五月 8, 2021 8m read

关键字:Python,JDBC,SQL,IRIS,Jupyter Notebook,Pandas,Numpy ,机器学习 

1. 目的

这是一个用于演示的 5 分钟快速笔记,通过 Jupyter Notebook 中的 Python 3 调用 IRIS JDBC 驱动程序,以经由 SQL 语法从 IRIS 数据库实例读取数据和向 IRIS 数据库实例写入数据。 

去年,我发表了关于将 Python 绑定到 Cache 数据库的简要笔记(第 4.7 节)。 如何使用 Python 挂入 IRIS 数据库以将其数据读入 Pandas 数据框和 NumPy 数组进行常规分析,然后再将一些经过预处理或标准化的数据写回 IRIS 中,准备进一步用于 ML/DL 管道,现在可能是时候回顾一些选项和讨论了。

一些立即浮现的快速选项

  1.    ODBC:Python 3 和原生 SQL 的 PyODBC?
  2.    JDBC:Pyhton 3 和原生 SQL 的 JayDeBeApi?
  3.    Spark:PySpark 和 SQL?
  4.    Python Native API for IRIS:超越先前的 Python Binding for Cache?
  5.   ** IPtyhon Magic SQL %%sql**?  可以支持 IRIS 了吗?

 这里有漏掉其他选项吗?  我有兴趣尝试任何选项。 

2. 范围 

0
0 547
文章 姚 鑫 · 五月 7, 2021 7m read

第三章 使用多维存储(全局变量)(三)

在全局变量中复制数据

若要将全局变量(全部或部分)的内容复制到另一个全局变量(或局部数组)中,请使用ObjectScript Merge命令。

下面的示例演示如何使用Merge命令将OldData全局变量的全部内容复制到NewData全局变量中:

 Merge ^NewData = ^OldData

如果合并命令的source参数有下标,则复制该节点及其后代中的所有数据。如果Destination参数有下标,则使用目标地址作为顶级节点复制数据。例如,以下代码:

 Merge ^NewData(1,2) = ^OldData(5,6,7)

^OldData(5,6,7)及其下的所有数据复制到^NewData(1,2)

维护全局变量内的共享计数器

大规模事务处理应用程序的一个主要并发瓶颈可能是创建唯一标识符值。例如,考虑一个订单处理应用程序,在该应用程序中,必须为每一张新发票指定一个唯一的标识号。传统的方法是维护某种计数器表。每个创建新发票的进程都会等待获取此计数器上的锁,递增其值,然后将其解锁。这可能会导致对此单个记录的激烈资源争用。

0
0 182
公告 Hao Ma · 五月 7, 2021

Hi Developers!

看看2021年4月的开发者社区新版本有些什么改善, 主要的新特性包括:

This is a release of how did we improve the Developer Community in April 2021. The key features:

  • 代码块里的‘拷贝到剪贴板’按钮
  • 帖子翻译页
  • 私信帖子作者
  • InterSystems官方版本和安全警示

以下是详细介绍。

0
0 161
文章 姚 鑫 · 五月 6, 2021 5m read

第三章 使用多维存储(全局变量)(二)

遍历全局变量中的数据

有许多方法可以遍历(迭代)存储在全局变量中的数据。

$ORDER(下一个/上一个)函数

ObjectScript $Order函数允许顺序访问全局中的每个节点。

$ORDER函数返回给定级别(下标编号)的下一个下标的值。例如,假设定义了以下全局设置:

 Set ^Data(1) = ""
 Set ^Data(1,1) = ""
 Set ^Data(1,2) = ""
 Set ^Data(2) = ""
 Set ^Data(2,1) = ""
 Set ^Data(2,2) = ""
 Set ^Data(5,1,2) = ""

要查找第一个第一级下标,我们可以使用:

 SET key = $ORDER(^Data(""))

这将返回空字符串(“”)之后的第一个第一级下标。(空字符串用于表示第一个条目之前的下标值;作为返回值,它用于指示没有后续的下标值。)。在本例中,key现在将包含值1

我们可以通过在$ORDER表达式中使用1或键来查找下一个第一级下标:

 SET key = $ORDER(^Data(key))
0
0 156
文章 姚 鑫 · 五月 5, 2021 6m read

第三章 使用多维存储(全局变量)(一)

本章描述了使用多维存储(全局变量)可以执行的各种操作。

以全局变量存储数据

在全局节点中存储数据很简单:像对待任何其他变量一样对待全局变量。 区别在于对全局变量的操作是自动写入数据库的。

创建全局变量

创建新的全局变量不需要设置工作;只需将数据设置为全局变量即可隐式创建新的全局结构。可以创建全局变量(或全局变量下标)并通过单个操作将数据放入其中,也可以创建全局变量(或下标)并通过将其设置为空字符串将其保留为空。在ObjectScript中,这些操作是使用SET命令完成的。

下面的例子定义了一个名为Color(如果还不存在)的全局变量,并将值“Red”与之关联。 如果已经存在一个名为Color的全局变量,那么这些示例将其修改为包含新信息。

在ObjectScript中:

 SET ^Color = "Red"

注意:在应用程序中使用直接全局访变量问时,应制定并遵守命名约定,以防止应用程序的不同部分相互“遍历”;这类似于为类、方法和其他变量开发命名约定。

在全局变量节点中存储数据

要在全局下标节点中存储值,只需像设置任何其他变量数组一样设置全局节点的值。如果指定的节点以前不存在,则会创建该节点。如果它确实存在,则其内容将替换为新值。

0
0 119
文章 姚 鑫 · 五月 4, 2021 7m read

第二章 全局变量结构(二)

全局变量物理结构

全局变量使用高度优化的结构存储在物理文件中。管理此数据结构的代码也针对运行InterSystems IRIS的每个平台进行了高度优化。这些优化确保全局操作具有高吞吐量(每单位时间的操作数)、高并发性(并发用户总数)、缓存的高效使用,并且不需要与性能相关的持续维护(例如频繁的重建、重新索引或压缩)。

用于存储全局变量的物理结构是完全封装的;应用程序不会以任何方式担心物理数据结构。

全局变量存储在磁盘上的一系列数据块中;每个块的大小(通常为8KB)是在创建物理数据库时确定的。为了提供对数据的高效访问,InterSystems IRIS维护了一种复杂的B树状结构,该结构使用一组指针块将相关数据块链接在一起。InterSystems IRIS维护一个缓冲池-经常引用的块的内存缓存-以降低从磁盘获取块的成本。

虽然许多数据库技术使用类似B树的结构来存储数据,但InterSystems IRIS在许多方面都是独一无二的:

  • 存储机构通过安全、易于使用的接口显露出来。
  • 压缩下标和数据以节省磁盘空间和宝贵的内存缓存空间。
  • 存储引擎针对事务处理操作进行了优化:插入、更新和删除都很快。与关系系统不同,InterSystems IRIS从不需要重建索引或数据来恢复性能。
  • 存储引擎针对最大并发访问进行了优化。
  • 数据会自动群集,以实现高效检索。

引用全局变量

0
0 172
文章 姚 鑫 · 五月 3, 2021 6m read

第二章 全局变量结构(一)

本章描述全局变量的逻辑视图,并概述全局变量是如何在磁盘上物理存储的。

全局变量的逻辑结构

全局变量是存储在物理InterSystems IRIS®数据库中的命名多维数组。 在应用程序中,全局变量到物理数据库的映射基于当前名称空间——名称空间提供一个或多个物理数据库的逻辑统一视图。

全局命名约定和限制

全局名称指定其目标和用途。有两种类型的全局变量和一组单独的变量,称为“进程私有全局变量”:

  • 全局变量 - 这就是所谓的标准全局变量;通常,这些变量被简称为全局变量。它是驻留在当前命名空间中的永久性多维数组。
  • 扩展全局引用-这是位于当前命名空间以外的命名空间中的全局引用。
  • 进程私有全局变量-这是一个数组变量,只有创建它的进程才能访问。

全局变量的命名约定如下:

0
0 146
文章 姚 鑫 · 五月 2, 2021 5m read

第一章 简介global

InterSystems IRIS®的核心功能之一是其多维存储引擎。此功能允许应用程序以紧凑、高效的多维稀疏数组存储数据。这些数组称为全局数组。

本章介绍:

  • 什么是全局变量(globals ),以及可以对其执行的操作。
  • 全局变量的逻辑和物理结构,包括在分布式数据库体系结构中使用全局变量。
  • 如何使用全局变量在应用程序中存储和检索数据。
  • 如何使用全局变量。

特点

全局变量提供了一种在持久的多维数组中存储数据的易于使用的方法。

例如,可以使用名为^Settings的全局变量将值“Red”与键“Color”相关联:

SET ^Settings("Color")="Red"

可以利用全局变量的多维特性来定义更复杂的结构:

 SET ^Settings("Auto1","Properties","Color") = "Red"
 SET ^Settings("Auto1","Properties","Model") = "SUV"
 SET ^Settings("Auto2","Owner") = "Mo"
 SET ^Settings("Auto2","Properties","Color") = "Green"

全局变量具有以下功能:

0
0 301
文章 姚 鑫 · 四月 30, 2021 12m read

第八章 解释SQL查询计划(二)

SQL语句的详细信息

有两种方式显示SQL语句的详细信息:

  • 在SQL Statements选项卡中,通过单击左侧列中的Table/View/Procedure Name链接选择一个SQL Statement。 这将在单独的选项卡中显示SQL语句详细信息。 该界面允许打开多个选项卡进行比较。 它还提供了一个Query Test按钮,用于显示SQL Runtime Statistics页面。
  • 从表的Catalog Details选项卡(或SQL Statements选项卡)中,通过单击右边列中的Statement Text链接选择一个SQL语句。 这将在弹出窗口中显示SQL语句详细信息。

可以使用“SQL语句详细信息”显示来查看查询计划,并冻结或解冻查询计划。

“SQL语句详细信息”提供冻结或解冻查询计划的按钮。 它还提供了一个Clear SQL Statistics按钮来清除性能统计,一个Export按钮来将一个或多个SQL语句导出到一个文件,以及一个RefreshClose页面按钮。

SQL语句详细信息显示包含以下部分。 每个部分都可以通过选择部分标题旁边的箭头图标展开或折叠:

  • 语句详细信息,其中包括性能统计
  • 编译设置
  • 语句在以下例程中定义
  • 语句使用如下关系
  • 语句文本和查询计划(在其他地方描述)

声明的细节部分

0
0 212
文章 姚 鑫 · 四月 29, 2021 10m read

第九章 冻结计划

大多数SQL语句都有一个关联的查询计划。查询计划是在准备SQL语句时创建的。默认情况下,添加索引和重新编译类等操作会清除此查询计划。下次调用查询时,将重新准备查询并创建新的查询计划。冻结计划使可以跨编译保留(冻结)现有查询计划。查询执行使用冻结的计划,而不是执行新的优化并生成新的查询计划。

对系统软件的更改也可能导致不同的查询计划。通常,这些升级会带来更好的查询性能,但软件升级可能会降低特定查询的性能。冻结计划使可以保留(冻结)查询计划,以便查询性能不会因系统软件升级而改变(降级或提高)。

如何使用冷冻计划

使用冻结计划有两种策略-乐观策略和悲观策略:

  • 乐观:如果假设更改系统软件或类定义会提高性能,请使用此策略。运行查询并冻结计划。导出(备份)冻结的计划。解冻该计划。更改软件。重新运行查询。这会产生一个新的计划。比较这两个查询的性能。如果新计划没有提高性能,可以从备份文件中导入先前冻结的计划。
  • 悲观:如果假设系统软件或类定义的更改可能不会提高特定查询的性能,请使用此策略。运行查询并冻结计划。更改软件。使用%NOFPLAN关键字重新运行查询(这会导致冻结的计划被忽略)。比较这两个查询的性能。如果忽略冻结的计划没有提高性能,请保持冻结该计划并从查询中删除%NOFPLAN

软件版本升级自动冻结计划

0
0 171