PostgreSQL 18: быстрее, умнее, нагляднее
Каждый новый релиз PostgreSQL — это событие, но 18-я версия выглядит особенно интересно, предлагая фундаментальные улучшения в производительности, значительные удобства для разработчиков и долгожданные доработки в обслуживании и мониторинге.
https://habr.com/ru/companies/postgrespro/articles/952514/
Мы в MAX
#db
👉 @database_info
Каждый новый релиз PostgreSQL — это событие, но 18-я версия выглядит особенно интересно, предлагая фундаментальные улучшения в производительности, значительные удобства для разработчиков и долгожданные доработки в обслуживании и мониторинге.
https://habr.com/ru/companies/postgrespro/articles/952514/
Мы в MAX
#db
👉 @database_info
👍7
Шардирование базы данных на пальцах
Популярные приложения рано или поздно должны масштабироваться для ускорения доступа к данным и увеличения трафика. Чтобы распределить данные на несколько серверов и обеспечить им безопасность и целостность, нужна база данных с соответствующей архитектурой — шардированная база данных.
Шардирование (шардинг) базы данных — это деление данных на разные фрагменты с целью повышения производительности и надежности. Иногда это понятие путают с репликацией и партицированием, но на самом деле это разные направления масштабирования, которые могут быть реализованы в пределах одной базы данных.
Существует два вида шардирования:
▪Вертикальное (по столбцам): каждый шард содержит часть столбцов массива и все связанные с ними строки данных.
▪Горизонтальное (по каким-либо критериям строки): каждый шард содержит одинаковые столбцы, но разные строки данных.
https://architecturenotes.co/database-sharding-explained/
Мы в MAX
#db
👉 @database_info
Популярные приложения рано или поздно должны масштабироваться для ускорения доступа к данным и увеличения трафика. Чтобы распределить данные на несколько серверов и обеспечить им безопасность и целостность, нужна база данных с соответствующей архитектурой — шардированная база данных.
Шардирование (шардинг) базы данных — это деление данных на разные фрагменты с целью повышения производительности и надежности. Иногда это понятие путают с репликацией и партицированием, но на самом деле это разные направления масштабирования, которые могут быть реализованы в пределах одной базы данных.
Существует два вида шардирования:
▪Вертикальное (по столбцам): каждый шард содержит часть столбцов массива и все связанные с ними строки данных.
▪Горизонтальное (по каким-либо критериям строки): каждый шард содержит одинаковые столбцы, но разные строки данных.
https://architecturenotes.co/database-sharding-explained/
Мы в MAX
#db
👉 @database_info
👍8
Хранилища данных
Транзакции | Введение | ACID | CAP | Обработка ошибок
Аномалии параллельных транзакций
Индексы SQL
Подготовка к собесу - Классификация баз данных
Подготовка к собесу - Оптимизация запросов
Подготовка к собесу - Подзапросы SQL и оптимизация
Подготовка к собесу - Индексы и партиции SQL
источник
Мы в MAX
#db
👉 @database_info
Транзакции | Введение | ACID | CAP | Обработка ошибок
Аномалии параллельных транзакций
Индексы SQL
Подготовка к собесу - Классификация баз данных
Подготовка к собесу - Оптимизация запросов
Подготовка к собесу - Подзапросы SQL и оптимизация
Подготовка к собесу - Индексы и партиции SQL
источник
Мы в MAX
#db
👉 @database_info
👍7❤2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Как лучше всего изучать язык SQL?
В 1986 году язык SQL (Structured Query Language) стал стандартом. В течение последующих 40 лет он стал доминирующим языком для систем управления реляционными базами данных. Чтение последнего стандарта (ANSI SQL 2016) может занять много времени. Как я могу его выучить?
В состав языка SQL входят 5 компонентов:
Для бэкенд-инженера может потребоваться знание большинства из них. Аналитику данных может потребоваться хорошее понимание DQL. Выберите те темы, которые наиболее актуальны для вас.
Мы в MAX
#db
👉 @database_info
В 1986 году язык SQL (Structured Query Language) стал стандартом. В течение последующих 40 лет он стал доминирующим языком для систем управления реляционными базами данных. Чтение последнего стандарта (ANSI SQL 2016) может занять много времени. Как я могу его выучить?
В состав языка SQL входят 5 компонентов:
- DDL: data definition language, such as CREATE, ALTER, DROP- DQL: data query language, such as SELECT- DML: data manipulation language, such as INSERT, UPDATE, DELETE- DCL: data control language, such as GRANT, REVOKE- TCL: transaction control language, such as COMMIT, ROLLBACKДля бэкенд-инженера может потребоваться знание большинства из них. Аналитику данных может потребоваться хорошее понимание DQL. Выберите те темы, которые наиболее актуальны для вас.
Мы в MAX
#db
👉 @database_info
🔥8👍1
Безумные и забавные факты о SQLite
⚫️ SQLite — самая часто разворачиваемая и используемая база данных. На текущий момент активно используется более одного триллиона (1000000000000 или миллиона миллионов) баз данных SQLite.
⚫️ Её поддерживают три человека. Они не допускают внешних контрибьюторов.
Скорее всего, SQLite используется больше, чем все остальные движки баз данных суммарно. В мире работают миллиарды копий SQLite. Её можно встретить повсюду.
https://habr.com/ru/companies/ruvds/articles/873816/
Мы в MAX
#db
👉 @database_info
Скорее всего, SQLite используется больше, чем все остальные движки баз данных суммарно. В мире работают миллиарды копий SQLite. Её можно встретить повсюду.
https://habr.com/ru/companies/ruvds/articles/873816/
Мы в MAX
#db
👉 @database_info
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍9
База данных PostgreSQL
Часть 1. Установка и настройка
Часть 2. Язык запросов SQL
Часть 3. Реляционная модель
Часть 4. Поиск и анализ данных
Часть 5. Индексы
источник
Мы в MAX
#db
👉 @database_info
Часть 1. Установка и настройка
Часть 2. Язык запросов SQL
Часть 3. Реляционная модель
Часть 4. Поиск и анализ данных
Часть 5. Индексы
источник
Мы в MAX
#db
👉 @database_info
1👍5❤3🔥2
Media is too big
VIEW IN TELEGRAM
NoSQL для начинающих на примере MongoDB
00:00 - Что такое NoSQL и где он применяется?
04:18 - Основные виды NoSQL
06:04 - Дополнительные темы
09:31 - SQL vs NoSQL
11:53 - Немного о MongoDB
14:37 - Практика. Моделирование структуры. Работа с shell и Compass
Мы в MAX
#db
👉 @database_info
00:00 - Что такое NoSQL и где он применяется?
04:18 - Основные виды NoSQL
06:04 - Дополнительные темы
09:31 - SQL vs NoSQL
11:53 - Немного о MongoDB
14:37 - Практика. Моделирование структуры. Работа с shell и Compass
Мы в MAX
#db
👉 @database_info
1👍3❤1
Храните данные ближе к клиентам 📩
Разверните файловые хранилища, медиасерверы, большие архивы данных и системы аналитики на сервере-хранилище от Selectel в Новосибирске.
Отличное решение, если:
📍вы работаете с проектами из Сибири и с Дальнего Востока,
📍вам важна географическая распределенность.
Закажите сервер SL108R в Selectel и храните данные там, где удобно:
https://slc.tl/y00o0?erid=2W5zFHha3qr
Разверните файловые хранилища, медиасерверы, большие архивы данных и системы аналитики на сервере-хранилище от Selectel в Новосибирске.
Отличное решение, если:
📍вы работаете с проектами из Сибири и с Дальнего Востока,
📍вам важна географическая распределенность.
Закажите сервер SL108R в Selectel и храните данные там, где удобно:
https://slc.tl/y00o0?erid=2W5zFHha3qr
🚀 Оптимизация запросов в SQL: как не утонуть в данных
Сегодня хочу поделиться мыслями на тему, которая часто становится болью для многих разработчиков баз данных — оптимизация SQL-запросов.
Когда база данных растёт, а запросы становятся сложнее, даже небольшой промах может привести к тому, что ваш сервер начнёт "плакать" под нагрузкой. Вот несколько советов, которые помогут вам держать запросы в тонусе:
1. Индексы — ваш лучший друг (и враг, если использовать неправильно)
Индексы ускоряют поиск данных, но их избыток может замедлить вставку и обновление. Используйте их с умом:
- Индексируйте только те столбцы, которые часто используются в условиях
- Избегайте индексов на столбцах с низкой селективностью (например, пол с значениями "М" и "Ж").
2. Анализируйте план выполнения запроса
Перед тем как оптимизировать, нужно понять, что именно тормозит. Используйте
- Полноценные сканирования таблиц (
- Вложенные циклы (
- Использование временных таблиц и сортировок.
3. Избегайте N+1 проблемы
Если вы работаете с ORM, убедитесь, что не делаете лишних запросов. Например, вместо того чтобы выбирать связанные данные в цикле, используйте
4. Кэшируйте то, что можно кэшировать
Не все данные нужно каждый раз запрашивать из базы. Используйте кэширование для часто запрашиваемых данных. Redis или Memcached — отличные инструменты для этого.
5. Нормализация — это хорошо, но не всегда
Нормализация базы данных помогает избежать дублирования данных, но иногда денормализация может значительно ускорить запросы. Например, если у вас есть сложные агрегации, подумайте о создании материализованных представлений.
6. Следите за статистикой
Базы данных часто используют статистику для оптимизации запросов. Убедитесь, что она актуальна. Например, в PostgreSQL можно обновить статистику с помощью команды
7. Не забывайте про мониторинг
Используйте инструменты для мониторинга производительности базы данных, такие как pg_stat_activity в PostgreSQL или Performance Schema в MySQL. Это поможет вовремя выявить "узкие" места.
Мы в MAX
#db
👉 @database_info
Сегодня хочу поделиться мыслями на тему, которая часто становится болью для многих разработчиков баз данных — оптимизация SQL-запросов.
Когда база данных растёт, а запросы становятся сложнее, даже небольшой промах может привести к тому, что ваш сервер начнёт "плакать" под нагрузкой. Вот несколько советов, которые помогут вам держать запросы в тонусе:
1. Индексы — ваш лучший друг (и враг, если использовать неправильно)
Индексы ускоряют поиск данных, но их избыток может замедлить вставку и обновление. Используйте их с умом:
- Индексируйте только те столбцы, которые часто используются в условиях
WHERE, JOIN и ORDER BY. - Избегайте индексов на столбцах с низкой селективностью (например, пол с значениями "М" и "Ж").
2. Анализируйте план выполнения запроса
Перед тем как оптимизировать, нужно понять, что именно тормозит. Используйте
EXPLAIN (или EXPLAIN ANALYZE в PostgreSQL) для анализа плана выполнения. Обратите внимание на: - Полноценные сканирования таблиц (
Seq Scan). - Вложенные циклы (
Nested Loop), которые могут быть медленными на больших данных. - Использование временных таблиц и сортировок.
3. Избегайте N+1 проблемы
Если вы работаете с ORM, убедитесь, что не делаете лишних запросов. Например, вместо того чтобы выбирать связанные данные в цикле, используйте
JOIN или prefetch_related (в Django). 4. Кэшируйте то, что можно кэшировать
Не все данные нужно каждый раз запрашивать из базы. Используйте кэширование для часто запрашиваемых данных. Redis или Memcached — отличные инструменты для этого.
5. Нормализация — это хорошо, но не всегда
Нормализация базы данных помогает избежать дублирования данных, но иногда денормализация может значительно ускорить запросы. Например, если у вас есть сложные агрегации, подумайте о создании материализованных представлений.
6. Следите за статистикой
Базы данных часто используют статистику для оптимизации запросов. Убедитесь, что она актуальна. Например, в PostgreSQL можно обновить статистику с помощью команды
ANALYZE. 7. Не забывайте про мониторинг
Используйте инструменты для мониторинга производительности базы данных, такие как pg_stat_activity в PostgreSQL или Performance Schema в MySQL. Это поможет вовремя выявить "узкие" места.
Мы в MAX
#db
👉 @database_info
👍7
👍9🔥5❤1
🔥 Оптимизация сложных SQL-запросов: Как уменьшить время выполнения?
🛠 Основные проблемы:
🔹 Чрезмерное количество
🔹 Неправильные индексы – или их отсутствие вообще.
🔹 Подзапросы вместо
🔹 Ненужные
🔹 Фильтрация после
✅ Как ускорить запрос?
1️⃣ Проверьте индексы – используйте
2️⃣ Разбейте сложный запрос на части – иногда лучше записать результат во временную таблицу.
3️⃣ Избегайте
4️⃣ Используйте
5️⃣ Тестируйте с разными
6️⃣ Оптимизируйте сортировку –
Мы в MAX
#db
👉 @database_info
🛠 Основные проблемы:
🔹 Чрезмерное количество
JOIN – могут приводить к тяжелым вычислениям. 🔹 Неправильные индексы – или их отсутствие вообще.
🔹 Подзапросы вместо
JOIN – иногда работают хуже, чем соединения. 🔹 Ненужные
SELECT * – выбираем только нужные колонки. 🔹 Фильтрация после
JOIN – фильтруем данные как можно раньше. ✅ Как ускорить запрос?
1️⃣ Проверьте индексы – используйте
EXPLAIN перед выполнением запроса. Если сканируется весь таблица (Full Table Scan), значит, нужны индексы. 2️⃣ Разбейте сложный запрос на части – иногда лучше записать результат во временную таблицу.
3️⃣ Избегайте
SELECT * – указывайте только нужные колонки. 4️⃣ Используйте
EXISTS вместо IN – в подзапросах это часто работает быстрее. 5️⃣ Тестируйте с разными
JOIN – попробуйте INNER JOIN, LEFT JOIN, а в некоторых случаях UNION. 6️⃣ Оптимизируйте сортировку –
ORDER BY без индексов тормозит запрос. Мы в MAX
#db
👉 @database_info
👍5❤4