Database Turbodbc在批处理插入上非常慢
我正在调查Turbodbc是否能为我们解决大量DB插入的问题。我们谈论的是成百上千万的批量插入。目前,它比我尝试过的任何其他解决方案都慢得多,例如mongodb插入和pandas的to_sql函数。我不确定我是否缺少一个设置或一些特定的内容。是否有人有过使用Turbodbc的经验,可能也遇到过同样的问题Database Turbodbc在批处理插入上非常慢,database,unixodbc,turbodbc,Database,Unixodbc,Turbodbc,我正在调查Turbodbc是否能为我们解决大量DB插入的问题。我们谈论的是成百上千万的批量插入。目前,它比我尝试过的任何其他解决方案都慢得多,例如mongodb插入和pandas的to_sql函数。我不确定我是否缺少一个设置或一些特定的内容。是否有人有过使用Turbodbc的经验,可能也遇到过同样的问题 我已经在mac和Docked debian(buster)环境上进行了尝试 我尝试过executemanycolumns,以及使用sql查询的ExecuteManyWhat,两者都很慢 我已经
- 我已经在mac和Docked debian(buster)环境上进行了尝试
- 我尝试过executemanycolumns,以及使用sql查询的ExecuteManyWhat,两者都很慢
- 我已经安装了unixodbc
- 对于debian,我使用这些MySQL ODBC驱动程序
import turbodbc
connection = turbodbc.connect('astcdr', turbodb_options=options)
cursor = connection.cursor()
cursor.fast_executemany = True
// *** Measuring duration of operation
// Loading a big CSV
// *** Measuring duration of operation
// Mutate some data
// *** Measuring duration of operation
// Build the sql
// *** Measuring duration of operation
....
// Execute
cursor.executemany(sql, dataArray) <- this operation takes long
// *** Measuring duration of operation
我的odbcinst.ini如下所示
[astcdr]
Description=MySQL connection to database
Driver=MySQL
Database=test
Server=mysql_container
User=test
Password=test
Port=3306
[ODBC Drivers]
MySQL ODBC 8.0=Installed
[MySQL]
Driver=/var/www/mysql-connector-odbc-8.0.19-linux-debian10-x86-64bit/lib/libmyodbc8w.so
UsageCount=2
我pip安装了以下内容,其中pybind11在docker构建期间失败,但它是在我装载容器时安装的
pybind11
pandas
numpy
pyarrow
pytest
pytest-cov
mock
six
turbodbc
由于在我的mac上和在dockerised env上的结果是一样的,所以我要么在设置它时犯了两次同样的错误,要么Turbodbc就是不能像我想象的那样工作。有人有什么建议吗
谢谢有两件事你应该注意:
turbodbc
对您没有帮助turbodbc
与pyodbc
相比,将为您带来加速,但要求ODBC驱动程序本身已经是高效的