Обновить
34.83

MySQL *

Свободная реляционная СУБД

Сначала показывать
Порог рейтинга
Уровень сложности

Zabbix – миграция с MySQL на PostgreSQL

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели6.1K

Всем привет! Мы делаем проекты по Zabbix, накопили большую экспертизу и решили сделать переводы нескольких статей, которые нам показались интересными и полезными. Наверняка, будут полезны и вам. Также своим опытом делимся в телеграм-канале zabbix_ru, где вы можете найти полезные материалы и записи наших вебинаров, опубликованных на нашем ютуб-канале (прим. переводчика).

В этой статье мы покажем вам, как перенести базу данных Zabbix из MySQL в PostgreSQL на Rocky Linux 9. Заодно покажем, как включить TimescaleDB, а также выполним некоторые базовые настройки производительности.

В статье предполагается, что если доступны необязательные патчи (ключи с плавающей точкой и первичные ключи ), то они уже применены к базе данных.
Если вы в этом не уверены, информация об этом статусе также отображается во фронтенде в разделе System information, например, «Database history tables upgraded: No».

Мы заранее предупреждаем вас, что вы осуществляете миграцию на свой страх и риск, и мы не несем ответственности за любой ущерб, вызванный непрофессиональным вмешательством.

Читать далее

Новости

Транзакции в InnoDB: разбираемся с уровнями изоляции и блокировками

Время на прочтение8 мин
Охват и читатели5.6K

Чтобы транзакции в InnoDB работали предсказуемо, важно понимать внутреннюю логику InnoDB. Ошибки чаще всего возникают не из-за отсутствия транзакций, а из-за неверных ожиданий относительно уровней изоляции и работы блокировок.

В этой статье давайте разберём несколько распространенных заблуждений и на примерах посмотрим, как на самом деле работают транзакции.

Читать далее

Обзор Moco — MySQL-оператора для Kubernetes

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели5.5K

В Kubernetes короткий жизненный цикл подов — норма. Но когда лидер-узел MySQL внезапно исчезает, рискуешь потерять не только доступность, но и согласованность данных. Оператор Moco предлагает решение: полусинхронная репликация, автоматический failover и восстановление с PITR — всё это без боли миграции на полностью синхронную репликацию.

В статье — детали репликации, бэкапов, PITR, switchover и нюансов работы с пользовательскими образами. А также честно — чем он лучше (и хуже) альтернатив, и стоит ли его рассматривать для продакшена.

Читать далее

JOIN vs. Коррелированный подзапрос: Разрушаем миф о «N+1» на 4 СУБД

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели13K

JOIN vs коррелированный подзапрос: мой разбор мифа «JOIN всегда быстрее»

Я проверил оба подхода (JOIN + GROUP BY и коррелированный подзапрос) на маленьком датасете и в ряде СУБД. Иногда подзапрос быстрее. Всё зависит от плана (Nested Loop vs Hash) и индексов. Слепо верить «JOIN всегда быстрее» не стоит. Смотрите EXPLAIN.

Читать далее

Рейтинг контента и пользователей на основе офелократии. Часть 2. Реализация на SQL

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели11K

Первая часть статьи

В первой части мы обсудили философские основы и принципы работы рейтинговой системы, где у каждого человека разная сила голоса, отражающая его полезность для конкретного сайта (офелократия). Теперь перейдём к техническим деталям реализации на MySQL.

Читать далее

Как я создаю idle-игру «Империя Кузбасс» для Telegram, VK и браузера

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели10K

Моя история разработки инкрементальной игры о горнодобывающей промышленности Кузбасса с подробным разбором технической архитектуры, системы безопасности и монетизации.

Игра на 80% сделана с помощью вайб кодинга, но это не так просто как звучит.

Читать далее

PHP-веб-панель для Amnezia VPN: ускоряем корпоративную автоматизацию

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели16K

Под катом расскажу, как реализовал свою web-панель для управления Amnezia AWG (WireGuard) VPN на Ubuntu 22–24. Почему не хватило официального приложения, какие задачи решил с помощью простого PHP-интерфейса и чем это может быть полезно другим компаниям или разработчикам. Код и инструкции — в открытом доступе.

Проект на GitHub: amneziavpnphp

Читать далее

Сравнительный анализ эффективности планировщиков СУБД при выполнении различных запросов

Уровень сложностиСредний
Время на прочтение34 мин
Охват и читатели13K

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

Читать далее

Как я собрал AI-ассистента для отца с больным сердцем: Tool-Calling RAG Pipeline на GPT-4o-mini без LangChain

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели8K

Мой отец — человек, переживший несколько сложнейших операций на сердце. Жизнь с хроническим заболеванием — это бесконечный поток анализов, заключений и схем приёма лекарств. Находясь далеко (я живу во Вьетнаме), я постоянно волновался: не забудет ли он про дозу, правильно ли понял назначение, задал ли все нужные вопросы врачу?

Мне нужен был не просто бот-напоминалка, а второй пилот — умный, конфиденциальный и мультимодальный AI-Кардиолог. Ассистент, который знает его анамнез наизусть, понимает голосовые команды и может «прочитать» фотографию свежего анализа.

Я решил собрать полноценный автономный агент с возможностью вызова внешних инструментов (Tool‑Calling) и локальной базой знаний (RAG), но без использования громоздких фреймворков вроде LangChain или LlamaIndex.

Читать далее

Уровни изоляции транзакций: практическая механика и сравнение PostgreSQL, MySQL, Oracle, SQL Server и DB2

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели9.2K

Транзакции — не про «магическое ACID», а про конкретную механику согласованного доступа к данным под нагрузкой.

Эта статья объясняет как реально работают уровни изоляции и чем отличаются популярные СУБД на практике.

Мы разберём:

Читать далее

Как я в одиночку спроектировал API-шлюз на FastAPI, который держит 200к+ запросов в сутки

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели20K

Привет, Хабр!

я Python-инженер. Последние несколько лет я в одиночку строил довольно сложную бэкенд-систему, и за это время набил немало шишек и нашел, как мне кажется, несколько интересных решений. В этой статье я хочу поделиться не "историей успеха", а конкретными архитектурными проблемами и их решениями при построении высокопроизводительного сервиса на асинхронном Python.

Статья будет полезна тем, кто работает с FastAPI, микросервисами и думает о надежности и масштабируемости своих систем.

Читать далее

Как сбросить пароль для MySQL в 2025м году

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели8.1K

Статья, которой по идее вообще не суждено было появиться на свет и которая ярко иллюстрирует разницу между теорией и практикой.

Читать далее

Альтернатива чатам с ИИ для анализа и оптимизации SQL запросов. Часть 2

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели9.2K

Месяц назад я опубликовал пост об инструменте для автоматической оптимизации SQL-запросов. Идея была простая — убрать этап «общения» с ИИ и предоставить простой интерфейс, где не нужно придумывать промпты.

За первый месяц сервис использовали более 1000 человек. Ниже — выводы и результаты.

Читать далее

Ближайшие события

Resource Groups в MySQL

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели6.3K

Привет, Хабр!

Сегодня мы рассмотрим Resource Groups в MySQL — и перестанем жить на одной CPU.

Resource Groups — это контроль над CPU прямо из SQL. Вы создаёте логическую группу, говорите «эта группа может использовать только 2 CPU и работать на низком приоритете», и назначаете туда тяжелые, но второстепенные задачи. Всё. Дальше MySQL сам всё регулирует.

Читать далее

Альтернатива чатам с ИИ для анализа и оптимизации SQL запросов

Уровень сложностиСредний
Время на прочтение1 мин
Охват и читатели5K

Всем привет!

Экспериментировал с оптимизацией SQL запросов в ChatGPT и Claude. В какой-то момент понял, что это превращается в одно и то же: Напиши промт → вставь SQL → подожди → поправь → повтори

Читать далее

SSIS в Visual Studio: как мы перешли от хаоса к стабильному ETL-процессу

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели1.6K

Можно ли хранить данные, строить по ним отчетность, при этом обходясь без ETL процессов? Технически — да. Практически — только до первого серьезного роста данных.

Привет, Хабр! Меня зовут Алина, и в этой статье я расскажу о критически важном этапе, через который проходит любая data-driven компания.

Речь о переходе:
от построения отчетности напрямую из операционных баз (или через примитивное копирование в STG)
к структурированным ETL-процессам на специализированном ПО.

В нашем случае этим ПО стал SSIS — но важно подчеркнуть: сейчас мы используем NiFi с [N] процессорами для управления data pipeline. Однако именно опыт с SSIS стал для нас тем самым «мостиком» между хаотичным и осознанным подходом к данным.

P.S. Если хотите узнать про то, как мы организовали работу в NiFi — пишите в комментах, сделаем отдельный материал!

В этой статье — только про этап с SSIS. Не потому что он «лучший», а потому что:

Читать далее

Как заставить вашу базу данных летать, а не ползать. Часть 3 – ещё три способа шардирования

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели7K

Всем привет! И снова с вами Илья Криволапов – системный аналитик в SENSE, где мы вместе с командой трудимся над проектом одного из цветных банков РФ. Напоминаю, что в профессии я уже больше пяти лет и, несмотря на фамилию, прод все еще живой и здоровый (ну почти)!

В свободное от работы время, я преподаю курс «Хранение и обработка больших объемов данных», где успел накопить немало наблюдений, кейсов и выводов, которые не хочется держать в столе. Поэтому всё самое полезное оформил в цикл статей на Хабре – рассказываю как строить базы данных с прицелом на рост и не сойти с ума под нагрузкой.

В первой части мы говорили о базовых стратегиях масштабирования: вертикальной и горизонтальной. Покрутили в руках репликацию, рассмотрели кейсы, когда и как можно к ней обращаться. Во второй углубились в шардинг и разобрали три популярных подхода: по диапазону, хэшу и геозонам. А сегодня будет финальная, третья часть. В ней мы рассмотрим ещё три способа шардирования: директивный, круговой и динамический. Расскажу, как они устроены, когда применяются, в чём их сильные стороны и где скрывается подвох.

Материал будет полезен всем, кто проектирует, масштабирует или просто поддерживает «здоровье» базы данных: DBA, архитекторам, DevOps-инженерам, аналитикам и разработчикам.

Финальный рывок – поехали!

Читать далее

Плохие JOIN’ы: приемы, которые (нечаянно) кладут прод

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели19K

Привет, Хабр!

В этой статье разбираем один из самых коварных способов убить базу — плохие JOIN'ы. Казалось бы, простое дело: связать пару таблиц — и вперёд. Но если в ON засунуть LOWER(email), забыть про индексы или перепутать LEFT JOIN с INNER — сервер мигом начнет дышать на ладан.

Читать далее

Как заставить вашу базу данных летать, а не ползать. Часть 2 – когда репликации недостаточно и пора использовать шардинг

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели4.9K

Всем привет! На связи снова Илья Криволапов — системный аналитик в SENSE, где мы трудимся на проекте одного из цветных банков РФ. Работаю в профессии уже пятый год и, несмотря на мою фамилию, с продом у нас в целом тёплые отношения. 

Помимо боевых задач, я преподаю курс «Хранение и обработка больших объемов данных» и за это время накопил немало практических кейсов и наблюдений. Всё это добро я решил не держать при себе и собрал самое полезное в виде ультимативного гайда по оптимизации и грамотному проектированию баз данных с расчетом на масштабирование, который сейчас публикую на Хабре.

Цикл состоит из 3 частей. В первой мы обсудили два базовых подхода к масштабированию БД: вертикальный и горизонтальный. Поговорили о плюсах, минусах и о том, как делать точно не стоит. 

Во второй части – то есть сейчас – мы нырнём глубже в мир горизонтального масштабирования и разберем три первых способа шардирования: по диапазону, по хэшу и по географическим зонам. Я расскажу, как каждый из них работает, где пригодится и в каких случаях может дать сбой.

Материал по-прежнему будет полезен всем, кто заботится о «здоровье» базы данных: DBA, архитекторам, DevOps-инженерам, аналитикам и разработчикам.

Готовы продолжать? Тогда поехали!

Читать далее

Как мы внедряли мультирегиональность на OpenPets: опыт разработки цифровой экосистемы для владельцев животных

Время на прочтение2 мин
Охват и читатели469

Мы реализовали мультирегиональность на eCommerce-платформе OpenPets с помощью поддоменов, геолокации по IP, MODX и интеграции с CRM. Делимся архитектурой, кодом, решениями и подводными камнями.

Читать далее
1
23 ...

Вклад авторов