使用 UniObject 加快 UniVerse 访问时间

本文关键字:访问 时间 UniVerse 加快 UniObject 使用 | 更新日期: 2023-09-27 18:36:39

我正在访问UniVerse数据库并读出其中的所有记录,以便将其同步到MySQL数据库,该数据库用于与使用该数据的其他一些应用程序兼容。一些表的长度为>250,000 条记录,有>100 列,并且服务器相当旧,仍然被许多并发用户使用,因此需要非常...长。。。有时是时候阅读记录了。

示例:我将 SSELECT TO 0 执行并开始读取选择列表,将每条记录解析为我们的数据抽象类型并将其放入 .NET 列表中。根据时间的不同,获取每条记录可能需要 250 毫秒到 3/4 秒,具体取决于数据库使用情况。删除提取方法只会稍微加快速度,因为我认为即使我不使用它,当我调用 UniFile.read 时,它仍然会下载所有记录信息。

以这种速度读取 250,000 条记录的速度非常慢,所以有谁知道我可以加快速度的方法吗?我应该在某个地方设置一些选项吗?

使用 UniObject 加快 UniVerse 访问时间

你真的需要使用SSELECT(排序选择)吗?按记录键排序将产生额外的性能开销。如果您不需要以排序方式同步,只需使用普通 SELECT,这应该会提高性能。

如果这没有帮助,请尝试自动同步以在系统使用率低时运行,当很少或没有用户登录到 UniVerse 系统时(如果可能的话)。

除此之外,可能是您要导出的某些表需要调整大小。如果它们不是动态文件(自动调整大小 - 类型 30),则它们可能已进入磁盘上的溢出空间。要找出最大表的大小并查看它们是否已溢出,您可以使用 FILE 等命令。统计和哈希。在命令行中提供帮助以检索更多信息。使用帮助文件。统计或帮助哈希。帮助查看这些命令的文档,以便提取所需的信息。

如果这些命令显示您的文件类型为 30,则数据库引擎会自动调整它们的大小。但是,如果文件类型是从类型 2 到 18 的任何类型,则为 HASH。HELP 命令可能会建议您可以对表大小进行的更改以提高其性能。

如果这些都无济于事,那么您可以使用 LIST 检查表上的有用索引。索引表名全部,您可以使用它来加快选择速度。

确保使用 ANALYZE-FILE 文件名正确调整文件大小。如果不是动态的,请确保没有太多溢出。

使用 SELECT 而不是 SSELECT 意味着您按顺序而不是随机从数据库中读取数据,并且速度明显更快。

您还应该调查如何从每条记录中提取数据并将其放入列表中。通常选择数据分隔符字符254、253和252将与外部数据库不兼容,需要转换。如何做到这一点会对性能产生巨大的影响。

从最初的帖子中不清楚,但是WRITESEQ可能是输出文件数据的最有效方法。