Рубрика «mysql» - 4
Загадочная ситуация с TIME в MySQL
2020-11-06 в 6:56, admin, рубрики: mysql, open source, Блог компании ФлантПрим. перев.: Этот детальный анализ одной, казалось бы, не очень значительной детали в реализации внутри MySQL вызвал закономерные дискуссии о правильности в подходах к разработке известного Open Source-проекта в целом. О том, что же, собственно, выяснил португальский инженер, он повествует в формате, приближенном к детективу…
Многие в 2020 году стали жертвой странного феномена восприятия времени, но некоторые системы управления базами данных манипулируют временем гораздо дольше. Впервые я обратил на это внимание, когда мой друг в одном из своих проектов (Accord — популярный бот для Discord) столкнулся со следующим исключением от коннектора MySQL при использовании с EF Core:
MySqlException: Incorrect TIME value: '960:00:00.000000'
Будучи не слишком сведущим в MySQL (т.к. предпочитаю PostgreSQL по причинам, которые скоро станут очевидными), я на секунду подумал, что неправильным здесь является число часов. Разумно предположить, что значения TIME ограничены 24 часами или что для значений, охватывающих нескольких дней, требуется другой синтаксис — например, 40:00:00:00
будет представлять 40 дней. Но действительность оказалась куда сложнее и запутаннее.Читать полностью »
Восемь интересных возможностей PostgreSQL, о которых вы, возможно, не знали
2020-10-13 в 16:00, admin, рубрики: Booleans can stand alone, Comparing a selection of columns, Convert column data types for free, Custom config parameters, Hardcoded tables, mysql, postgresql, sql, Tables are types, Whole-row references, Администрирование баз данных, Блог компании OTUS. Онлайн-образованиеПривет! Приглашаем на бесплатный Demo-урок «Параллельный кластер CockroachDB», который пройдёт в рамках курса «PostgreSQL». Также публикуем перевод статьи Тома Брауна — Principal Systems Engineer at EnterpriseDB.
В этой статье рассмотрим несколько полезных советов по работе с PostgreSQL:
-
Ссылка на всю строку целиком
-
Сравнение нескольких столбцов
-
Общие табличные выражения
-
Пользовательские параметры конфигурации
-
Сравнение логических значений без "равно"
-
Изменение типа столбца без лишних затрат
Пишем простую ORM с возможностью смены БД на лету
2020-08-23 в 16:18, admin, рубрики: amphp, madelineproto, mysql, orm, php, оптимизация, память процесса, параллельное программирование, паттерны программирования, Проектирование и рефакторинг, Серверная оптимизацияПривет! Карма слита из-за неосторожного комента под холиварной статьей, а значит нужно написать интересный (я надеюсь) пост и реабилитироваться.
Я несколько лет пользуюсь серверным telegram клиентом на php. И как многие пользователи — устал от постоянного роста потребления памяти. Некоторые сессии могут занимать от 1 до 8 гигабайт RAM! Поддержка баз данных была уже давно обещана, но подвижек в этом направлении не было. Пришлось решать проблему самому :) Популярность open source проекта, накладывала интересные требования на pull request:
- Обратная совместимость. Все существующие сессии должны продолжить работать в новой версии (сессия — это сериализованный инстанс приложения в файле);
- Свобода выбора БД. Возможность менять тип хранилища без потери данных и в любой момент, так как у пользователей разные конфигурации окружения;
- Расширяемость. Простота добавления новых типов баз данных;
- Сохранить интерфейс. Код приложения, работающий с данными, не должен меняться;
- Асинхронность. Проект использует amphp, поэтому все операции с базами должны быть неблокирующими;
За подробностями приглашаю всех под кат.
Читать полностью »
Как мигрировать Zabbix с MySQL на PostgreSQL с минимальным downtime
2020-08-02 в 10:09, admin, рубрики: mysql, postgresql, zabbix, системное администрированиеВ свете того, что Zabbix с некоторых пор поддерживает TimescaleDB, а тут еще и вышел новый LTS релиз Zabbix, то наверняка многие заинтересовались, как осуществить миграцию с MySQL на PostgreSQL.
Несмотря на текст на картинке, вполне можно просто так взять и мигрировать Zabbix с MySQL на PostgreSQL. В интернете есть немало рецептов такой миграции, например:
Доклад с Zabbix Meetup
Видео с Youtube канала Dmitry Lambert
Но я не нашел ни в одном из таких докладов информации, как же минимизировать downtime вашего мониторинга в случае, если полная миграция занимает несколько часов, что конечно зачастую является неприемлемым.
Ниже я опишу свое решение данной проблемы и те подводные камни, которые пришлось обходить по пути.
Важно упомянуть, что я до сих использую Zabbix 4.0. Возможно, в новых версиях схема БД поменялась и поэтапная миграция, описанная ниже, там невозможна.
Применение оконных функций и CTE в MySQL 8.0 для реализации накопительного итога без хаков
2020-07-24 в 6:21, admin, рубрики: cte, mysql, mysql 8, sql, window functions, Блог компании Флант, накопительный итогПрим. перев.: в этой статье тимлид британской компании Ticketsolve делится решением своей весьма специфичной проблемы, демонстрируя при этом общие подходы к созданию так называемых accumulating (накопительных) функций с помощью современных возможностей MySQL 8.0. Его листинги наглядны и снабжены подробными объяснениями, что помогает вникнуть в суть проблематики даже тем, кто не погружался в неё столь глубоко.
Обычная стратегия для выполнения обновлений с использованием накопительных функций в MySQL — применение пользовательских переменных и паттерна UPDATE [...] SET mycol = (@myvar := EXPRESSION(@myvar, mycol))
.
Этот паттерн плохо работает с оптимизатором (приводя к недетерминированному поведению), поэтому от него решили отказаться. В результате возникла некая пустота, поскольку (относительно) комплексную логику теперь сложнее реализовать (по крайней мере, с той же простотой).
В статье пойдет речь о двух способах ее реализации: с использованием оконных функций (канонический подход) и с помощью рекурсивных СТЕ (общих табличных выражений).Читать полностью »
Сводные таблицы в SQL
2020-06-28 в 6:33, admin, рубрики: mysql, oracle database, pivot tables, Pivoting, posgresql, rows to columns, sql, sql server, tricks, сводные таблицыСводная таблица – один из самых базовых видов аналитики. Многие считают, что создать её средствами SQL невозможно. Конечно же, это не так.
Читать полностью »
Orchestrator для MySQL: почему без него нельзя строить отказоустойчивый проект
2020-05-18 в 7:08, admin, рубрики: mysql, Orchestrator, Блог компании Ситимобил, системное администрированиеЛюбой крупный проект начинался с пары серверов. Cначала был один DB-сервер, потом к нему добавились слейвы, чтобы масштабировать чтение. И тут — стоп! Мастер один, а слейвов много; если уйдет один из слейвов, то всё будет хорошо, а если уйдет мастер — будет плохо: даунтайм, админы в мыле поднимают сервер. Что делать? Резервировать мастер. Мой коллега Павел уже писал об этом статью, я не буду ее повторять. Вместо этого расскажу, почему вам обязательно нужен Orchestrator для MySQL!
Читать полностью »
Обновление MySQL (Percona Server) с 5.7 до 8.0
2020-05-07 в 11:27, admin, рубрики: mysql, percona server, percona toolkit, Администрирование баз данных, Блог компании Флант, системное администрированиеПрогресс не стоит на месте, поэтому причины обновиться на актуальные версии MySQL становятся всё более весомыми. Не так давно в одном из наших проектов настало время обновлять уютные кластеры Percona Server 5.7 до 8-й версии. Всё это происходило на платформе Ubuntu Linux 16.04. Как выполнить подобную операцию с минимальным простоем и с какими проблемами мы столкнулись при обновлении — читайте в этой статье.Читать полностью »
Экспорт плана нумерации Федерального Агентства Связи в реляционную БД
2020-04-26 в 11:50, admin, рубрики: asterisk, dialplan, Go, mysqlФедеральное Агентство Связи регулярно обновляет размещённый в открытом доступе план нумерации. Если вы используете этот план для определения региона или провайдера абонента в своём диалплане, то скорее всего заинтересованы в актуальности этой информации. На первый взгляд нет ничего сложного в том, чтобы написать приложение, которое загрузит, обработает и отправит данные в БД, однако приступив к реализации, вы неизбежно наткнётесь на подводные камни, о которых я сейчас расскажу.
Читать полностью »