Как повысить производительность SQLAlchemy?

Я сделал клиентское приложение, которое использует HTTP для связи с сервером Python 2 с помощью простого API. Сервер довольно широко использует ORM SQLAlchemy для обслуживания данных для этих HTTP-запросов. Проблема в том, что у меня довольно высокая загрузка ЦП даже при наличии нескольких активных клиентов. Этот сервер должен быть в состоянии обслуживать несколько сотен клиентов одновременно со скоростью около 1 запроса в секунду на каждого клиента, поэтому он все еще должен быть управляемым (по крайней мере, я на это надеюсь).

Как повысить производительность? Я знаю, что проблема в ORM, так как cProfile это ясно показывает. Один запрос, по-видимому, выполняет около 10000 инструкций Python, что кажется довольно странным. Я пробовал подключать разные движки/бэкенды баз данных и менял интерпретатор на Pypy просто для удовольствия, но это, очевидно, не помогло решить первоначальную проблему, а также не улучшило производительность.

Что я делаю не так? Я очень надеюсь, что это "ну, да!" проблема.

Должны ли мои отношения быть другого типа? нетерпеливый, ленивый, динамичный и т. д.? Пока ничего конкретного не уточняю.

Помощь приветствуется.

6
задан svenstaro 3 April 2012 в 18:53
поделиться