• Как ускорить запрос в postgresql?

    Melkij
    @Melkij
    PostgreSQL DBA
    По порядку:
    Повторно запрос выполняется много быстрее.

    Значит, вы с головой упёрлись в диск.
    Вариант есть только один - ставить быстрый диск.
    Вариант похуже, т.к. диск всё равно у вас останется медленный и если не на чтении, то на старте и на записи вы туда упрётесь очень хорошо - использовать больше памяти. Чтобы как можно данных было в памяти. Но при работе эти данные всё равно надо поднимать с медленных дисков, потому базу сначала придётся разогревать. Есть даже штатная утилитка pg_prewarm

    В конфиге postgresql менял настройки только авторизации.

    По дефолту там что-то несмешное вместо shared_buffers. 32 что ли мегабайта? И это на ключевую характеристику базы.
    Увеличивать хотя бы до 20% от общего объёма памяти на машине.

    В третьих, актуальный Postgresql довольно плохо умеет развесистый IN. И тому есть не совсем очевидное решение - переписать в join:
    select count(*) from test JOIN (VALUES (1),...,(10000)) AS v(val) USING (val);

    Такой вот hash join работает быстрее IN. На 10000 элементах получали 10мс против 380мс у IN.
    Ответ написан
    Комментировать
  • Как ускорить запрос в postgresql?

    MaxDukov
    @MaxDukov
    впишусь в проект как SRE/DevOps.
    думаю, пора открывать для себя команду EXPLAIN и посмотреть план исполнения, используются ли индексы вообще. Причем смотрите как на основной запрос, так и на вложенный.
    судя по
    занимает 200-300с, iotop показывает, что идет чтение с диска.
    - нет, происходит FULL SCAN.
    правка конфига поможет, если захотите поиграться с размерами кэша. Пока проблема, похоже, именно в индексах.
    Ответ написан
    7 комментариев
  • Можно ли создать сайт который сам себя улучшает?

    evnuh
    @evnuh
    Поиск Гугл помог мне, впусти и ты его в свой дом
    Комментировать
  • Теория эволюции: как генерируются мутации?

    @potan
    Функциональный программист
    Есть редкие примеры наследования приобретенных признаков. Основной - иммунитет бактерий (CRISP-система), когда потомки бактерий приобретают устойчивость к фагу, неуспешно пытавшегося заразить их предка.
    У эукариот (типа людей) наблюдается эпигенетическое (цитоплазматическое) наследование, когда геном оказывается не мутировавшим, а унаследованные признаки, выраженные уровнем экспрессии разных генов, закодированы в составе цитоплазмы (факторы регуляции экспрессии) и метилировании ДНК. Например, если женщина во время беременности голодала, ребенок может отличаться большим аппетитом. Роль эпигенетики в эволюции спорна. большинство считают, что она незначительно. Тем не менее есть эпигенетическая теория эволюции, которая утверждает, что обычно приспособительные признаки появляются именно за счет эпигенетики, а потом идет отбор мутаций, наиболее подходящих для данной эпигенетической ситуации.
    Ответ написан
    Комментировать
  • Теория эволюции: как генерируются мутации?

    maaGames
    @maaGames
    Погроммирую программы
    Весь смысл генетических алгоритмов именно в том, что мутации случайны, а не контролируются программистом по каким-то аспектам. Выборка происходит не перед мутацией (с выбором того, что следует изменить), а уже в мутировавшем поколении. Весь смысл в том, что непредсказуемое решение может оказаться более эффективным, чем предсказуемое.
    Это как если программист подумает, что для увеличения скорости передвижения нужно наращивать число ног и через N поколений получит 100500 ножку, а случайные мутации "научат" тараканчика сворачивать тело в колесо (это я типа сравнил многоножку с какой-нибудь макрицей).
    Т.е. происходят случайные мутации и алгоритм оценивает, привели ли они к какому-то улучшению по заданным признакам. В примере с огородом, можно ожидать рождение ребёнка с конечностями в форме лопат, который будет очень быстро пахать огород, но не один вменяемый программист не будет специально программировать такое создание.
    Ответ написан
    Комментировать
  • Теория эволюции: как генерируются мутации?

    @xandox
    Обрати внимание на то, что все женщины рождаются девственницами.
    Мутация - это случайный процесс, то что мы сейчас имем объясняется естественным отбором. Другое дело, что сейчас в принципе (более или мение) можно влиять на свойства будещего ребенка посредством генной инженерии, но это ни как не связано с качалкой или паханием огорода.
    Ответ написан
    Комментировать
  • Возможно ли передать информацию быстрее скорости света в таком опыте?

    @egorinsk
    Так от того, что вы предскажете, как сколлапсирует фотон в другой точке, вы же не передадите никакой новой информации. Вы напишите, как передать единичку или нолик с помощью спутанных фотонов, так как в вашем способе вы всего лишь получите случайную одинаковую в точказ A и B последовательность нулей и единиц.

    Это примерно то же самое, что взять два конверта, положить в один нолик, а в другой единичку, потом одноврменно их открыть в удаленных друг от друга точках (ну то есть не совсем то же, так как в фотоне не записано, как он сколлапсирует, но идея та же).

    Также, на эту тему есть замудреная статья на lesswrong: lesswrong.com/lw/q2/spooky_action_at_a_distance_the_nocommunication/
    Ответ написан
    Комментировать