【问题标题】:Increasing performance in connection to Teradata提高与 Teradata 相关的性能
【发布时间】:2021-10-08 04:47:22
【问题描述】:

我需要使用 Python 连接到 Teradata。我面临的问题是连接数据库的时间很长。

我正在尝试使用 Python 中的 teradatateradatasqlpyodbc 包。我使用的代码是这样的:

import teradata
import teradatasql
import pyodbc
import time

udaExec = teradata.UdaExec (appName="HelloWorld", version="1.0", logConsole=False)

try:
  host, username, password = 'teradata', 'xxxxx', 'xxxxx'
  tic = time.perf_counter()
  session = teradatasql.connect(host=host, user=username, password=password, logmech="LDAP")
  toc = time.perf_counter()
  print(f"TERADATASQL:  {toc - tic:0.4f} seconds")

  tic = time.perf_counter()
  udaExec.connect(method="odbc", dsn="TD")
  toc = time.perf_counter()
  print(f"TERADATA:  {toc - tic:0.4f} seconds")

  tic = time.perf_counter()
  connection = pyodbc.connect('DSN=TD')
  toc = time.perf_counter()
  print(f"PYODBC:  {toc - tic:0.4f} seconds")

except Exception as e:
  print(e)

通常的结果是围绕以下值:

TERADATASQL:6.2150 秒

TERADATA:2.8512 秒

PYODBC:2.6051 秒

问题是大部分时间我会做非常简单的查询,花费不到 1 秒。

我(自己)开发了一个使用 5 个预先打开的连接池的方案。但我认为这是非常初级的,因为它是一个为多个用户提供 REST API 服务的 django。有什么方法可以提高打开连接的性能吗?还有其他解决方案吗?

【问题讨论】:

    标签: python database-connection teradata


    【解决方案1】:

    在我看来,您将 LDAP 身份验证 (TERADATASQL) 与默认的 -authentification TD2 (UDAExec & PyODBC) 进行了比较。要完全比较它,ODBC.ini 将有助于了解正在使用的 DSN 的详细信息。

    除此之外,我知道您无法做任何事情来加快连接步骤,除了通过使用一些打开的连接来消除该步骤。虽然即使 2 秒对我来说也很慢,但我会检查网络/路由以优化这一点。

    正如您提到的已将 Teradata 包含到 REST 调用中,您是否尝试通过 REST 直接连接到 Teradata? (称为“Teradata QueryService”)

    【讨论】:

      猜你喜欢
      • 2013-07-23
      • 1970-01-01
      • 2018-03-14
      • 2021-04-07
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多