Задать вопрос
  • Как подключать питание процессора 8+8pin на LGA1700?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Единственный смысл добавления всё новых проводов от блока питания к материнской плате помимо 20-контактного коннектора ATX из 1995 года - уменьшение силы тока, протекающего по наиболее загруженным проводам и контактам разъёмов.

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

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Могут ли их primary key id смешиватЬся?
    То есть, если запросить дату с ORDER BY id, и получить

    Да.

    За генерацию значений отвечают sequence (неважно каким именно способом объявлена таблица - default nextval явно созданного сиквенса, serial или generated identity - это всё будет сиквенс).
    Сиквенс гарантирует только уникальность своих значений. Никаких гарантий порядка записи в таблицу он не даёт.

    Два параллельных insert в postgresql так же друг друга никак не блокируют и исполняются конкурентно. Кто и в каком порядке надёргал nextval сиквенса потребное для своих данных количество раз - такие значения они и запишут.
    Ответ написан
    Комментировать
  • Какой разрядности счётчики транзакций в PostgreSQL 14 версии?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    internals 64 битные
    heap 32 битные

    Если вы хотите чтобы ни один крупный проект не стал обновляться на такую новую версию - без проблем, поменять формат страницы heap не так уж сложно. Почему после принятия такого патча никто не станет обновляться? Потому что вместе со сменой формата страницы вы напрочь сломаете in-place pg_upgrade и вынудите обновляться только через dump+restore. Удачи это сделать на 10тб базе за обычные для pg_upgrade 5-10 минут даунтайма. А если у вас крошечная база которую можно за 10 минут обновить дампом - то вам и 64-битные xid банально не нужны и не важны.
    Если интересно поподробнее, подождите запись вот этого свежего доклада
    Ответ написан
    Комментировать
  • Есть ли разница в БД Postgres: хранить string(255) или string?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Для начала, в postgresql нет типа данных string. (а если это самодельный тип, что postgresql сделать тоже позволяет, то смотреть надо как он реализован у вас)

    Для текстовых данных в postgresql есть:
    - text. Просто text, без специфических ограничений на содержимое
    - varchar - это всё тот же самый text. К varchar можно добавить указание ограничения максимальной длины хранимого текста в символах. Почему это отдельный тип данных? Потому что такого требование стандарта SQL
    - char - фиксированный длины (в символах! в байтах они всё равно динамической длины получатся для того же utf8). Смысла его использовать в postgresql, как вы сами процитировали документацию, нет. Зачем он нужен? Потому что описан в стандарте.

    В отличии от, например, mysql, для postgresql нет ничего особого в значении 255. Если в определении таблицы видно такое ограничение на 255 символов - обычно это означает именно "никто не обдумывал цель такого ограничения для этого поля, просто какое-то число"

    Говоря о выборе между text или varchar(N) - varchar(N) с разумным для этих данных N предпочтительнее для коротких строк, потому что не даст записать 10мб туда где должно быть, например, не более 64 символов (это не совсем шутка, случай из практики). А по ошибке в месте записи дебажить логику приложения куда как проще, чем искать потом откуда такое взялось.
    Ответ написан
    2 комментария
  • Не могу импортировать базу?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Не нравитсо именно это

    Никогда не думали, что само сообщение об ошибке пишут чтобы его вообще-то прочитали?

    Invalid default value for 'post_date'

    Смотрим на определение, видим DEFAULT '0000-00-00 00:00:00'
    Ну да, всё верно, такое значение некорректно, такой даты не существует. См. deprecated NO_ZERO_DATE
    Ответ написан
    1 комментарий
  • Возможно подключить через PG Admin к удаленной БД на продакшене?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    а зачем нужен pgadmin для управления базой?

    Ну а помимо этого, pgadmin не только умеет подключаться удалённо куда ему скажут, но и самостоятельно запускать для этого ssh туннель.
    Ответ написан
    Комментировать
  • Как преобразовать значения к типу в PDO?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Насколько я помню: https://github.com/php/php-src/blob/PHP-8.0/ext/pd...
    Нужен mysqlnd для получения родных типов данных.
    Ответ написан
    Комментировать
  • Последовательное включение жёстких дисков, можно ли и как?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Power-up in standby (PUIS). Должен уметь контроллер дисков.

    Почитайте вот этот топик: https://forum.ixbt.com/topic.cgi?id=11:44797 может быть найдёте что-то для себя полезное.
    Ответ написан
    Комментировать
  • Как оптимизировать update postgresql?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    UPDATE orders_new
    SET client_code=access.title
    FROM orders_new O

    Ну классика жанра. Если не видите self-join - то посмотрите ещё раз. Очевидно ошибочный запрос.

    https://www.postgresql.org/docs/current/sql-update.html
    Do not repeat the target table as a from_item unless you intend a self-join (in which case it must appear with an alias in the from_item).
    Ответ написан
  • Какую базу и способ хранения выбрать?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    База на 30гб? Какая смешная кроха.

    Да сгенерируйте себе синтетических данных и поиграйтесь с ними. Я понимаю неудобно на локальной машине щупать базу в десяток террабайт - но лишь только 30гб не проблема просто сгенерировать и посмотреть вживую.
    Ответ написан
    1 комментарий
  • Что происходит при повторном запуске команды MySQL source?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    source читает указанный файл с начала и до конца, передаёт серверу как будто это SQL команды. Никакой дополнительной логики не предполагается.
    https://dev.mysql.com/doc/refman/8.0/en/mysql-batc...

    Эквивалент "mysql db_name < text_file"
    Ответ написан
  • Как избавиться от ошибки с prepared statement при работе с PostgreSQL через PgBouncer?

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

    Замените слово "PgBouncer" на "ваше приложение" и тогда получите относительно верное описание происходящего.

    С практически 100% вероятностью у вас pgbouncer сконфигурирован в режиме transaction pool mode. А выполнение любого нового запроса в extended protocol (prepared statement) состоит из трёх вызовов:
    - prepare
    - bind
    - execute
    Нет ничего ошибочного в том, что pgbouncer сконфигурированный в режиме пула транзакций может направить каждое из этих 3 сообщений в разные коннекты базы. Это прямым текстом задокументированное ограничение пула транзакций. Итог закономерный, соответствующие процессы базы не понимают о чём речь и выражают удивление такими ошибками.

    Отключите использование server-side prepared statements на приложении.
    Ответ написан
    2 комментария
  • Почему не компилируется эта функция?

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

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Раздел данных, который с высокой вероятностью нужно расширять делаете в конце блочного устройства. Так, чтобы за ним ничего не было. И неважно, рутовый это раздел или ещё какой.
    Когда понадобится расширить:
    1. расширяете блочное устройство
    2. через parted командой resizepart увеличиваете раздел
    3. затем расширяете файловую систему: resize2fs для ext4, xfs_growfs для xfs. Если у вас какая-то вдруг другая экзотика - предварительно уточните команду.

    Всё.

    Можно добавить lvm, вся разница что между 2 и 3 пунктом добавятся pvresize и lvresize. Либо, по желанию, можно будет создавать дополнительные разделы (и/или диски) и их добавлять в lvm.
    lvm поможет, если вы решили сделать отдельный раздел под ОС и отдельный под данные, а потом поняли, что раздел ОС сделали слишком маленьким.

    PS: "Виртуальная машина, не особо важно под каким будет гипервизором" - не все гипервизоры могут корректно оповестить гостевую систему об изменении блочного устройства, для некоторых нужен рестарт виртуалки.
    Ответ написан
    4 комментария
  • Как сделать правильный комплексный индекс?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Надо найти самую старую по обновленности запись, где n_flag=0 и num_status>=10.

    btree(update_date) where n_flag=0 and num_status>=10
    Ответ написан
    1 комментарий
  • Реален ли хостинг на процессорах с частотой 5ггц?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Уже очень давно больше не существует понятия "процессор работает на постоянной частоте". Это величина динамическая по усмотрению самого процессора. Максимум того что осталось доступным - можно попросить более или менее агрессивную политику энергосбережения. А частотой всё равно будет управлять сам процессор.

    CPU с базовой частотой в 5ггц банально не представлено серийных, а Turbo Boost или аналоги - у них нет постоянной частоты. CPU загружен? CPU сбрасывает частоту чтобы уложиться в заданное тепловыделение или чтобы избежать перегрева. CPU не загружен? Понижаем частоту до минимума вплоть до обесточивания части ядер. CPU загружен умеренно - ок, повысим частоту сверх насколько захочется самому CPU. CPU загружен короткими всплесками (то есть типичная нагрузка от веба, что бекенда, что на стороне баз данных) - да ну нафиг частоту повышать, думает процессор. И не повышает.
    Ответ написан
    1 комментарий
  • Можно ли ограничить доступ usb-носителей с исключениями штатными средствами?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    поройтесь в сторону udev, например
    https://wiki.gentoo.org/wiki/Allow_only_known_usb_...
    https://unix.stackexchange.com/q/63199

    Конечно, это не имеет смысла если у пользователя есть рутовые права либо возможность их получить.
    Ответ написан
    1 комментарий
  • Как убрать readonly в Postgresql?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Postgresql вам редактировать и не препятствует. Раз вы смогли сделать create table - значит база не в read only режиме. Напишите соответствующий update и выполните.

    А вот вашему GUI клиенту скорей всего не нравится отсутствие primary key.
    Ответ написан
    Комментировать
  • Как перенести работающую ОС Debian 11 на RAID1 с имеющейся LVM разметкой?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Решили что следующая схема распределения объема HDD будет наиболее подходящей:
    SWAP - RAID1 - 5Gb
    / - RAID1 - 24Gb
    /home - RAID5 - все оставшееся место

    не трогаете sda вообще на данном этапе!

    Вы забыли /boot упомянуть, предположу что считаем его как гигабайтный раздел без существенных изменений.
    Игнорируем разметку sda полностью, делаете таблицы разделов на sd[bcd] как
    1MiB bios_grub
    1GiB boot
    29GiB sys
    всё остальное data

    mdadm -C /dev/md0 -l 1 -n 4 missing /dev/sdb2 /dev/sdc2 /dev/sdd2
    mdadm -C /dev/md1 -l 1 -n 4 missing /dev/sdb3 /dev/sdc3 /dev/sdd3
    mdadm -C /dev/md2 -l 5 -n 4 missing /dev/sdb4 /dev/sdc4 /dev/sdd4 # другие опции по вкусу

    ждёте resync, обновляете mdadm.conf, отправляете железку в ребут для проверки что массивы корректно собираются сами.

    pvinit, vgextend новых md1 и md2 в имеющийся LVM
    pvmove root и swap на md1, хомяка на md2

    umount /boot , dd if=/dev/sda2 of=/dev/md0, grub-install /dev/sdb , grub-install /dev/sdc , grub-install /dev/sdd, обновить fstab вместо sda2 записать md0

    контрольный ребут

    vgreduce sda3 из lvm, удаляете таблицу разделов sda и создаёте новую идентичную прочим дискам,
    mdadm /dev/md0 -a /dev/sda2
    mdadm /dev/md1 -a /dev/sda3
    mdadm /dev/md2 -a /dev/sda4

    после resync всё готово. Через lvresize расширить размеры томов ну и resize2fs как обычно.
    Ответ написан
  • Насколько упадет скорость жёсткого диска при подключении к SATA 2?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Никак не изменится.
    Даже на последовательных операциях механическим дискам далеко до пределов SATA II. А уж чуть только появятся задачи случайного чтения/записи - то и пределы SATA I будут очень далеко и крайне избыточны.
    Ответ написан
    Комментировать