热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

优化Informix数据库访问

访问一个IBMInformix数据库所需的时间通常在不到一秒钟到某个期望的时间段之内,这取决于具体的数据库操作。但是,有时花费时间可能会比您预期的要长得多,这有许多原因,比如网络速度、系统性能、系统负载等。

访问一个 IBM Informix 数据库所需的时间通常在不到一秒钟到某个期望的时间段之内,这取决于具体的数据库操作。但是,有时花费时间可能会比您预期的要长得多,这有许多原因,比如网络速度、系统性能、系统负载等。

在最糟的情况下,Informix 客户端可能会因为无法获得期望的响应而永远被阻塞。本文将解释,在 SQL 或连接请求花费比预期更长时间时,如何中断该 SQL 或请求,以改善您的 Informix 应用程序的性能。

数据可访问性在众多业务中变得越来越重要。Informix 服务器因其快速的性能和高度的可靠性而著称。但是,从客户端访问存储在 Informix 服务器上的数据同样依赖于硬件和操作系统的性能。Informix 提供了许多技术来保证数据访问的性能和可靠性,比如包含连接管理器的 MACH-11、自动数据库统计更新等。但是,本文主要介绍 Informix 如何处理某些由无法预测的随机系统事件所引起的异常场景,这些事件可能会导致数据库操作花费比预期更长的时间,其中包括缓慢的网络速度、意外的系统负载过重、TCP 包的丢失或其他无法预见的事件。

在很多时候,Informix 客户端会使用阻塞模式 中的 TCP 套接字与 Informix 服务器进行通信,这意味着客户端会一直等到有可用的服务器数据来实现通信。对于缓慢的连接请求,您可以中断并重试该请求,其方法是基于您的正常系统行为,将 Informix 环境变量 INFORMIXCONTIME 和 INFORMIXCONRETRY 设置为合适的值。

在数据库服务器执行一个 SQL 请求时,在来自数据库服务器的预期响应可供读取之前,应用程序会被阻塞。有时您可能想要中断一个 SQL 请求来获得应用程序控制权,因为您不想等到当前 SQL 语句完成操作。例如,如果您无意之中为一个长查询提供了错误的搜索条件,您想取消 SELECT 语句,而不是等待不需要的数据。如果它是一个多层应用程序,那么情况可能更糟。Informix 客户端(包括 CSDK 和 JDBC)允许用户在执行中中断 SQL 请求。应用程序的设计和实现需要提供用户取消 SQL 请求的支持。

如果运行的应用程序是来自第三方供应商,那么若该应用程序中没有相关选项,会很难中断 SQL 请求。为了处理此情形,Informix 在最新的客户端版本中引入了一项新功能,支持您在 Informix 客户端中启用 TCP 套接字超时,以便中断请求而无需更改任何代码。

本文中所列出的样例程序都进行了简化,仅用于演示用途。

Informix 连接超时

概述

连接到一个 Informix 数据库通常只需不到一秒到几秒的时间(具体取决于网络速度),但有时它所花的时间比预期更长。INFORMIXCONTIME 和 INFORMIXCONRETRY 是两个可控制连接行为的客户端环境变量。

INFORMIXCONTIME

INFORMIXCONTIME 环境变量指定在每次尝试建立数据库服务器连接时,数据库连接请求会持续几秒钟才返回一个错误。如果 INFORMIXCONTIME 环境变量设置为 0 或一个小于 0 的值,那么数据库连接请求将等到该操作成功或失败。如果没有对其变量进行设置,那么各个系统中的默认值可能会有所不同:

  • ESQL/C:INFORMIXCONTIME 的默认值设置为 60 秒。您可以在 OS 环境中使用 OS 命令为 ESQL/C 程序设置 INFORMIXCONTIME 环境变量。
    • UNIX®/Linux®:使用 export 或 setenv 命令,具体取决于 shell。
    • Windows®:Set 命令或控制面板。
  • ODBC:它默认设置为 15 秒。相反,您可使用此 SQL_ATTR_LOGIN_TIMEOUT 连接属性指定连接请求的连接超时间隔。如果同时设置了 INFORMIXCONTIME 和 SQL_ATTR_LOGIN_TIMEOUT,则 SQL_ATTR_LOGIN_TIMEOUT 连接属性会具有更高的优先级。
  • OLEDB 和 .NET:默认值为 15 秒。您可为 Informix OLEDB 提供程序设置 INFORMIXCONTIME 环境变量,但这不适用于使用 IfxConnection.ConnectionTimeout 属性来设置连接超时的 Informix .NET 提供程序。
  • JDBC:默认值为 0,表示连接从不超时。可以在 JDBC 连接 URL 或 JDBC DataSource 连接属性中设置 INFORMIXCONTIME 环境变量。JDBC 3.70.JC1 引入了另一个名为 LOGINTIMEOUT 的环境变量。可使用它指定轮询服务器端口来建立连接的时间段(以毫秒为单位)。如果应用程序没有在指定时间内连接到 Informix 数据库服务器,将返回一个错误。它只能设置为一个 DataSource 属性。在 JDBC 连接 URL 中对它进行设置将不会生效。

您可以基于正常应用程序行为将 INFORMIXCONTIME 环境变量设置为合适的值。

如果连接请求涉及到搜索 DBPATH,则可能看到连接请求所花的时间长于 INFORMIXCONTIME 限制,以至于返回了一个错误。如果 DBPATH 包含多个服务器,那么 INFORMIXCONTIME 值需要除以 DBPATH 中包含的服务器条目数量。在此情况下,您应相应地增加 INFORMIXCONTIME 值。

INFORMIXCONRETRY

INFORMIXCONRETRY 环境变量指定客户端在 INFORMIXCONTIME 所指定的时间限制内客户端应对每个数据库服务器执行的连接尝试总数。例如,如果 INFORMIXCONTIME 设置为 30 秒并且 INFORMIXCONRETRY 设置为 2,那么若初始连接尝试无法实现,客户端将尝试在第 15 秒时重新发送连接请求。在终止之前,如果需要,它将在第 30 秒时进行另一次连接尝试。

在 CSDK 和 JDBC 3.70.xC1 以前,INFORMIXCONRETRY 环境变量的默认值为 3。从 JDBC 3.70.xC1 开始,新的默认值为 1,这意味着在初始连接尝试之后仅进行一次重试。

推荐阅读
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • Python第三方库安装的多种途径及注意事项
    本文详细介绍了Python第三方库的几种常见安装方法,包括使用pip命令、集成开发环境(如Anaconda)以及手动文件安装,并提供了每种方法的具体操作步骤和适用场景。 ... [详细]
  • 本文详细介绍了如何通过RPM包在Linux系统(如CentOS)上安装MySQL 5.6。涵盖了检查现有安装、下载和安装RPM包、配置MySQL以及设置远程访问和开机自启动等步骤。 ... [详细]
  • 磁盘健康检查与维护
    在计算机系统运行过程中,硬件或电源故障可能会导致文件系统出现异常。为确保数据完整性和系统稳定性,定期进行磁盘健康检查至关重要。本文将详细介绍如何使用fsck和badblocks工具来检测和修复文件系统及硬盘扇区的潜在问题。 ... [详细]
  • 本文探讨了使用C#在SQL Server和Access数据库中批量插入多条数据的性能差异。通过具体代码示例,详细分析了两种数据库的执行效率,并提供了优化建议。 ... [详细]
  • 如何将本地Docker镜像推送到阿里云容器镜像服务
    本文详细介绍将本地Docker镜像上传至阿里云容器镜像服务的步骤,包括登录、查看镜像列表、推送镜像以及确认上传结果。通过本文,您将掌握如何高效地管理Docker镜像并将其存储在阿里云的镜像仓库中。 ... [详细]
  • Windows 7 64位系统下Redis的安装与PHP Redis扩展配置
    本文详细介绍了在Windows 7 64位操作系统中安装Redis以及配置PHP Redis扩展的方法,包括下载、安装和基本使用步骤。适合对Redis和PHP集成感兴趣的开发人员参考。 ... [详细]
  • 本文详细介绍了如何在不同操作系统和设备上设置和配置网络连接的IP地址,涵盖静态和动态IP地址的设置方法。同时,提供了关于路由器和机顶盒等设备的IP配置指南。 ... [详细]
  • 本文详细介绍了如何在预装Ubuntu系统的笔记本电脑上安装Windows 7。针对没有光驱的情况,提供了通过USB安装的具体方法,并解决了分区、驱动器无法识别等问题。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 探索新一代API文档工具,告别Swagger的繁琐
    对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ... [详细]
  • 本文详细介绍了在不同操作系统中查找和设置网卡的方法,涵盖了Windows系统的具体步骤,并提供了关于网卡位置、无线网络设置及常见问题的解答。 ... [详细]
  • Linux中的yum安装软件
    yum俗称大黄狗作用:解决安装软件包的依赖关系当安装依赖关系的软件包时,会将依赖的软件包一起安装。本地yum:需要yum源,光驱挂载。yum源:(刚开始查看yum源中的内容就是上图 ... [详细]
  • 本文探讨了如何解决PHP文件无法写入本地文件的问题,并解释了PHP文件中HTML代码无效的原因,提供了一系列实用的解决方案和最佳实践。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
author-avatar
文锋仔-
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有