Задать вопрос
  • Как решить проблемы с 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.
    Ответ написан
    Комментировать
  • Умеет ли postgres в асинхронные запросы?

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

    Будут ли запросы в самой базе сериализоваться в очередь либо выполняться параллельно - вопрос к этим самым запросам. Читающие довольно сложно чем-то заблокировать, пишущие чаще могут конфликтовать за блокировки.
    Ответ написан
    Комментировать
  • Как получить правильный ассоциативный массив?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    $pdostmt->fetchAll(PDO::FETCH_KEY_PAIR);
    Первое поле результата будет ключом массива, второе - значением.
    Ответ написан
    Комментировать
  • Ошибка PHP(7.2): Warning: date_format() expects parameter 1 to be DateTimeInterface, boolean given?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Warning: date_format() expects parameter 1 to be DateTimeInterface, boolean given

    Что именно неясно в ошибке сказано? Параметр должен быть чем-то похожим на DateTimeInterface, а вы bool пихаете.
    Откуда bool - потому что date_create_from_format его имеет право вернуть. В частности, если формат строки не соответствует требуемому.

    Ну и не имеет смысла дёргать форматирование в строку и повторно strtotime, когда уже есть родной метод getTimestamp.
    Ответ написан
  • Какое количество оперативной памяти у меня свободно?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    linux ate my ram!/

    1686мб доступно. См. available в выводе free.

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

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Смотрите explain (analyze, buffers), сильно желательно с включенным track_io_timing. Почти наверняка первый запрос вы читаете с диска, второй - уже из shared_buffers. Либо с page cache операционной системы.
    Ответ написан
  • Какую базу данных посоветуете для высокой согласованности между узлами CP в рамках CAP теоремы?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    чтобы они были согласованные

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

    У пользователя 100 рублей на счету. У вас упала сеть между серверами баз.
    Пользователь хочет потратить 100 рублей.
    Что дальше?
    - запрещаем тратить пока не починим - вот это CP система. Мы в readonly, но все данные корректны, к какой базе бы не обратились. Синхронная репликация в основном
    - разрешаем потратить только на одной базе, вторая - readonly и соответственно может показывать отстающие данные. Но работает. Это любая СУБД умеющая master-slave репликацию. Реплика догонит состояние мастера непротиворечиво и самостоятельно когда почините сеть
    - разрешаем запись на обоих серверах. Пользователь нажал "купить" дважды, запросы случайно попали на разные сервера. Сеть починили - как соединять данные? Две покупки и -100 на счету? Какая-то одна покупка? Как это решать автоматически, да ещё на уровне СУБД, а не бизнес-логики?
    Ответ написан
    1 комментарий
  • Что программно представляет собой реляционная база данных?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Есть фундаментальный труд Transactional Information Systems. Theory, Algorithms, and the Practice of Concurrency Control and Recovery авторства Gerhard Weikum и Gottfried Vossen.

    Ведь не проблема читать-писать файлы. Проблема - как это делать корректно в условиях конкурентного доступа, как обеспечивать восстановление после аварий, как обеспечивать ACID. В этой книге как раз вся сопутствующая теория.
    Ответ написан
    2 комментария
  • Чем чреват запуск 2 инстансов Postgresql одной версии на одном сервере?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Никаких. Совсем никаких. Это штатный вариант работы, есть даже штатная настройка cluster_name, которая будет выводиться в списке процессов для лёгкости идентификации, на какой именно кластер вы смотрите. Для debian/ubuntu - управляется вовсе стандартными штатными утилитами pg_ctlcluster.

    Нужны разные datadir и не пересекающиеся сетевые настройки
    Ответ написан
    3 комментария
  • Как клонировать реальный HDD / Flash Usb в качестве виртуального диска VirtualBox с тем же размером?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Консольный интерфейс предоставляет такие возможности. Можно напрямую сконвертировать и сам начальный образ:
    VBoxManage convertdd sdb.raw sdb.vdi --format VDI
    # затем обратно
    VBoxManage clonehd sdb.vdi sdb.raw --format RAW


    А можно и сразу raw устройство подцепить, в GUI отсутствует т.к. штука опасная для обычного применения. См. раздел 9.9. Advanced storage configuration
    Ответ написан
    Комментировать
  • Onlime + 100Gb. На 1 акк = 200Gb?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    А дают?
    Числится как давно прошедшая акция: https://yandex.ru/support/disk/enlarge/bonus-space.html или https://yandex.ru/support/disk/enlarge/bonus-space...

    По второй акции вы и так в серой зоне:
    либо до момента прекращения оказания ПАО «Ростелеком» услуг по предоставлению доступа к сети Интернет в соответствии с группой тарифных планов такому физическому лицу

    Раз договор расторгнут, то по условиям акции дополнительное место должно было быть отобрано.
    По первой - такого ограничения в тексте нет, но увеличение так же не постоянное, а с чётким сроком действия.

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

    В тексте обеих акций, поэтому нет. И технически проверяется это элементарно.
    Ответ написан
  • Как расширить файловую систему на RAID томе mdadm?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Так у вас под массив и выделена только половина тома.
    Выкидываете диск из массива
    mdadm /dev/md0 -f /dev/vda
    mdadm /dev/md0 -r /dev/vda
    переразбиваете диск на всю ёмкость и добавляете обратно
    mdadm /dev/md0 -a /dev/vda
    Следите за процессом синхронизации, когда закончится повторяете с другим диском.

    Впрочем, через parted resizepart должно быть возможно расширить раздел без пересинхронизации массива.

    Потом
    mdadm --grow /dev/md0 --size=max
    resize2fs /dev/md0

    И вопрос в сторону: vda/vdb - обычно обозначают виртуалку. Вы уверены, что вам вообще рейд в госте нужен? Обычно рейд на хост-системе делают.
    Ответ написан
    5 комментариев
  • MySql кеширование селекта на 1 минуту вне зависимости от изменения в таблицах?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Сделайте какой вам нужно кеш самостоятельно.
    Нет в mysql никакого кеша запросов. Серьёзно. Выключен в 5.7 и удалён в 8.0.
    Ответ написан
    Комментировать
  • Как конвертировать/сохранить Unicode в UTF8?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Раз уж собираете URL вручную, то хоть следуйте стандарту. Параметры должны быть urlencoded. В js для этого есть encodeURIComponent
    Ответ написан
    Комментировать
  • Как получить список чисел отсутвующих в базе PostgreSQL?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Нужен опорный список значений и not exists подзапрос. Опорный список можно сделать через generate_series функцию
    select n from generate_series(1,11) as n
    where not exists (select from tablename where id = n)
    Ответ написан