Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Оптимизировать количество запросов SQL #31

Closed
m1kc opened this Issue · 7 comments

2 participants

@m1kc
Owner

No description provided.

@houjing houjing was assigned
@houjing
Collaborator

что, отказаться от вспомогательных функций?
1 логическая операция = 1 функция = 1 запрос
так?

@m1kc
Owner

Нужно будет сесть вместе и разобраться.

@houjing
Collaborator
$options['location_name'] = currentLocationTitle($s);
$options['area_name'] = currentAreaTitle($s);
$options['pic'] = '/img/Sasuke.jpeg';
$options['description'] = currentLocationDescription($s);
$options['ways'] = allowedZones($s);
$options['players_list'] = usersOnLocation($s);
$options['monsters_list'] = monstersOnLocation($s);

довольно избыточно.

@m1kc m1kc closed this
@m1kc m1kc reopened this
@m1kc
Owner

Суть, короче, в чём. Надо кэшировать данные, которые уже были запрошены. Например, если мы запрашиваем название локации и делаем SELECT *, то получаем вместе с названием и описание, и карту переходов. Их нужно запомнить и остальные данные по этой локации отдавать уже из кэша. Разумеется, всё это в пределах одного запуска скрипта.

Есть ещё более капитальная идея: при запуске кэшировать вообще всё. То есть мы сразу после старта скрипта примерно пятью запросами кэшируем вообще всё, что есть в базе, и дальше запросов на чтение вообще не делаем. Памяти это сожрёт, конечно, охуеть сколько. Но для тех вещей, которых по идее не очень много (например, зон) можно использовать и такой подход.

@m1kc
Owner

Нужно ещё найти какой-нибудь инструмент для профилирования.

@m1kc
Owner
<!-- Done in 214.0109539032 milliseconds -->

Пздц.

@m1kc
Owner

Запросы оптимизированы донельзя в версии для Node.js. Кэширование в ней включать нельзя, потому что несколько нод могут работать одновременно.

@m1kc m1kc closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.