• Как правильно расставить индексы в БД?

    CKOPOBAPKuH
    @CKOPOBAPKuH
    novoa: а запрос по полям A,B,C, если он на равенство, покрывает индекс по B,C,A
  • Как синхронизировать продакшен и локальную версию проекта?

    CKOPOBAPKuH
    @CKOPOBAPKuH
    ваш вопрос практический или теоретический? если практический, то ответ в виде rsync я вам уже назвал. если теоретический, то cs.anu.edu.au/techreports/1996/TR-CS-96-05.pdf или если прочитать пдфку окажется непосильной задачей, то маленький кусок как раз есть в википедии.
  • Долгое выполнение запросов в MySQL

    CKOPOBAPKuH
    @CKOPOBAPKuH
    ничем не подкреплены? просто посмотрите, что значит значение 2, подумайте, возможно ли нарушение consistency, во всех ли ситуациях скорость важнее чем consistency, и если окажется что нарушение возможно и скорость не всегда важнее, то это значит, что ваш совет не универсальный.
    это в целом правильный совет (и советы 5..8 в большинстве случаев тоже правильные), но они все не универсальные. вашу позицию я понял, свою вроде бы тоже высказал, так что давайте, наверное, прекращать уже этот бессмысленный спор.
  • Долгое выполнение запросов в MySQL

    CKOPOBAPKuH
    @CKOPOBAPKuH
    следует разделять большой поток быстрых однотипных запросов и маленький поток тяжёлых сложных запросов. первое обычно называют highload, второе — high performance, hpc или big data. судя по словам «Проблема в том, что время выполнения запросов очень большое, ~3 минут», я предположил, что у автора нету потока в сотни запросов в секунду.

    данных для того чтобы дать совет не с потолка здесь недостаточно. вы не знаете, какие ещё данные есть на сервере и какие ещё запросы используются. и сколько каких запросов. а от этого очень сильно зависит ответ. не говоря уже о то, что вы даже не знаете, ssd там или нет. большая ли write-нагрузка или нет. innodb_flush_log_at_trx_commit=2 не годится для абсолютно любых серверов.
    и у меня достаточно много опыта работы с mysql, чтобы понимать, что ходить по QA, просить показать конфиг и после этого сразу же давать космически нелепый совет — это довольно глупое поведение. но я вас не виню, сам когда-то такой был: )
  • Долгое выполнение запросов в MySQL

    CKOPOBAPKuH
    @CKOPOBAPKuH
    советы по конфигурации вроде бы ок, но они для случая «большой поток быстрых запросов». в вашем текущем случае, автор, проблема не в конфигурации, а в конкретном запросе и в индексах, поэтому стоит вначале решить эту проблему и уже потом конфигурировать. но на основе статистики (которую percona server даёт в достаточном количестве), а не на основе случайного угадывания на кофейной гуще людьми из интернетов.
    оптимальные настройки зависит от профиля нагрузки.
  • Долгое выполнение запросов в MySQL

    CKOPOBAPKuH
    @CKOPOBAPKuH
    это плохой совет.
    если индекс будет (task_id, checked,taken), то запрос select task_id from tasks_pending where checked=0 and taken=0 group by task_id limit 50 только проиграет от использования этого индекса, причём сам он его использовать не будет (потому что mysql сравнительно умный) и вам придётся заставлять его делать плохое через форс индекс.
  • Где найти HTML верстальщика?

    CKOPOBAPKuH
    @CKOPOBAPKuH
    я увидел, что болванка, и написал, что сайта нету. мне сказали, что я «не увидел сайта» — а я ответил, что это не так.
    верстальщики в mamba.ru, afisha.ru и mail.ru стоят примерно столько, сколько я написал. в mail возможно чуть больше.
    я не говорю, что у вас всё именно так. естественно, я немного сгустил краски. но именно так вас можно воспринимать. про то, что ваши дела сами всё покажут — это правильный подход.
  • Целесообразно ли брать SSD для ускорения компиляции больших библиотек?

    CKOPOBAPKuH
    @CKOPOBAPKuH
    > Что-то мне подсказывает, что для сборки нет необходимости в 4Gb оперативной памяти

    это зависит от проекта. у меня в проекте на 15к строк было много шаблонов, и компилятор ел до 3Гб в пике (а собиралось всё минуты за полторы). всего у меня было 8Гб, запускать 2 потока — нормально, больше двух — уже своп и тормоза.
    использование процессора близко к 100%, использовать ramdisk пробовал (без существенного улучшения), и никакого выигрыша от ssd не было бы тоже.
  • Где найти HTML верстальщика?

    CKOPOBAPKuH
    @CKOPOBAPKuH
    я погуглил, преже чем писать. ebr.ebrit.ru/ — это же он? это пока не сайт. о каких «достойных и конкурентных условиях» вы говорите, если рыночная цена хорошего верстальшика в москве — 70-90?
    и либо я написал всё правильно, либо вы берёте на работу средних или плохих верстальщиков и средних или плохих программистов, причём последний вариант даже хуже всего
  • Реализация сложной формы поиска?

    CKOPOBAPKuH
    @CKOPOBAPKuH
    Главное использовать голову, а выбор технологии не принципиален.
  • Сайт, способный выдержать высокую нагрузку (?)

    CKOPOBAPKuH
    @CKOPOBAPKuH
    такая же история, кстати, не только у нас, но и у Facebook (0% изначального кода), и у Twitter (которые вообще поменяли платформу), и у многих других ресурсов
  • Сайт, способный выдержать высокую нагрузку (?)

    CKOPOBAPKuH
    @CKOPOBAPKuH
    я рассказываю, основываясь на своём опыте работы с большим и сложным проектом с более чем 20 разработчиками и более чем 5ти-летней историей. и который работает на более чем 100 серверов.
  • Redis vs SQLite vs PostgreSQL

    CKOPOBAPKuH
    @CKOPOBAPKuH
    > сколько операций в секунду даст выполнить база когда к ней будут обращаться с одного потока
    > сравнить производительность указанных БД для нескольких болльших плоских таблиц и простейших запросов

    я вижу тут противоречие. нет, ну на вопрос «сколько операций в секунду даст выполнить база из одного потока» ваши тесты отвечают. я именно поэтому пример с большим пальцем ноги и привёл.
  • Redis vs SQLite vs PostgreSQL

    CKOPOBAPKuH
    @CKOPOBAPKuH
    SQLite — встраиваемая база. её можно скорее всего сравнивать с другими встраиваемыми базами. kyoto/tokio cabinet например.
    Postgres/mysql и redis — разные весовые категории, у одних есть транзакции, тьюринг-полный sql, гарантированная консистентность, работа с данными которые значительно превышают объём ram и куча других штук, и redis, то есть простейшие структуры данных лежащие в оперативке + небольшой слой для поддержания персистентности.

    вы декларировали цель «сравнить производительность указанных БД для нескольких болльших плоских таблиц и простейших запросов».
    ваша задача, даже если бы все меряли правильно, не поможет узнать «производительность больших плоских таблиц и простейших запросов». и к очереди она не имеет никакого отношения, потому что у очереди есть ровно 2 операции: «взять» и «положить».
    и это не говоря уже о том, что понятие «производительность» очень широкое и его можно трактовать как угодно. некоторые меряют скорость работы единичных аналитических запросов, которые выполняются десятки минут. некоторые меряют время отклика определенного количества мелких запросов с определенного количества потоков. некоторые меряют максимально возможное количество мелких запросов но чтобы время отклика не превышало пороговое, а количество одновременных запросов подбирают.

    а что меряете вы? вы меряете задержки у единичных неконкурентных запросов. померяли. результаты ожидаемы.
  • HTML5, IE7 и jQuery?

    CKOPOBAPKuH
    @CKOPOBAPKuH
    серьёзно, есть смысл установить проверку орфографии.
  • Асинхронный сервер: C или Python?

    CKOPOBAPKuH
    @CKOPOBAPKuH
    более формальный профу — это поиск по словам site:vkontakte.ru inurl:php
  • Асинхронный сервер: C или Python?

    CKOPOBAPKuH
    @CKOPOBAPKuH
    usgleb, вы с этой планеты вообще? www.insight-it.ru/masshtabiruemost/arkhitektura-vkontakte/
    ну и если вы вдруг не в курсе, то facebook тоже на пхп.
  • Какой самый эффективный алгоритм добавления элемента в дерево?

    CKOPOBAPKuH
    @CKOPOBAPKuH
    > Поиск по сбаллансированному дереву эффективней бинарного поиска по отсортированному массиву

    почему это? и там и там — O(log(n)). асимптотика одинаковая.
    но отсортированный массив аналогичен идеально сбалансированному дереву, а авл или красночерные такими не являются и выше идеального в среднем в 1.3-1.4 раза.

    второе преимущество массива — локальность данных. чем глубже вы в дереве, тем меньше ваш working set (а в случае с деревом память соседние элементы могут отстоять далеко в адресном пространстве; тут можно сделать node pool и выделять память для элементов оттуда)