支持多路复用连接

有些应用程序会代表一个用户多次连接到同一台数据库服务器。多路复用连接在数据库服务器和客户机之间使用单个网络连接以便处理来自客户机的多个数据库连接。客户机应用程序可以建立多个到数据库服务器的连接以代表单个用户访问多个数据库。如果连接不是多路复用的,那么每个数据库连接将建立到数据库服务器的单独网络连接。每个额外的网络连接都将使用额外的计算机内存和处理器时间,甚至对于不活动的连接亦如此。多路复用连接使数据库服务器可以创建多个数据库连接,而不会耗尽额外网络连接所需的额外计算机资源。

要配置数据库服务器以支持多路复用连接,请执行以下操作:

  1. 使用 DBSERVERALIASES 配置参数定义别名。
    例如,指定:
    DBSERVERALIASES ifx_mux
  2. 为别名添加 sqlhosts 文件条目,其中将 onsqlmux 用作 nettype 条目。hostnameservicename 必须具有条目,但这些条目会被忽略。可将连字符 (-) 用作条目。
    例如:
    #dbservername    nettype       hostname      servicename      options
    ifx_mux         onsqlmux   -          -
  3. 通过在客户机用于数据库服务器连接的 sqlhosts 条目中指定 m=1,从而启用选定连接类型的多路复用。
    例如:
    #dbservername    nettype       hostname      servicename      options
    menlo           ontlitcp   valley     jfkl          m=1

以下示例显示了 onconfig 文件和 sqlhosts 文件条目。

onconfig 文件:

DBSERVERNAME web_tli
DBSERVERALIASES web_mux
sqlhosts 文件:
#dbservername    nettype       hostname      servicename      options
web_tli   ontlitcp    node5    svc5   m=1
web_mux   onsqlmux    -        -

无需更改数据库服务器使用的 sqlhosts 信息。客户机程序无需执行任何特殊的 SQL 调用,即可启用连接多路复用。当 onconfig 文件和 sqlhosts 条目进行了适当配置并且数据库服务器启动时,将自动启用连接多路复用。

多路复用连接不支持:
  • 多线程客户机连接
  • 共享内存连接
  • 与下级数据库服务器的连接(例如,用于分布式查询或数据复制)
如果在应用程序尝试建立连接时出现以上任一情况,数据库服务器就将建立标准连接。数据库服务器不返回 SQL 错误。

多路复用连接期间,不支持 GBase 8s ESQL/C sqlbreak() 函数。