Задать вопрос
  • Как отследить почему падает MySQL too many connections?

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

    Для mysql коннекты не такие тяжёлые относительно того же postgresql и max_connections вполне можно увеличивать.
    Какие коннекты открыты и откуда можно посмотреть в show processlist
    Ответ написан
    2 комментария
  • Почему не выводит строки при корректном запросе postgre?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    А с кавычками выводит "ничего" т.е. ноль полей.

    С какими именно?

    user='40'
    'user'='40'
    "user"='40'

    Это три абсолютно различных условия, выполняющих совершенно разные вещи.

    user - зарезервированное слово по требованию стандарта. По стандарту не уверен что обозначает в контексте where, надо искать (может как часть create user и подобных только зарезервирован), а в postgresql обозначает имя текущего пользователя. Имеет тип name, что и провоцирует ошибку.
    Т.е. первое условие в принципе не имеет никакого отношения к каким-либо пользовательским таблицам.

    'user' - просто текстовая константа. Никто не мешает в условии сравнивать одну константу с другой, where 1=1 в некоторых query builder отсюда же.

    "user" - обращение к объекту, игнорируя зарезервированные слова. То есть если у вас в таблице proxy есть поле user - то запрос должен быть записан как
    select * from proxy where "user"='40'

    Но общая практика - лучше не надо использовать зарезервированные слова в качестве идентификаторов.
    Ответ написан
    1 комментарий
  • Как обновляют структуру БД и данные на продакшене?

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

    Начать необходимо вот отсюда: https://habrahabr.ru/post/146901/
    И, собственно, придти к выводу, что лучше оставить как есть в одном поле. Если в каких-то местах нужны другие формы обращений - прописать их явно, а не конструируя по имеющимся заблуждениям о фио.

    А так:
    0) делается дополнительный бекап
    1) выкатывается alter table добавляющий новый поля
    2) выкатывается приложение, умеющее писать синхронно старую и новую структуру, но читающее только старую
    3) отдельным процессом в цикле небольшими частями преобразуются данные - это если подлежит автоматической обработке
    4) выкатывается приложение использующее только новую структуру
    5) архивируется и удаляется исходная структура

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

    Если тривиальной автоматике обработка не подлежит, то часто вместо 3 пункта делают выгрузку primary key, source_data, как-нибудь изменяют и готовят csv primary key, source_data, new_data, копируют в temporary table, затем делают слияние мультитабличным update этих двух таблиц с recheck'ом по source_data. Затем выгружают данные для которых не было обновления, разбираются, ещё раз обновляют и т.д. до заполнения всего.
    Ответ написан
    2 комментария
  • Какую выставить частоту оперативной памяти?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    CPU-z на вкладке SPD пишет то, что в SPD модуля, а не текущее состояние. Текущее состояние - в memory. А в Max Bandwidth указан максимальный стандартный по JEDEC режим.

    что будет если вставить в сокет К процессор

    Ничего не изменится.

    поэтому интресует вопрос будет с таким процессором память работать на 2400

    Будут, оба процессора.
    XMP профили - интела разработка и есть. В спецификациях интел давно уже занижает режимы памяти относительно поддерживаемых делителей частоты памяти. Де юре - разгон, де факто - автоматическая настройка. Лет 10+ назад попадалась память с отдельной инструкцией мол заявленный режим работы памяти протестирован, но настроить вы его должны сами в BIOS.

    И какую частоту выставить на данный момент? 1600 или 2400?

    Какую хотите.
    Ответ написан
    4 комментария
  • Почему strip_tags обрезает такую строку?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Неужели он не может отличить это <-+KennY+-> от html тега?

    Даже не пытается. Простой state machine

    А зачем вам strip_tags вообще понадобился? Ломать пользовательский ввод вы не должны, вы должны его правильно отобразить. Т.е. делать htmlspecialchars при выводе в html.
    Ответ написан
    Комментировать
  • Почему триггер mysql не создается?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Потому что здесь вы, наоборот, не изменили delimiter команд, что требуется сделать.
    Такой вот дурацкий синтаксис mysql, парсеру надо специально объяснять, где заканчивается триггер (или хранимая процедура).
    Ответ написан
    Комментировать
  • Как победить NULL при составлении запроса в БД?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Соответственно придумайте, как корректно представить NULL в values именно NULL'ом. От такого использования функции join очевидно придётся отказаться.

    А лучше не извращайтесь, и используйте pdo prepared statements, который null передавать умеет штатно.
    Ответ написан
    Комментировать
  • MYSQL не выполняет команды, а просто переводит строчки \C - не помoгает?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Судя по поведению, ранее (либо где-то в конфигах) вы заменили delimiter команд.
    use databasename не требует указания delimiter, потому в первый раз сработал.

    Сброс буфера ввода - \c (кроме как внутри кавычек - сначала закрыть кавычки). Либо ctrl+C, но зависит от того как клиент mysql собран.
    Замена разделителя команд - \d новый_разделитель либо delimiter новый_разделитель
    mysql> \d $$
    mysql> use test2
    ERROR 1049 (42000): Unknown database 'test2'
    mysql> show tables;
        -> wtf?
        -> \c
    mysql> \d ;
    mysql> show tables;
    +----------------------------------+
    | Tables_in_test                   |
    +----------------------------------+


    Для выхода из большинства интерактивный текстовых приложений чаще используется ctrl+D, отправляющий EOF.
    Ответ написан
    Комментировать
  • Как ограничить Rows_examined в MYSQL с помощью LIMIT?

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

    А не читать всё, когда есть limit - умеет даже mysql.
    Ответ написан
    Комментировать
  • Почему разные сервисы показывают разное местоположение по IP?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Связано с тем, что в принципе ip адресация не имеет ничего общего с местоположением по глобусу.
    geoip выкручиваются полагая, что блоки ip адресов обычно никуда внезапно не переезжают и создают таблицу соответствия, какие ip где наверное располагаются физически. Иногда угадывают, иногда нет. Соответственно вы видите банально разные базы geoip (или даже разные версии одной и той же базы)
    Ответ написан
    3 комментария
  • Как избавиться от блокировок при обслуживание партиций внешней таблицы в БД PostgreSQL?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    vacuum full и reindex требуют тяжёлую блокировку и держать блокировку будут долго. Поэтому обычно их избегают.
    drop разумеется тоже требует эксклюзивную блокировку, но на короткое время. Важно понимать скользкую ситуацию - если вы пытаетесь взять эксклюзивную блокировку, но не можете её получить из-за других выполняемых транзакций - вы будете ждать окончания этих мешающих транзакций, но уже будете блокировать работу последующих транзакций.

    Если вы считаете, что много места пропало впустую - то это можно посчитать (поставив contrib расширение pgstattuple) вот этими нашими запросами: для таблиц и для индексов
    Если да, проблема с местом в этом - то вам помогут pgcompacttable или pg_repack

    Если данные по большей части архивные - имеет смысл заменить btree индексы на brin. Они медленнее, но очень сильно компактнее по диску.

    А отцеплять партиции - посмотреть в pg_stat_activity что вообще происходит, нет ли аномально длинных транзакций или idle in transaction (т.е. затупов на приложении). Затем с statement_timeout и lock_timeout в 1 секунду (или меньше даже) пробовать отцепить пока не получится.
    Ответ написан
    4 комментария
  • Есть ли возможность восстановить данные базы postgree?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    У postgresql есть всего одна директория - data_directory (aka PGDATA). Для работы необходима консистентная копия всей директории целиком, включая содержимое по всем симлинкам.

    Можете поковырять pg_filedump, но лучше достаньте бекап.
    Ответ написан
    2 комментария
  • Как будет работать 4pin-вентилятор в 3pin материнской плате? На максимальных оборотах?

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

    pwm управление - именно управление, а не DC/DC преобразователь чтобы на пониженном напряжении брать больше тока и крутиться на номинальных оборотах.

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

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Значит подключаетесь вы именно через ipv6.
    На локалхосте обычно unixsock используют вообще, а не tcp loopback.

    Но вообще вполне обычная практика предпочитать ipv6, если приложение не указывало протокол явно, а адреса хоста известны и для v6 и для v4. У вас ведь наверняка в /etc/hosts для localhost указаны оба адреса.
    Ответ написан
    3 комментария
  • Что будет если поставить оперативную память с частотой выше чем указано на процессоре?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Варианты:
    или согласуют поддерживаемый всеми участниками режим по SPD или XMP и система будет работать на этих настройках
    или не согласуют и система не запустится
    Ответ написан
    7 комментариев
  • Как избежать увеличения автоинкремента при неуспешном запросе?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Никак.
    Сиквент гарантированно уникальный и не транзакционный. Ничего о последовательности выдачи значений и уж тем более без пропусков он не говорит.
    Ответ написан
    Комментировать
  • Как проверить соедиенение с redis с паролем из php?

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

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Собственно есть отдельная страница мануала
    Ответ написан
    Комментировать
  • Как подключить один диск по iSCSI к двум виртуальным серверам?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    iSCSI - блочный уровень.
    Если поверх него разместить ФС которая предполагает работу только на одном хосте - она и будет работать только на одном хосте от mount до umount. И попытки грубо вмешаться в её работу на другом хосте ни к чему кроме гарантированного повреждения данных не приведут.

    Вам нужна какая-нибудь сетевая ФС. NFS, например
    Ответ написан
    1 комментарий