Почему вставка фрейма данных в TimescaleDb занимает больше времени, чем в MySQL - PullRequest
1 голос
/ 19 марта 2020

Я пытаюсь понять, почему вставка 2 миллионов строк в 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 секунд

1 Ответ

1 голос
/ 19 марта 2020

Ваше узкое место здесь, вероятно, ваша python библиотека.

Вы видите что-то вроде 2-4K строк в секунду. Хорошо настроенная TimescaleDB с параллельным вводом и пакетной загрузкой будет выполнять 100-300K строк / секунду. И при общей базе данных в 2 МБ вы не тестируете загрузку в масштабе (начинает появляться в миллиардах строк).

Приветствия.

...