Задать вопрос
  • Составной индекс и селективность его столбцов?

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

    Зависит от алгоритма. Справедливо для btree, может быть полностью лишено смысла для других типов. Например, если СУБД будет строить ключ для hash-индекса от конкатенации полей индекса - (a,b) ничем не будет отличаться от (b,a).

    лучше определять b индекс для столбцов с высокой селективностью

    Не имеет важного значения.
    Значение имеет под какие запросы индексы делаем. btree (a,b) не может нормально обслуживать where b = value and a > value, для этого запроса куда осмысленнее (b,a)
    Если у вас запрос where a = const and b = const, то btree индексы (a,b) и (b,a) будут равнозначны.

    Если у вас индекс с крайне селективным timestamp на первом месте - то что вы с ним делать-то будете? Строгое сравнение таймштампа случай крайне редкий, а на любой запрос диапазона эффективность последующих полей падает катастрофично и большинство СУБД их вовсе не используют. В основном используют только если получается взять индекс как покрывающий.

    имеется два столбца в некоторой абстрактной таблице: x - внешний ключ, y - datetime

    Варианты если вы попробуете сделать только btree(y,x) индекс:
    - СУБД вовсе откажется делать FK т.к. нет подходящего индекса для проверки FK
    - СУБД неявно этот индекс создаст при добавлении FK
    - СУБД позволит существовать FK без индекса, но соответственно fullscan всей таблицы на каждую проверку консистентности по этому FK (возможно по отдельному сканированию на каждую строку, которая вызвала проверку целостности ключа)
    Ответ написан
    2 комментария
  • Конкатенатор php файлов в стиле препроцессора си. Есть такой?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Соберите в phar - будет ровно один файл. Замечали же что сам composer пакуется в composer.phar?

    Можно ли упакованную в phar библиотеку представить как библиотеку для composer - не смогу ответить.
    Ответ написан
    Комментировать
  • Почему в MySQL 8.0 при последовательной записи через пользовательскую функцию в автоинкрементном id образуются пропуски?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    А зачем эти извращения? Есть гарантированно конкурентно-безопасный LAST_INSERT_ID()

    У вас insert ignore используется. Значит, данные натыкаются на уникальные индексы? auto_increment при этом штатно тикает.
    Вообще auto_increment - это гарантированная уникальность. Если вы хотите "без пропусков" - вы взяли не тот инструмент.
    Ответ написан
    2 комментария
  • Как работает mysql limit?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Потому что верное описание синтаксиса limit дано в первой статье.
    Что проверяется первоисточником https://dev.mysql.com/doc/refman/8.0/en/select.html
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]


    Формируется выборка из row_count + offset числа строк, затем первые offset строк отбрасываются и в результирующий набор попадает не более row_count строк.

    Без явно указанного order by выборка смысла не имеет вообще, СУБД по стандарту имеет право отдавать любые удовлетворяющие запросу данные в любом порядке по своему усмотрению. Соответственно offset будет взять непонятно откуда и непонятно как.
    Ответ написан
    Комментировать
  • Как найти родительский процесс?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Есть у меня один зомби-процесс

    Где?
    user 3954 0.0 0.0 105316 952 pts/0 S+ 05:57 0:00 grep -w Z

    Здесь нет ни одного зомби.

    А grep в списке процессов ожидаемо есть и по условию "встречается Z" он успешно находит самого себя.
    Ответ написан
    1 комментарий
  • Какой RAID массив 1+0 или 0+1 наиболее надежный?

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

    Следует упомянуть, что конкретные реализации могут понимать под raid10 что-нибудь другое относительно классических примеров зеркало поверх страйпа или страйп поверх зеркала. Например, mdadm можно настроить писать raid10 разными способами, в том числе на произвольном числе дисков (например, raid10 на 5 дисках с равной утилизацией каждого) и с конфигурируемым объёмом избыточности (например, чтобы переживать смерть любых 2 дисков, но тогда общая ёмкость массива будет не raw/2, а raw/3)
    Ответ написан
    Комментировать
  • Современные инструменты для анализа sql запросов, какие они ( бренды)?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Касательно postgresql:
    Анализ конкретного запроса - explain (analyze,buffers) плюс немного знаний какие цифры что значат. Порой https://explain.depesz.com/ используется для визуализации цифр.
    Анализ нагрузки от запросов суммарно - contrib pg_stat_statements плюс любые какие вам нравятся выборки по полученной вьюшке. Например, топ запросов по времени выполнения, или какие запросы больше всего читают данных или какие пишут временные файлы - счётчиков для этого уже достаточно.
    Сторонние утилиты не скажут чего-то, что не скажет сама база.

    Касательно других баз - смотрите другие базы. explain есть наверное у всех, и точно у всех есть какие-то нативные метрики для запросов.
    Ответ написан
    2 комментария
  • Как составить следующий запрос SQL?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Смотрите в оконные функции. lag и lead, в postgresql давно, в mysql в 8.0 наконец появились. Для более старых mysql - извращаться.
    Ответ написан
  • Почему не дает перенести файл с правами 777 даже по sudo?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Если чуть присмотреться к пути в сообщении ошибки - то будет очевидно, что прав нет на удалённом хосте 192.168.1.27
    То есть вы банально не там смотрите права. sudo разумеется работает только на локальном хосте и удалённому нет никакого дела, есть у вас рутовые права на вашей локальной системе или нет.
    Ответ написан
    2 комментария
  • Существуют мини боксы для hdd\ssd с raid для подключения к компу по usb3.0?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Коробка под диски для прямого подключение (а не сетевого т.е. NAS) правильно гуглится как DAS, Direct-attached storage
    А вот с NAS оборудованными USB портами как раз поаккуратнее, зачастую это USB-хост и к ПК не подключается.

    Например
    Ответ написан
    Комментировать
  • SQL. Как запросить данные между двумя датами в таком случае?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    И где здесь "такой случай"?
    У вас в вопросе полностью запрос уже написан, приклейте к первой части вторую.
    Ответ написан
    Комментировать
  • Как настроить Postgres в Docker?

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

    Для использования базы вы обязаны предоставить нормальную файловую систему, необходимо предоставить сеть хоста. Изоляция? Так у вас система целиком под базу и так. Миграция на другой хост? Да у вас в этом докере только бинарники базы и есть. Точно такие же как в репозиториях, сама база-то снаружи в нормальной ФС. На другую архитектуру вы datadir не перетащите в принципе. Несколько кластеров баз на одной машине? А докер для этого зачем? На ubuntu/debian есть шикарные скрипты pg_ctlcluster. Про извращения с pg_upgrade обновлением базы не буду перепечатывать ответ с ruSO.

    На взгляд postgresql dba вы не передали никаких настроек вообще, а work_mem и вовсе уменьшили, 4мб у него дефолт. Соответственно база будет работать по-умолчанию, т.е. из расчёта запуститься на любом калькуляторе, а не внятно работать. Не хватает, соответственно, всего. Настройки более агрессивных checkpointer, bgwriter и autovacuum в первую очередь.
    По запросам смотрите pg_stat_statements
    Ответ написан
    3 комментария
  • Генерация случайной уникальной последовательности чисел?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    А что, в go нет вызова для CSPRNG?

    https://golang.org/pkg/crypto/rand/#Int
    1e13 + случайное число от 0 до 1e14
    Ответ написан
    Комментировать
  • Как удалить файл с кириллическим символом из коммита?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    git rm - это про файл уже зафиксированного в истории коммита.
    Сбросить ошибочно добавленный файл в отслеживание после git add можно через git reset HEAD filename
    (и мне так помнится, подсказки об этом есть даже в самом git status)
    Ответ написан
  • Как узнать, какие модули памяти сбоят (в каких слотах материнской платы они находятся)?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Раскурить спецификации на контроллер памяти и разводку материнской платы.
    Если верить самоидентификации ядром - сбоят первые модули на 1 и 3 каналах первого сокета.
    Ответ написан
    2 комментария
  • Почему разные сервисы накрутки, автоматизации и щёлкания не закрывают тут же?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    а) никто из них не прячется? А работают так, как будет накрутка и щёлкание -- это в порядке вещей?

    А зачем им прятаться? Ничего противозаконного не делают.
    Нарушение правил использования сервиса - это не противозаконное деяние, а всего лишь нарушение правил сервиса. И именно этот сервис может по своему усмотрению как-то бороться. Если захочет.

    б) почему некоторые всё-таки закрываются?

    Например клиентов стало меньше доходности этого сервиса. Что там с инстаграмом - не имею представлений.

    в) принимаю оплату через, например, яндекс деньги. Разве для Яндекс Денег приём оплаты от таких сервисов - законен?

    Да, законен.

    Получается **все** из них работают просто пока работается

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

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Передайте pg_class.oid и всё.
    pg_size_pretty(pg_table_size(с.oid)) AS size,
    pg_size_pretty(pg_indexes_size(с.oid)) AS idxsize,
    pg_size_pretty(pg_total_relation_size(с.oid)) as "total"


    Если загляните в определение pg_tables - то увидите, что это view от pg_class с фильтром relkind = 'r'. То есть объединение с pg_tables довольно лишнее.
    Ответ написан
    Комментировать
  • Чем править базу данных?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Судя по расширениям - это куски mysql.
    Только запросами к запущенному серверу mysql и взаимодействовать. Клиент выберите любой, их много
    Ответ написан
    9 комментариев
  • Как получить конечный(финальный, последний) http статус через cURL если стоит редирект?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    То есть первый заголовок всегда выдаёт статус 200, а конечный после редиректа

    200 OK не может быть редиректом по HTTP стандартам.
    Если редирект осуществляется чем-то ещё, то это не задача curl
    Ответ написан
  • Как проверить используется ли модуль passwordcheck без попытки создания пользователя?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Настроек у него никаких, поэтому достаточно проверить, что он загружен, т.е. упомянут в
    show shared_preload_libraries;
    Ответ написан
    Комментировать