Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 26, 2010 17:24:48

wonderfulll
От:
Зарегистрирован: 2009-01-30
Сообщения: 72
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlalchemy select медленно работает по сравнению с обычным text

Eсть база Mysql к которой делаются запросы через sqlalchemy select. Количество запросов в минимальной конфигурации в раёне 1k-15k.
Делаю вывод raw селектов, подставляю их в `from sqlalchemy.sql import text` всё летает в раза 3 быстрее.
Чем может быть обусловлен такой прирост производительности? Неужто автолоад и генерация raw кода из объектного столько времени занимает?

engine = create_engine('mysql://...?charset=utf8')
self.conn = engine.connect()
self.meta = MetaData()
self.meta.bind = engine

table1 = Table('table1', self.meta, autoload=True)
table2 = Table('table2', self.meta, autoload=True)
table3 = Table('table3', self.meta, autoload=True)

s = select([table1.c.some_data,
table2.c.some_data,
table3.c.some_data,
],
and_(
table1.c.id == table2.c.t1_id,
table2.c.t3_id == table3.c.id,
),
)

result = self.conn.execute(s)
return result.fetchall()
Видно в моём конкретном случае (большое количество селектов), так оно и есть, каждые 10 секунд работы селект теряет 1-3 секунды по сравнению с text.
select      text
====================
00:00:09 00:00:07
00:00:19 00:00:15
00:00:30 00:00:23
00:00:40 00:00:31
00:00:50 00:00:38
Что можно сделать чтобы код всё ещё был объектным, но при этом без потери производительности?



Отредактировано (Окт. 26, 2010 19:16:16)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version