Задать вопрос
  • Как настроить один cups на несколько серверов?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    насколько понял, вам вообще на терминальных хостах не нужен cups сервер, а только cups-client и ServerName сервера печати в /etc/cups/client.conf
    Ответ написан
    Комментировать
  • Как войти под пользователем?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    sudo - запуск команды от имени пользователя ОС.
    Пользователь ОС не имеет совсем ничего общего с пользователем в БД. Пользователя ОС вы не создали, ответ sudo закономерен.

    Для использования psql sudo не нужен. Нужны настройки pg_hba.conf и сам psql. Например, psql -U user1 database1
    Ответ написан
    5 комментариев
  • Как установить phpize для php 7.4?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Соберите php из исходников, какие проблемы? Раз вас всё равно интересует разработка модуля под ещё разрабатываемую версию PHP - то иметь дерево исходников самого php под рукой банально удобнее чем полагаться на некоторый сторонний репозиторий.

    Кстати, вы совершенно не указали какой именно вы используете репозиторий. PHP7.4 на данный момент RC6. Значит это гарантированно не штатный репозиторий centos.
    Ответ написан
    6 комментариев
  • Можно ли в SQL создавать псевдонимы в конструкции where и использовать его в select?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Нужно получить диапазоны цен, где максимальная цена больше определенного числа.

    Мне кажется вам нужен вовсе:
    select product_id, min(price), max(price) from prices group by product_id having max(price)>= ?


    А отвечая на вопрос в лоб - lateral join'ом перенести подзапрос в секцию from и всё.
    Ответ написан
    1 комментарий
  • Зачем в catch делать throw?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Если в catch больше ничего не происходит и нет finally - то такое перекладывание бесполезно.
    Ответ написан
    2 комментария
  • Centos7, как обновить postgresql с 9.2 до 10 версии?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Если база большая - pg_upgrade в link mode. В документации шаги вполне описаны. Желательно иметь реплику на всякий случай.
    Если база маленькая - pg_dumpall и импортировать в новую версию из дампа. Собственно всё просто: запустить новую базу на отдельном порту, снять дамп, залить дамп, остановить старую базу,, перезапустить новую на нужном порту.

    Просто запустить бинарники одной major версии на datadir другой major версии - не получится.

    Для обновления в пределах одного сервера нужны бинарники обеих версий СУБД. Инструкцию по установке уже расписал Alexey Dmitriev

    не ниже 10.1(на локалке у меня 10.1) или лучше ставить последнюю 12?

    10.11 минимум. Нечего тестировать давно закрытые ошибки.
    Ответ написан
    Комментировать
  • Есть ли в природе материнские платы с двумя сокетами LGA 1155?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Идём в спецификацию и читаем:
    Max CPU Configuration 1

    У них вообще нет линков для межпроцессорного взаимодействия. Емнип, как и контактов под это дело вообще у 1155 сокета - строго 1S сегмент.
    Ответ написан
    1 комментарий
  • Как разграничить видимость данных в таблицах Postgresql?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    RLS то что вы хотите услышать.

    Отдельный сервис между базой и неподконтрольными вам клиентами - то что вам необходимо сделать. База в мир открыта быть не должна. DoS делается довольно просто даже без знания паролей, а уж с доступом...
    Ответ написан
  • Postgres - не корректно работает SQL запрос(EXIST)?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Мне ещё со времён темы на sql.ru не хочется узнавать что это вы такое соорудили и зачем так сложно.

    Очень плохая мысль пытаться использовать одинаковые идентификаторы много раз. У вас либо весь запрос работает по принципу if exists subquery then взять все строки таблицы else пустое множество либо как-то переплетены между собой условия неочевидным образом из-за совпадения идентификаторов.
    Использовать exists как one-time filter в целом попробовать можно - но обычно exists по не коррелированному запросу есть ошибка.
    Ответ написан
  • Отличия pci-e 3.0 и pci-e 3.1?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Тут спецификации PCI-E 6.0 обратно совместимы со всеми предыдущими PCI-E включая 1.0, а вы о 3.0 vs 3.1...

    Да, должен работать.
    Ответ написан
    2 комментария
  • Возможно ли настроить "автопартицирование" в PostgreSql?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Нет.

    PS: такие мелкие партиции скорей всего ухудшат производительность.
    Ответ написан
    Комментировать
  • Почему pgadmin орет на dblink?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Вы запросили select *, затем сказали что record возвращаемые функцией соответствуют по структуре одному полю типа numeric.
    Всё, в самом прямом смысле
    query result rowtype does not match the specified FROM clause rowtype


    pgadmin вовсе ни при чём, на запрос закономерно удивляется сам postgresql
    Ответ написан
    4 комментария
  • Почему Micron RealSSD P400m 2.5 400GB SATA 6Gb/s столько стоит?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    На залежавшиеся железки бывают иногда неадекватные ценники.
    Для его родного 2013 года характеристики не самые плохие. Насколько ретроспективно могу сходу найти - конкурировать с intel DC S3700 хотели. Впрочем ценник в $1300 и тогда был бы неадекватен, не то что сейчас (каких-то MSRP не нашёл для ориентира).
    Ответ написан
    Комментировать
  • Как создать тип перечисления?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Чтож, зависит от того что именно вы хотите сделать.

    PostgreSQL позволяет сделать полностью собственную реализацию типа данных. Которая будет себя вести так как вы захотите - но всю эту логику вы должны разработать сами на C. Потому у create type и довольно объёмная документация.

    range типы - это диапазоны. Например, дата бронирования номера гостиницы. Таблица бронирований, одно поле с диапазоном дат tsrange и exclude constraint - всё, база проконтролирует, что даты бронирования не пересекаются.

    перечисления - это обычно подразумеваются enum. Но для вашей задачи это не подходит. enum - это фиксированный набор из строк.

    что-то похожее на штатные типы данных, но с ограничениями - вы хотели найти не create type, а create domain:
    CREATE DOMAIN smallint_between_10and200 AS smallint CHECK(value >= 10 and value < 200);

    Всё, теперь в таблицах вы можете использовать тип данных smallint_between_10and200, в который тем не менее записать что-то не из диапазона 10..200 будет невозможно.
    Ответ написан
    1 комментарий
  • Как проверить пустое ли поле?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Оператор сравнения в plpgsql такой же как в SQL. is null для проверки является ли значение null и = для равенства.

    Для изменения вставляемой строки вы должны модифицировать переменную new, а не пытаться уйти в бесконечную рекурсию выполняя аналогичную вызвавшему триггер операцию.
    Ответ написан
    3 комментария
  • Насколько дорогая SQL операция NOT IN/NOT EXISTS?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    В таблице items 12 млн записей, в using_items 11 млн. Разумеется количество гипотетическое и маловероятное.

    Да нагенерируйте и посмотрите explain analyze. Были бы действительно объёмы, а не всего-то десяток миллионов строк.

    not in дорог из-за требования стандарта по части обработки NULL в not in и отсутствии специальных оптимизаций для этого случая. Может быть оптимизация появится.
    not exists оптимален.
    через left join план может быть идентичным not exists
    Ответ написан
    Комментировать
  • Как распределить логи звонков по БД?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Два вопроса:
    - сначала решите зачем вам эти данные, как и зачем их отображать. Только потом думайте над хранением. Потому что от задач зависит что именно вам надо хранить.
    - сколько миллионов звонков у вас в час чтобы думать над распределением записи?

    Партицировать по месяцам, впрочем, вероятно будет полезно. Удалять целиком партиции банально проще. Только именно партицировать штатными средствами СУБД, а не грабли какие-то странные выдумывать.
    Ответ написан
  • Как json перевести в массив?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    По виду похоже на дважды закодированный json. То есть
    $out = json_decode(json_decode($var), true);
    Ответ написан
    Комментировать
  • PostgreSQL как посчитать количество ключей в JSON?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    select k, count(*) from tablename join  jsonb_object_keys(data) as k on true group by k

    ?
    Ответ написан
  • Как ускорить поиск?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Подумать, действительно ли нужен select *
    Если нет и нужно достать одно-два поля - запрашивайте только необходимые эти поля и добавьте их в индекс. В include для postgresql 11+ или в сам индекс после word. С учётом статичности самой таблицы будет index-only scan всегда.
    Если все нужны - то в принципе можно и в индекс вероятно загнать, но вряд ли в этом будет уже смысл.

    Можно ещё с hash-индексом попробовать если postgresql 10+. Но сомневаюсь.
    Ответ написан
    Комментировать