【问题标题】:Why inserting dataframe into TimescaleDb takes longer than into MySQL为什么将数据帧插入 TimescaleDb 比插入 MySQL 需要更长的时间
【发布时间】:2020-06-30 23:02:10
【问题描述】:

我想明白为什么将 200 万行插入 TimescaleDB/PostgreSQL 比将它们插入 mysql 需要更长的时间,因为据说 TimescaleDB 具有高插入率,高于 mysql...

使用了以下内容:

MySQL:

engine = create_engine("mysql+pymysql://root:paswd@localhost/db")
con = engine.connect()
readcsv = pd.read_csv(r"C:\2mio.csv",delimiter=',',names=['x','y'],skiprows=1 )
a=1 
readcsv.insert(2,"z",a)
readcsv.to_sql(name='table',con=con,schema='db',if_exists='append',index=False)

持续时间:500 秒

PostgrSQL/TimescaleDb:

engine = create_engine("postgresql+psycopg2://postgres:paswd@127.0.0.1/postgres")
con = engine.connect()
readcsv = pd.read_csv(r"C:\2mio.csv",delimiter=',',names=['x','y'],skiprows=1)
a=1 
readcsv.insert(2,"z",a)
readcsv.to_sql(name='table',con=con,schema='postgres',if_exists='append',index=False)

持续时间 870 秒

【问题讨论】:

  • 谁在乎?为什么肝移植比肾移植多花 15 分钟?它们是不同的东西,它们需要不同的时间。如果差异是 10 倍,那可能真的很有趣。

标签: python mysql postgresql sql-insert timescaledb


【解决方案1】:

您的瓶颈可能是您的 python 库。

您会看到每秒 2-4K 行。具有并行摄取和插入批处理的经过良好调整的 TimescaleDB 将执行 100-300K 行/秒。在总共 200 万行的数据库中,您并没有大规模测试摄取(开始出现在数十亿行中)。

干杯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多