Задать вопрос
  • А кто нибудь вообще работает с БД через консоль?

    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 комментарий
  • Как решить проблемы с RAID, Smart Event?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Проверил диск на пк на наличие ошибок, все в порядке диск исправен и работает.

    5 Reallocated_Sector_Ct 0x0033 001 001 036 Pre-fail Always FAILING_NOW 2028

    Диск труп. Не самая частая ситуация, когда об этом предупреждает механизм теоретически и предназначенный сообщать о проблемах, но вам повезло - SMART опознал, что диск при смерти. Меняйте его.
    Ответ написан
  • Postgresql - как включить логирование запросов?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    rpm-based (redhat, centos) и deb-based (debian, ubuntu) ставят postgresql разным образом. Поэтому детали различаются.

    PGDATA вида /var/lib/pgsql/9.6/data/ характерен для centos. Конфиг базы при этом лежит здесь же.
    ubuntu кластер по умолчанию кладут в /var/lib/postgresql/9.6/main/
    Логи в ubuntu по умолчанию будут писаться в /var/log/postgresql/postgresql-9.6-main.log , а конфиг - в /etc/postgresql/9.6/main/postgresql.conf

    В общем-то, вопроса тут два:
    найти куда пишутся логи базы либо изменить настройки, чтобы логи писались туда куда вы хотите. Это никак не связано с включением логирования запросов, это где логи в целом. Если у вас причина менять настройки места логирования - то вы уже должны представлять зачем.
    включить логированиие запросов: настройка log_min_duration_statement позволяющий логировать запросы дольше указанного времени (0 - все запросы) или log_statement, логирующая всё указанного типа (например, все DDL)

    При том практика centos писать логи в каталог базы в некотором отношении порочна: эти логи будут попадать в pg_basebackup, где им делать в общем-то совершенно нечего и незачем.
    Ответ написан
    1 комментарий
  • Portage SQL: найти различия реально?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Зачем вам Portage SQL вообще в винде?
    Наверное, речь всё-таки о PostgreSQL.

    Сравнение двух таблиц - банальный стандартный FULL OUTER JOIN
    select * from t1 full outer join t2 using(id) where (t1.*) is distinct from (t2.*);

    Сравнение баз - вероятно удобнее будет чем-то внешним.
    Ответ написан
    Комментировать
  • Raid 5 или 6 на ssd для esxi?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    SSD берут ради скорости, тем более внятные на запись серверные SSD.
    RAID5 или 6 ставят ради стоимости хранения гигабайта ценой заметного ущерба производительности записи.
    То есть не очень понятно, с какой целью вы рассматриваете 5 или 6 рейд на хороших SSD. Если важен объём - то берите более дешёвые S45xx

    и вообще у кого есть опыт использования ssd в рейдах на длительный срок(3-5 лет) как себя ведут ssd

    Intel - отлично себя ведут. Даже при проблемах с питанием, у них штатный конденсатор, держащий достаточно энергии для корректной записи всего что диск пообещал системе. В спеках описано как Enhanced Power Loss Data Protection
    У нас в эксплуатации много intel'ов разных лет (давно за сотню штук) Меняли в основном потому что в объём упирались. С отказом диска встречались только один раз. И это всё в условиях под постоянной нагрузкой СУБД postgresql.
    В общем, мы безоговорочно рекомендуем брать в сервера интеловские SSD (если получается) за надёжность и предсказуемый latency под нагрузкой. Другие диски - очень сильно по разному себя ведут.

    2) исходя из вопроса, есть смысл делать рейды 5 или 6 если все равно на все ссд пишется сразу данные ? получается к концу обьема записи ssd придется менять все диски сразу если какой раньше не вышел из строя

    Я не вижу смысла в 5/6 рейдах на хороших SSD не касаясь Lifetime Writes

    1) в этом контроллере есть hp smartpath, при его включении линейные скорость значительно ниже, примерно в 2 раза нежели при включении встроенного кеша, имеет смысл его вкл(smartpath или выключать) ?

    Лучше softraid. Серьёзно. Без шуток. Глупый HBA и softraid.
    hardraid под хорошие SSD надо или очень пристально настраивать хорошо зная свой контроллер или вы будете упираться в производительность контроллера, а не в диски.
    PS: зачем вам линейные скорости под базы и виртуалки? Тестируйте random io.
    Ответ написан
    Комментировать
  • Добавление ОЗУ с другими характеристиками?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Память формата DDR2 SDRAM должна уметь работать на напряжении 1.8V +/- 0.1V. Иначе она не может называться DDR2 SDRAM - это стандарт JEDEC.
    Ответ написан
    Комментировать
  • Возможно ли вывести количество уникальных слов в таблице?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    select lexeme, count(*) from tabledata cross join unnest(to_tsvector(data)) as lexemes group by 1;

    ?

    gin_trgm_ops - НЕ полнотекстовый индекс и не производит деление по словам. Это pg_trgm extension с реализацией триграмного поиска. Имеет отношение к тексту, но совсем не fulltext search.
    Ответ написан
    Комментировать