Задать вопрос
  • Таймаут запроса postgresq?

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

    В списке переводов вижу:
    msgid "canceling statement due to conflict with recovery"
    msgstr ""
    "выполнение оператора отменено из-за конфликта с процессом восстановления"
    --
    #, c-format
    msgid "canceling statement due to lock timeout"
    msgstr "выполнение оператора отменено из-за таймаута блокировки"
    --
    #, c-format
    msgid "canceling statement due to statement timeout"
    msgstr "выполнение оператора отменено из-за таймаута"

    "canceling statement due to statement timeout" - это строго про statement_timeout. Значит для той транзакции он не 0

    Запретить клиенту ставить самому себе таймаут невозможно. Ищите, где перед этим запросом таймаут выставляется.
    Ответ написан
    Комментировать
  • Можно ли два PXE-сервера засунуть в один TFTP?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    PXE кто дальше грузит? pxelinux?
    pxelinux опрашивает конфиги по порядку: https://www.syslinux.org/wiki/index.php?title=PXEL...
    Соответственно можете на каждого клиента развесить разные конфиги PXE.
    Или по DHCP раздавать Option 209 pxelinux.configfile, на который pxelinux тоже согласно доке реагирует.
    Ответ написан
    Комментировать
  • Как решить проблему с настройкой RAID массива?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Если у вас нормальные SSD (а для hetzner это надо отдельно выяснять - могут откровенный мусор поставить под видом datacenter ssd) - то вам вообще не нужен RAID-контроллер.
    Разве только вы умеете конкретно этот контроллер аккуратно настраивать под работу с SSD. Иначе вы упрётесь в производительность контроллера, а не в возможности накопителей. RAID контроллеры уже давно не успевают за хорошими SSD
    Ответ написан
  • \. В sql файле?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    с помощью утилиты pgsql

    Не знаю таких. Что это за утилита, что делает, как это делает?

    что значит \.

    Так помечается конец данных для COPY. https://www.postgresql.org/docs/current/sql-copy.html
    End of data can be represented by a single line containing just backslash-period (\.).


    емнип, php вовсе не может выполнять copy from stdin как запросы, только как функции PDO::pgsqlCopyFromArray для PDO или pg_put_line, pg_end_copy для php-postgresql расширения.
    Ответ написан
    Комментировать
  • Можно ли установить libvirt отдельно?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    apt-get install --no-install-recommends libvirt-clients python-libvirt


    kvm и qemu в рекомендуемых пакетах упомянуты, установка которых обычно включена
    Ответ написан
    4 комментария
  • PostgreSQL: Как добавить данные?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Сначала сделать copy в другую табличку с текстовыми полями (temporary table вполне подходящее место), затем insert .. select запросом перенести куда надо с любыми манипуляциями по пути.

    Или сделать хранимку на любом языке и читать файл через неё, преобразуя данные по пути.
    Ответ написан
  • А кто нибудь вообще работает с БД через консоль?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Работаем. Постоянно. У меня не установлено ни одного GUI к какой-либо базе

    В psql вывод большого числа строк решается штатным \pset pager {on,off,always}, большое число столбцов обычно удобнее в развёрнутом виде (\x) смотреть.
    Или взять less в качестве PAGER и получить скролл таблицы и горизонтальный и вертикальный:
    export PAGER='/usr/bin/less -S'
    psql


    Для клиента mysql помню только развёрнутый вывод \G после запроса:
    mysql> select * from users \G
    *************************** 1. row ***************************
            id: 104
          name: NULL
        gender: 0
    birth_date: 0
         phone: NULL
    1 row in set (0.00 sec)

    По клиенту к ораклу ничего не скажу, не видел.
    Ответ написан
    1 комментарий
  • Как организовать СХД для домашнего сервера?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Решил сделать upgrade своих серверов, а точнее поместить все на 1, планирую взять Supermicro 6025T и крутить на нем виртуалки с необходимыми ролями в Hyper-V.

    Внимание вопрос: нафига вам СХД?
    Тем более речь о 2U шасси уже на 8 hotswap дисков для всего лишь 10тб места - до 112ТБ сырой ёмкости для современных дисков.
    Ответ написан
    Комментировать
  • Какие есть примеры архитектуры бд в которых у каждого пользователя отдельная база данных?

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

    Дело в том что у каждого пользователя будет свой словарь и еще некоторые данные.

    Между предложениями нет никакой связи, уж тем более причинно-следственной.

    Для начала ответьте, по каким соображениям вы решили отбросить обычную нормальную форму (это технический термин) с добавлением к сущностям поля со ссылкой на владельца.
    Ответ написан
    Комментировать
  • Создается ли автоматически индекс при создании foreign key в PostgreSQL 10?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Нет, не создаётся. На той таблице, на которую FK ссылается индекс уже должен быть создан уникальный, на той таблице которая ссылается наличие индекса никак не проверяется и даже не требуется. Надо только понимать, что FK - for each row триггеры и без индекса будет N seqscan таблицы.

    Обычно индекс создаётся вручную. Иногда намеренно не создаётся.
    Ответ написан
    Комментировать
  • Big прайсы, обновлять или удалять и заново записывать?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Суть такова, что есть прайс(ы) ~5млн и его нужно быстро обновлять (раз в 2 часа).

    Это НЕ много и совсем НЕ часто.

    обновлять или удалять и заново записывать

    Ложный выбор, это одна и та же операция. MVCC update = delete + insert
    Но что важно - не делать update который вам действительно не нужен. Postgresql не анализирует данные в поиске пустых обновлений, update table set id = id; вам честно удвоит таблицу, хотя ничего на логическом уровне не изменится.

    Профилируйте, на что реально тратите время - pg_stat_statements ответит хорошо на этот вопрос со стороны базы. Пальцем в небо - вы работаете в автокоммите и естественно 5млн пишущих операций для любой честной ACID базы - это порядком медленного IO (даже для SSD)
    Ответ написан
    4 комментария
  • Есть ли серверные MB под пару i7 на LGA1366?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Основная проблема - на десктопных i7 отсутствуют дополнительные линки QPI, необходимые для взаимодействия между процессорами.

    Поэтому в двухсокетных материнках и не каждая пара Xeon работать будет, нужны как минимум именно те, у которых активны QPI линки. Например, пара каких-нибудь Xeon W3680 не заведётся потому же, почему и пара i7. Они искусственно разделены на разные рынки.
    И наоборот, ради пиара была даже вполне десктопная материнка, но всё равно требующая xeon - EVGA Classified SR-2
    Ответ написан
    Комментировать
  • Как исправить ошибку postgresql?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Прежде всего проверьте версию СУБД. json_array_elements_text была добавлена в релизе 9.4.
    Ответ написан
    8 комментариев
  • Раздельный дамп базы, как организовать?

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

    Ну а по логическому дампу - записать данные и построить индексы или добавить индексы, а потом писать данные - две очень большие разницы.
    Поскольку речь о статистике - нарежьте статистику на партиции, можно в отдельный schema их пихнуть для удобства. Основную базу соответственно дампите с исключением данных партиций, затем заполняете разделы данными и пристёгиваете их к основной табличке. Или, что лучше, дампите в более подходящие format custom или directory всю базу, затем восстанавливаете параллельно с --exclude-schema и отдельно разделы статистики.
    Ответ написан
    Комментировать
  • Как спрятать таблицы для пользователя?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Никак.
    Ответ написан
    Комментировать
  • Какой тип данных выбирать для ID в PostgreSQL?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Как я понял для ID лучше выбирать int, а не smallint.

    Тип необходимо выбирать соответствующий данным.
    Например, для идентификатора страны int будет явно избыточен. А где-то и int мало и нужен bigint

    2. Для названия акции есть тип character varying(n), varchar(n) Нужно ли задавать его длину? Или можно оставить поле пустым?

    Это вопрос к вам как автору схемы базы.

    3. Как влияет задание длины поля на экономию места в базе?

    Никак. Это просто дополнительное ограничение данных.
    varchar и text - типы с переменным размером, занимают столько места, сколько данных записано.

    Например сейчас все названия акций не более 10 букв, а что будет, если в будущем появится название из 30 букв? Придется изменять длину строки? Можно ли так делать, когда база уже частично заполнена?

    Увеличивать размерность возможно и это быстрая операция.

    4. Для чего ставить поле -Not null?

    Дополнительное ограничение на данные, запрещающее ставить специальное значение NULL, то есть "нет значения". Использовать или не использовать NULL - решение автора схемы базы.
    Если вы попытаетесь записать NULL в поле отмеченное not null - будет ошибка и ничего записано не будет.
    Ответ написан
    1 комментарий
  • Есть ли какой-то способ проверить правильность SHA1?

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

    SHA1 даёт ровно 160 бит информации. Никакой формы идентификации, избыточности или crc стандартом не предусмотрено.
    Ответ написан
    Комментировать
  • Почему два одинаковых запроса PDO возвращают разные результаты (один запрос подготовленный, а другой - обычный)?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Потому что это разные запросы. Соответственно:
    WHERE id IN ('104,106')
    WHERE id IN (104,106)

    Первый из-за мягкой системы типов mysql тихо превращается во что-нибудь интересное вроде id = 104 с незаметным варнингом от парсера mysql
    Ответ написан
    2 комментария
  • Почему у меня возникает ошибка при доступе к определённой базе данных PostgreSQL 11 из IntelliJ IDEA 2018.1?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Ваше приложение ещё не поддерживает вышедший в четверг postgresql 11. Возможно обновление уже выпущено, я так догадываюсь версия 2018.1 была довольно давно.

    proisagg и proiswindow были удалены из системного каталога pg_proc ещё в марте до feature freeze и эти изменения вошли в postgresql 11.
    Ответ написан
    Комментировать
  • Какие типы данных выбирать для новой базы данных для экономии места?

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

    Если цель оптимизировать занимаемое место для явно timeseries данных - то и используйте timeseries базы.
    Полновесный версионник с 23 байтами оверхеда на один только заголовок каждой строки (ещё не начиная считать данные, плюс выравнивание структур) сильно сомнительно что окажется компактнее ориентированных на timeseries данные базы.
    Ответ написан
    1 комментарий