调整

时间:2017-01-04 21:43:18

标签: python sqlalchemy teradata database-tuning

我尝试使用sqlalchemy连接teradata,以便使用read_sql和to_sql方法形成pandas。

然而,连接速度很慢。即使是简单的东西,比如pd.read_sql('select current_date'),也要花费30多秒才能完成。

我真的不明白为什么这么慢。如果以前有人遇到类似问题,请告诉我为什么以及如何解决这个问题。谢谢!

更新:
我尝试了cProfile和sqlTAP,并意识到缓慢是由于方言生成的一些查询。 has_table meathod将运行对dbc.tablesvx视图的查询,此查询将花费 100秒来完成,而视图只有大约55k行。对于pd.to_sql,可能会多次调用此has_table,并且需要对系统表进行一些其他查询。

-- query from has_table method   
SELECT tablename
FROM dbc.tablesvx
WHERE DatabaseName=?
  AND TableName=? 
-- query form drop_table method
SELECT tablename
FROM dbc.TablesVX
WHERE DatabaseName = ?
  AND (tablekind='T'
       OR tablekind='O')

似乎我需要做的就是调整系统表以使查询运行得更快。但是,我们的sql帮助人员告诉我,那些系统表已经处于最佳性能。这可能吗?是否有人对teradata DBC视图进行了任何调整?感谢。

0 个答案:

没有答案