Задать вопрос
  • Как взять из MySql колонки из конца (!) таблицы, с лимитом 30, и рассортировать их в по увеличению id(34,35,36)?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Взять выборку и обернуть во второй select с обратной сортировкой.
    select fields,... from (
    select fields,... from tablename order by field desc limit 30
    ) as subquery
    order by field limit 30


    Впрочем, если подумать:
    (
    select fields,... from tablename order by field desc limit 30
    )
    order by field limit 30

    mysql умеет
    Ответ написан
    1 комментарий
  • Ошибка [1064] You have an error in your SQL syntax?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Ну я допустим совершенно солидарен с СУБД. Что вы хотели вот тут сказать?
    AND ( REPORT='NArray )

    не представляю. Найдите откуда это пришло и исправьте.
    Ответ написан
    Комментировать
  • Как выучить PostgreSQL?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    MySQL выучил

    Знаете, даже опытного DBA реально удивить чем-то, что оказывается в базе существовало уже десяток лет.
    Поэтому фраза "MySQL выучил" не воспринимается как-то иначе чем признание в невежестве. Я работал с mysql много лет, оказывается топ3 пользователь по этому тегу на тостере. Знаю я mysql? Ничего подобного. Даже исходник открывал всего 1 раз.

    Какой смысл вы заложили в фразу "MySQL выучил"? Как его можно выучить?

    по курсу от WebForMySelf

    Это тот перепечатник, описывающий функционал, который mysql до сих пор не умеет? mysql_query, когда такого расширения вовсе уже не существует в PHP?
    Надеюсь, 5 лет назад когда вы изучали - было приличнее.

    В качестве обзорной экскурсии по устройству PostgreSQL могу припомнить хорошую лекцию Владимира Бородина, поищите записи Ильи Космодемьянского.
    Мануал хотя бы один раз надо прочесть от начала до конца
    И практика. Без мануала вы не узнаете какие возможности есть, без практики - не поймёте как (и, к слову, зачем) ими пользоваться.
    Ответ написан
    1 комментарий
  • Ошибка синтаксиса (примерное положение: "ON"). Ошибка?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    А где тут ошибки нет?
    В теге указан postgresql, где синтаксис create database вот такой: https://www.postgresql.org/docs/current/sql-create...

    А ваш запрос как раз начиная со слова on никак не похож и явно от какой-то другой СУБД.
    Ответ написан
    1 комментарий
  • Как правильно использовать модуль multiprocessing с PostgreSQL?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    решил отказаться от SQLite даже для хранения ссылок на файлы

    А зачем?
    sqlite отличная самая распространённая в мире база (см. android, firefox, chrome - sqlite всюду)
    Слабо себе представляю sqlite в масштабе террабайта, а в масштабе пары мегабайт postgresql будет явный overkill.

    Ну а по теме - я не питонщик и по приведённому коду мне совершенно неясно что же вы делаете. Профилируйте своё приложение, ищите где теряете время.
    Ответ написан
  • Почему запрос отправляется не корректно?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Начал писать комментарий про вот уже скоро 20 лет существования http/1.1, но впрочем всё чуть проще:

    https://tools.ietf.org/html/rfc2616#section-14.23
    A client MUST include a Host header field in all HTTP/1.1 request messages

    Вы грубо нарушили стандарт. Вы представились как HTTP/1.1 клиент, но не передали требуемый для этого стандарта заголовок Host.
    Некорректный запрос клиента - это код 400, сервер вам отвечает корректно.

    Минимально возможный запрос для HTTP/1.1 - это две строки:
    GET /... HTTP/1.1
    Host: api.vk.com

    Возможно потребуются ещё какие-нибудь заголовки, но это уже по необходимости. Браузеры типично отправляют много дополнительных заголовков.

    Одна строка была давным-давно допустима для HTTP/1.0, где на одном IP мог быть максимум 1 сайт. Большинство современных серверов вас выслушают по HTTP/1.0 но вряд ли вернут то что вы хотите, т.к. не будут знать, о каком домене вы спрашиваете и соответственно какому обработчику передавать запрос.
    Ответ написан
    Комментировать
  • Как использовать SQL запрос с to_tsquery и include?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Что такое include?

    чтобы в найденные объекты Lead добавлялись поля Unit, основываясь на unitId.

    Банальный join.
    Ответ написан
    Комментировать
  • Как создать БД от имени роли, имя которой не соответствует юзеру в Линукс?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Аккаунт ОС не имеет никакого отношения к пользователю БД. База может быть настроена проверять подлинность пользователя по соответствию имени пользователя - peer для unix sock. Но это не обязательно и это единственное что может связывать пользователя ОС и базу. (кроме учётки владельца, у того есть доступ напрямую к файлам)

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

    Далее следует сказать, что рядовой пользователь вовсе не может создавать базы данных. Это право должно быть выдано явно.
    Подключиться к postgresql можно только к конкретной уже существующей БД и у вашего пользователя должны быть права как на прохождение аутентификации указанным в hba методом так и права на подключение к нужной базе.
    Ответ написан
    Комментировать
  • Что нужно докупить к raspberry pi 3 b+?

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

    А вы какой ответ ожидали увидеть?
    Ответ написан
    5 комментариев
  • Почему wal-g backup-push зависает на Finished writing part 3?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    archive_command = '/usr/local/bin/backup_wal.sh'

    cat /usr/local/bin/backup_wal.sh
    #!/bin/bash

    . /etc/wal-g.d/server-s3.conf

    wal-g backup-push /var/lib/pgsql/9.6/
    wal-g backup-list

    Аааа?... Это вы сейчас серьёзно?

    Не будет это работать. archive_command вызывается на каждый сегмент WAL - 16мб изменений обычно. То есть легко десятки раз в секунду на нагруженных базах. Пытаться отсюда делать бекап кластера - идея ужасная.

    wal-push в archive_command должен быть. backup-push отдельно, из крона обычно.
    Ответ написан
    Комментировать
  • Возможна ли репликация с 10 postgres серверов на один общий сервер?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    как более правильно выполнять репликацию

    А что хотите-то?

    Штатной логической репликацией (pg 10 и выше) или через pglogical или даже триггерной репликацией можете реплицировать в одну базу. Корректное внесение DDL за свой счёт.
    Для физической репликации - репликация строго 1:1, потому разные инстансы базы. Всякие докеры абсолютно не нужны для этого. Разворачиваете реплики в разных директориях и на разных listen портах и всё. В ubuntu/debian штатные скрипты pg_ctlcluster даже есть чтобы инстансами удобно рулить.
    Ответ написан
    1 комментарий
  • Контроль I/O для сервера. Как ограничить потребление IOPS?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    См. механизм cgroups.
    Крутилки для io там были, например: https://unix.stackexchange.com/q/48138
    Ответ написан
    1 комментарий
  • Mysql индексы и DESC сортировка - как подружить?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    mysql давным давно умеет backward index scan.
    select * from events order by event_date desc limit 10
    select * from events order by event_date asc limit 10

    Оба могут использовать индекс по event_date.

    Начиная с 8.0 вы даже можете указать направление сортировки индекса и самостоятельно. ASC и DESC в определении индекса больше не игнорируются.
    Ответ написан
    1 комментарий
  • Как настроить KVM виртуализацию с двумя бриджами?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Чем вам поможет KVM, да и любая виртуализация в принципе, если софтинку убить нельзя, а она объедается памяти без ограничений? Всё равно OOM будет.

    Настройка сети KVM для вашего случая ничем не отличается, даёте ей один vif подцепленный на br1 и 10.0.0.250/24 в качестве default gateway. Кроме разве что того, что настройки IP адресации вам надо указывать в самом госте. Ну или dhcp настроить.
    Ответ написан
    2 комментария
  • Как вывести большую таблицу через flask из postgresql?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Если таблицы одинаковые - у вас должна быть одна таблица с полем что-то по смыслу типа записи. Плюс в стороне табличка справочник.
    Если таблицы разные - вам же и будут удобнее разные классы.
    Ответ написан
    Комментировать
  • Как найти записи в Postgres, которые содержат объект с определенным значением?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Если у вас это корректный json (или jsonb) а не то что показали:
    where jsonfield->'contacts'->>'email' = 'foo'

    Если там именно какой-то такой странный формат - то пишите его парсер.
    Ответ написан
    Комментировать
  • Как сделать выборку, обновить для нее записи и вернуть курсор с ними?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Не надо изобретать кривой велосипед с очередной очередью. Оно не будет работать под нагрузкой. Возьмите pgq.

    Ну а если всё равно хотите пособирать эти грабли:
    update tablename set status = 1
    where status = 0 and id in (
    select id from tablename where ..... order by ... limit ... for update
    )
    returning ...
    Ответ написан
  • Как получить полный размер кластера Postgresql (сумму размера всех БД на сервере)?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    select sum(pg_catalog.pg_database_size(d.datname)) from pg_catalog.pg_database d;


    Вот только полный размер кластера не то же самое что сумма размера всех БД. Размер кластера считается как du -s от $PGDATA
    Ответ написан
    Комментировать
  • Как поменять формат времени на Linux?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Вопрос к вашему приложению. Приложения форматируют вывод самостоятельно.
    Ответ написан
    Комментировать
  • Переход на postgresql (с mysql) в миграциях laravel?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Но в postgresql есть есть тип serial

    неа, нет его.
    Это именно синтаксический сахар вокруг create sequence + integer с DEFAULT nextval('users_id_seq'::regclass)
    Посмотрите в pg_dump, не найдёте ни одного serial

    вручную изменить тип поля на serial?

    alter table foo alter COLUMN i type serial;
    ERROR: type "serial" does not exist

    А вот не сможете, нет такого типа данных.

    2. unsigned
    Оказывается его нет в postgresql. Заменить на CHECK (имя_поля >= 0)? Или ещё какие варианты (если есть, то чем они лучше)?

    Да, unsigned типов нет. Можно check к полю добавлять, можно сделать create domain сразу с check и использовать имя этого домена в качестве типа данных.

    И опять-таки в миграциях лары нет никакого check()

    Я думаю в этих миграциях нет почти всего, даже из SQL92 стандарта. Утилиты миграций за исключением тех, что дают выполнять произвольный SQL, обычно ничего не умеют из возможностей базы, стоит лишь чуть копнуть вглубь.

    3. массивы
    Для mysql использовала string и туда записывала данные в виде json. Для postgresql пока выбрала прямо json. В миграциях он доступен. Или стоит выбрать тип массива? В чём разница между массивами и json в postgresql?

    Есть json. В json бывают массивы, бывают объекты, скаляры.
    Есть отдельно массивы в postgresql как отдельные типы данных. Вы можете сделать массив из json документов.
    Разница между json и массивами - разные наборы функций, операторов.

    Что-то laravel, как я пока вижу, мало адаптирован к работе с postgresql.

    Раз для mysql вместо json используется string (text видимо всё-таки) - то и для mysql не очень адаптирован. Ну или у вас mysql какой-то очень сильно древний.
    Такие конструкторы обычно адаптированы под людей, которые не знают и знать не хотят свою базу.
    Ответ написан