Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

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

Closed
m1kc opened this Issue Jan 20, 2013 · 7 comments

Comments

Projects
None yet
2 participants
Owner

m1kc commented Jan 20, 2013

No description provided.

@ghost ghost assigned houjing Feb 23, 2013

Member

houjing commented Mar 8, 2013

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

Owner

m1kc commented Mar 8, 2013

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

Member

houjing commented Mar 17, 2013

$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 Mar 17, 2013

@m1kc m1kc reopened this Mar 17, 2013

Owner

m1kc commented Jul 20, 2013

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

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

Owner

m1kc commented Jul 20, 2013

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

Owner

m1kc commented Jul 21, 2013

<!-- Done in 214.0109539032 milliseconds -->

Пздц.

Owner

m1kc commented Oct 6, 2013

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

@m1kc m1kc closed this Oct 6, 2013

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment