Go back to the English version of the documentationSQL 优化
SQL 优化 (SPSS Modeler)
Last updated: 2024年12月20日
您可以直接在数据库中推送许多数据准备和挖掘操作,以提高性能。
SPSS Modeler 最强大的功能之一是能够直接在数据库中执行许多数据准备和挖掘操作。 通过生成可回送到数据库进行执行的 SQL 代码,很多操作(如采样、排序、派生新字段以及某些类型的绘图)可以在数据库中执行,而不是在客户机或服务器上执行。 当您对较大数据集进行操作时,这些回送可在以下几个方面显著地增强性能:
- 通过减小要从 DBMS 传输到 Cloud Pak for Data的结果集的大小。 通过 ODBC 驱动程序读取大型结果集时,可能会导致网络 I/O 或驱动程序的效率较低。 因此,由于 SQL 优化而受益最多的操作是行和列的选择和汇总(“选择”、“采样”和“汇总”节点),这样通常会减小所要传输的数据集的大小。 数据还可以在流中的某些重要点(例如,“合并”或“选择”节点之后)缓存到数据库的一个临时表中,从而进一步改善性能。
- 利用数据库的性能和可伸缩性。 因为 DBMS 通常可以利用并行处理、功能更强大的硬件、更为复杂的磁盘存储管理,以及由于索引的存在,所以效率会得到提高。
鉴于这些优点, Cloud Pak for Data 旨在使每个 SPSS Modeler 流生成的 SQL 量最大化,以便只有那些无法编译为 SQL 的操作才由 Cloud Pak for Data执行。 但是,由于可以使用标准 SQL (SQL-92) 表示的内容有限制,可能不支持某些操作。
有关当前支持的数据库的详细信息,请参阅 SPSS Modeler支持的数据源。
提示:
- 运行流时,将在节点旁边用一个小的 SQL 图标突出显示回送到数据库的节点。 运行流后开始对其进行编辑时,图标将被移除,直到下次运行流为止。
- 如果要在运行流 之前 查看哪些节点将回推,请单击 SQL 预览。 这使您能够在运行流之前对其进行修改,以通过尽可能将非回送操作移动到下游 (例如) 来提高性能。
- 如果无法回送节点,那么流中的所有后续节点都不会被回送(该节点上的回送停止)。 这可能会影响您希望如何在流中组织节点的顺序的方式。
注: 请记住有关 SQL 的以下信息:
- 由于 SQL 实现的细微差异,在数据库中运行的流在 Cloud Pak for Data中执行时可能会返回略有不同的结果。 由于类似的原因,这些差别还可能根据数据库供应商不同而有所变化。 例如,根据字符串比较和字符串整理中区分大小写的数据库配置,使用 SQL 回送运行的 SPSS Modeler 流可能会产生与不使用 SQL 回送运行的流不同的结果。 有关配置数据库的建议,请与数据库管理员联系。 要最大化与 Cloud Pak for Data的兼容性,数据库字符串比较应该区分大小写。
- 使用 Cloud Pak for Data 生成 SQL 时,在某些平台 (例如Linux) 上使用 SQL 回送的结果可能不一致。 原因是浮点在不同平台上以不同方式进行处理。