Задать вопрос
  • Как создать индекс на timestemp в jsonb?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Технически, это будет функциональный индекс, но запросто
    create index on tablename using btree((jsonb->ts)::timestamp);

    Чтобы он использовался, вам нужно будет и в запросе осуществлять приведение к таймштампу.
    Ответ написан
    Комментировать
  • Тонкости ООП в PHP. Почему перезаписываются данные?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    По вашей функции doSomethinkWithItem очевидно, что аргумент $item является объектом.
    Объекты передаются всегда по ссылке. Для создания копии объекта - есть оператор clone
    Ответ написан
  • Небольшое количество BAD секторов на диске повод сдать его по гарантии?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Отчёт программы от производителя - основание для гарантийного обращения. Помнится, SeaTools называется.

    Любой имеющийся bad-блок, нарушающий работу диска (например, сектор никак не читается, таймаут истекает, или же считывается не то, что было записано), т.е. remap диском выполнен не был - да, основание для гарантийного обращения. СЦ при этом может выполнить remap и вернуть диск обратно как есть.
    Показатели SMART - нет, не являются. Будут являться гарантийными только если так решит официальный софт или документация от производителя.
    Ответ написан
    7 комментариев
  • Как правильно работать с большими таблицами?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Как правильно работать с большими таблицами:
    положить в таблицу пару лямов записей. Посмотреть на размер этой таблички. Осмыслить, что это какая-то фигня, а не большая таблица. Положить ещё лямов 100.

    Вот теперь можно уже разбираться, а нафига вам вообще понадобилось вычитать всю таблицу?
    Что-то просуммировать? База это сделает быстрее и лучше и отдаст вам уже готовый аггрегат.
    Дёрнуть какие-то внешние вызовы ака очередь? А зачем вам вся таблица? Выбирайте N записей, ещё не обработанных и обрабатывайте их, пока очередной запрос не вернёт 0 записей.
    Ещё что-то?
    Выгрузить в csv для внешней аналитики? см ответ kifirch
    Ответ написан
    Комментировать
  • Как составить запрос YII2?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Соберите допустимые hashtags_mid.hash в массив и скормите его в один IN
    Если не изменяет память,
    ->where(['show'=>1, 'hashtags_mid.hash' => ['yii', 'три']])

    Сгенерирует верный запрос.
    Ответ написан
    Комментировать
  • Почему Yii2 создает на сервере кучу сессий с __flash|a:0:{}?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    По названию довольно очевидно, что сессия стартует при использовании \Yii::$app->session->setFlash
    Может быть, вообще всегда стартует - надо копаться в коде фреймворка. Штука, скорей всего, вашему приложению нужная.

    Как с этим жить: проверить время жизни сессий, какое оно и нужно ли вам именно такое.
    Что вообще обозначает "переполнением временной папки"?
    У вас лимитировано дисковое место и не помещаются данные? Или становится слишком много файлов, что приводит к замедлению работы с ними?
    Во втором случае вам поможет настройка session.save_path, PHP нативно умеет шардировать файлы сессий по дереву директорий.
    Ответ написан
  • Необходимо составить запрос postgresql, поможете?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Удалить все users с lastvisit NULL и create_time больше 3 суток назад?
    Ну и зачем так сложно?

    delete from users where lastvisit IS NULL and create_time < now() - interval '3 day'
    Ответ написан
    Комментировать
  • В чем смысл Prepared Statements MySQL если внешние данные идут в начале в запрос SET?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Потому что запросов SET в коде приложения нет. И запросы PREPARE и EXECUTE тоже напрямую не вызываются.
    Есть вызовы API, куда сначала в вызов prepare передаётся текст запроса, затем в execute по отдельному бинарному протоколу передаются данные.
    Ответ написан
  • Что означает ошибка 3rd Master Hard Disk:S.M.A.R.T. Status BAD?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Ваш BIOS при старте помимо прочего опрашивает диски на предмет самочувствия по SMART'у.
    Результатом ответа диска WD1600BEVS BIOS остался недоволен, посчитал статус критичным, о чём и сказано в ошибке. Повезло, диски чаще просто тихо помирают, а не предупреждают.

    Дальше надо смотреть собственно отчёт SMART, проверять актуальность бекапов, и, скорей всего, искать новый диск на замену.
    Ответ написан
    3 комментария
  • Как проверить совместимость моего разъема для SSD?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    1) распаян SATA - все 3 версии интерфейса физически идентичны. Какой версии интерфейс обеспечивается контроллером - вопрос к контроллеру. Но не припоминаю чипсетов, которые давали бы лишь один порт более старшего стандарта, а остальные - младшего. Обычно хотя бы парами ставят. Ну и очень сомневаюсь, что ваша машинка настолько древняя, чтобы иметь лишь SATA I для DVD, это железке как минимум 10 лет уже должно быть.
    2) не факт. Вопрос к контроллеру. Там может быть SATA III с хост интерфейса, ограниченный диском до SATA II
    3) говнецо, но смотрите по бюджету. После 5400rpm диска любой SSD будет несоизмеримым прорывом.
    4) да, уточните только высоту вашего DVD-привода (в отзывах к товару напоминают)

    По версии стандарта SATA не заморачивайтесь. Играет роль только для линейных скоростей, как, например, скопировать 10гб архив или образ диска какого. Для системного диска линейные скорости нужны куда реже, а на случайном доступе упереться даже в 150мб/с стандарта SATA I - удел редких топовых дисков.
    Ответ написан
    5 комментариев
  • Как через SSH открыть CLI не перезапуская программу?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Запускайте через screen.
    Цепляетесь по ssh, затем цепляетесь к screen - попадаете в CLI этого процесса.
    Ответ написан
    1 комментарий
  • Ошибка в запросе mysql?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    SELECT t1.id AS company_id,
    (SELECT COUNT(*)
      FROM `sent`
            WHERE `list_id` IN (SELECT id from lists_prod where campaign_id = t1.id)
           ) AS count
          FROM companies t1 LIMIT 100;

    Шаг следующий - переписать в join с подзапросом.

    Если это надо делать часто - сделайте companies отдельное поле и сохраняйте туда count. Можно поддерживать актуальности триггерами, можно - периодически пересчитывать, можно что-то между этими двумя вариантами.
    Ответ написан
    Комментировать
  • Как правильно запитать третью карту вторым БП?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    e6300 и R9. И две R9?!
    Под какие задачи машинка? Ну уж явно не игры. Для мультимониторности вроде как оверкилл. Значит, GPGPU остаётся. Ну и что, вы считаете, что имеет смысл для работы использовать всякий 250-ваттный хлам?

    У R9 280x штатный TDP в 250вт. Если и городить колхоз, то с точностью наоборот - обе видеокарты на один БП, остальную мелочёвку - на другой. Но если этот ваш 700-ваттный foxconn минимально приличный и свою номинальную мощность выдерживает, то его хватит за глаза на всю систему.

    По поводу направлений копаний для сооружения колхоза - продолжайте отсюда: forums.overclockers.ru/viewtopic.php?t=14083

    Ах, чёрт, третью R9? Тогда да, 700вт немного уже не хватает. Хватит ли этого 250вт inwin на отдельную видеокарту - у меня большие сомнения.
    Ответ написан
    Комментировать
  • Двойная сортировка SQL?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Ваш пример сортировки не совпадает с описанным "сначало по статусу, а потом каждую группу по дате.". Строки 2 и 6.

    id--------name-----date----status
    1---------Ivan-----25.01-----1
    3---------Artem-----25.03-----1
    4---------Sasha-----25.04-----1
    6---------Gena-----25.06-----1
    2---------Sergei-----25.02-----2
    5---------Aleksei-----25.05-----2

    Вот так - order by status, date
    ASC и DESC исторически путаю, может быть order by status desc, date desc или что-то среднее между ними.
    Ну и если дата хранится именно вот так, а не внятным date, то могут разные странности сортировки как строки, а не якобы даты.
    Ответ написан
    Комментировать
  • Как правильно передать строку в --extra-vars Ansible?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    0) выясните, как запускать плейбук с extra-vars параметрами в несколько слов
    1) выясните, как корректно сформировать такой вызов со стороны php
    2) ...
    3) profit!

    Хинт: ещё кавычки плюс escapeshellarg, escapeshellcmd
    Ответ написан
  • Как отменить временные изменения для локальной версии репозитария Git?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    локальная версия сайта нуждается в предварительных правках кода

    Исправьте это, а не изобретайте странные костыли с редактированием истории коммитов.
    Ответ написан
  • Как создается индекс по колонке с типом datetime?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Потому что btree умеет обрабатывать не только равенство, но и запросы на диапазоны данных.
    Как именно на уровне кусочков данных - изучайте структуру b-tree и других деревьев поиска.
    Ответ написан
    Комментировать
  • Работает ли второй индекс после первого?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Порядок условий в запросе значения не имеет. mysql тупой, но, к счастью, не до такой степени.

    По второму вопросу: на усмотрение планировщика. index merge mysql умеет, но это может быть дороже поиска по одному индексу и дальнейшей фильтрации.
    Ответ написан
    Комментировать
  • Могу ли я установить Windows после Linux?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Сомневаюсь, что у вас GPT. Скорей всего классический MBR.
    Соответственно, 5 раздел создать вы банально не сможете. Нужно удалять четвёртый раздел, на его месте создавать extended раздел, поверх него уже логический для /home и другие нужные логические.
    Затем, есть огромное сомнение, что винды научились загружаться с логических разделов. Более вероятно, что только с основных.
    Соответственно, переразбивать диск надо будет капитально.

    Ну, решение без переустановки системы всё равно есть. Только муторно бывает иногда.

    Если вам-таки повезло, и диск с GPT таблицей разделов, то создать 5 раздел не проблема. А вот вопрос загрузки виндов с GPT таблицы разделов оставлю вам на самостоятельную проработку. Там какие-то идиотские ограничения есть, что и при каких условиях делать можно, а что нет.
    Ответ написан
  • Как правильно вставить строку в таблицу, у которой несколько primary key?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Более одного первичного ключа быть не может.
    Вообще никак не может.
    Первичный ключ может быть только один.

    Но первичный ключ может быть составным.
    Судя по характерному php E_NOTICE, в zend fw составной первичный ключ указывается каким-то другим способом, потому что код пытается привести $_primary к строке и за это получает E_NOTICE.
    Ответ написан