es
Feedback
Базы данных (Data Base)

Базы данных (Data Base)

Ir al canal en Telegram

Базы данных (Data Base). По всем вопросам @evgenycarter

Mostrar más
8 058
Suscriptores
Sin datos24 horas
-127 días
-3130 días
Atraer Suscriptores
septiembre '26
septiembre '26
+28
en 0 canales
agosto '26
+57
en 0 canales
Get PRO
julio '26
+61
en 0 canales
Get PRO
junio '26
+49
en 0 canales
Get PRO
mayo '26
+81
en 0 canales
Get PRO
abril '26
+56
en 0 canales
Get PRO
marzo '26
+85
en 0 canales
Get PRO
febrero '26
+92
en 0 canales
Get PRO
enero '26
+82
en 0 canales
Get PRO
diciembre '25
+87
en 0 canales
Get PRO
noviembre '25
+137
en 31 canales
Get PRO
octubre '25
+101
en 1 canales
Get PRO
septiembre '25
+178
en 36 canales
Get PRO
agosto '25
+159
en 1 canales
Get PRO
julio '25
+197
en 27 canales
Get PRO
junio '25
+215
en 19 canales
Get PRO
mayo '25
+201
en 44 canales
Get PRO
abril '25
+227
en 40 canales
Get PRO
marzo '25
+202
en 38 canales
Get PRO
febrero '25
+176
en 31 canales
Get PRO
enero '25
+230
en 33 canales
Get PRO
diciembre '24
+183
en 34 canales
Get PRO
noviembre '24
+188
en 32 canales
Get PRO
octubre '24
+192
en 29 canales
Get PRO
septiembre '24
+250
en 28 canales
Get PRO
agosto '24
+137
en 17 canales
Get PRO
julio '24
+139
en 0 canales
Get PRO
junio '24
+176
en 23 canales
Get PRO
mayo '24
+169
en 19 canales
Get PRO
abril '24
+161
en 0 canales
Get PRO
marzo '24
+202
en 20 canales
Get PRO
febrero '24
+178
en 18 canales
Get PRO
enero '24
+289
en 23 canales
Get PRO
diciembre '23
+246
en 25 canales
Get PRO
noviembre '23
+246
en 17 canales
Get PRO
octubre '23
+266
en 18 canales
Get PRO
septiembre '23
+247
en 0 canales
Get PRO
agosto '23
+192
en 0 canales
Get PRO
julio '23
+185
en 0 canales
Get PRO
junio '23
+223
en 0 canales
Get PRO
mayo '23
+217
en 0 canales
Get PRO
abril '23
+309
en 0 canales
Get PRO
marzo '23
+282
en 0 canales
Get PRO
febrero '23
+168
en 0 canales
Get PRO
enero '23
+175
en 0 canales
Get PRO
diciembre '22
+224
en 0 canales
Get PRO
noviembre '22
+174
en 0 canales
Get PRO
octubre '22
+321
en 0 canales
Get PRO
septiembre '22
+380
en 0 canales
Get PRO
agosto '22
+295
en 0 canales
Get PRO
julio '22
+538
en 0 canales
Get PRO
junio '22
+569
en 0 canales
Get PRO
mayo '22
+891
en 0 canales
Get PRO
abril '22
+3 160
en 0 canales
Fecha
Crecimiento de Suscriptores
Menciones
Canales
15 septiembre+5
14 septiembre+1
13 septiembre+2
12 septiembre0
11 septiembre0
10 septiembre+1
09 septiembre+5
08 septiembre+1
07 septiembre+1
06 septiembre+1
05 septiembre0
04 septiembre+4
03 septiembre0
02 septiembre+1
01 septiembre+6
Publicaciones del Canal
🧩 Сегодня покажу вам простой, но крайне полезный приём, как находить “тяжёлые” запросы в PostgreSQL, которые тормозят базу. 📌 Если у вас база под нагрузкой, и “что-то всё стало медленно”, первым делом проверьте:

SELECT pid, now() - query_start AS duration, query
FROM pg_stat_activity
WHERE state = 'active'
ORDER BY duration DESC
LIMIT 5;
Этот запрос показывает топ-5 самых долгих активных запросов. Обратите внимание на query_start - именно он поможет понять, кто завис и тормозит остальных. А если хотите посмотреть историю медленных запросов за последние часы/дни - подключайте pg_stat_statements:

SELECT 
  calls, 
  total_time, 
  mean_time, 
  query 
FROM pg_stat_statements
ORDER BY total_time DESC
LIMIT 10;
🔍 Тут видно, какие запросы в сумме "съели" больше всего времени. И это гораздо честнее, чем смотреть только на mean_time или calls по отдельности. 💡Совет: подключите pg_stat_statements на проде и делайте такой анализ хотя бы раз в неделю. Это поможет находить проблемные места в приложении до того, как начнётся пожар. 📲 Мы в MAX #db 👉 @database_info

2
Сегодня расскажу вам про одну часто недооценённую, но крайне полезную SQL-фишку — CROSS APPLY в SQL Server (и его аналог в других СУБД — LATERAL). Когда обычный JOIN бессилен Допустим, у нас есть таблица Orders, и мы хотим для каждой строки выбрать топ-1 продукт по сумме, но выборка зависит от строки — тут уже обычный JOIN не справится. Вот пример, где приходит на помощь CROSS APPLY: SELECT o.OrderID, p.ProductName, p.Amount FROM Orders o CROSS APPLY ( SELECT TOP 1 * FROM Products p WHERE p.OrderID = o.OrderID ORDER BY p.Amount DESC ) p; Что делает CROSS APPLY? Он буквально говорит: «Для каждой строки из Orders выполни подзапрос с её параметрами». Это похоже на foreach, где внутренняя выборка может меняться в зависимости от строки внешней таблицы. Аналог в PostgreSQL: SELECT o.order_id, p.product_name, p.amount FROM orders o, LATERAL ( SELECT * FROM products p WHERE p.order_id = o.order_id ORDER BY p.amount DESC LIMIT 1 ) p; 🔥 Используйте CROSS APPLY, когда: - Нужна подстрочная логика внутри запроса - Не получается реализовать через обычный JOIN - Вы работаете с функциями, которые возвращают таблицу (TVF) 📲 Мы в MAX #db 👉 @database_info
451
3
📊 Зачем DBA нужно уметь читать планы выполнения запросов (EXPLAIN)? Почему навык чтения плана выполнения запроса - это не просто галочка в резюме, а реальный способ спасать прод от тормозов и неожиданных фулл-сканов. Когда приходит запрос от разработчика: "Почему тормозит?" - ты открываешь EXPLAIN (ANALYZE, BUFFERS) и видишь: Seq Scan on users (cost=0.00..44231.00 rows=1000000 width=64) Filter: (status = 'active') И тут всё понятно: фильтрация идёт по колонке без индекса, Postgres делает полный проход по таблице. Один CREATE INDEX - и запрос летит 🚀 Но не всё так просто. Иногда план говорит: Index Scan using idx_users_status on users Index Cond: (status = 'active') А запрос всё равно медленный. Почему? ➡️ Buffers: shared hit=5 read=100000 dirtied=0 - вот оно. Индекс-то используется, но данные не в кэше, приходится читать с диска. А диск медленный. Решение? Подумать о горячем кэше, пачке RAM или REINDEX, если индекс раздулся. Каждый EXPLAIN - как рентген. Не читаешь - лечишь наугад. 📲 Мы в MAX #db 👉 @database_info
688
4
💡7 обязательных стратегий для масштабирования вашей базы данных. 1 - Индексация: Проверьте шаблоны запросов вашего приложени
💡7 обязательных стратегий для масштабирования вашей базы данных. 1 - Индексация: Проверьте шаблоны запросов вашего приложения и создайте подходящие индексы. 2 - Материализованные представления: Предварительно вычислите результаты сложных запросов и сохраните их для быстрого доступа. 3 - Денормализация: Уменьшите количество сложных соединений (join), чтобы улучшить производительность запросов. 4 - Вертикальное масштабирование: Увеличьте мощность вашего сервера базы данных, добавив больше ЦП, оперативной памяти или хранилища. 5 - Кэширование: Сохраните часто запрашиваемые данные в более быстром слое хранения, чтобы снизить нагрузку на базу данных. 6 - Репликация: Создайте реплики вашей основной базы данных на разных серверах для масштабирования чтений. 7 - Шардинг: Разделите таблицы базы данных на более мелкие части и распределите их по серверам. Используется для масштабирования как записей, так и чтений. 📲 Мы в MAX #db 👉 @database_info
755
5
SQL JOINs наглядно: как работать с объединением таблиц Хотите лучше понимать SQL JOIN? Вот наглядная шпаргалка с примерами и
SQL JOINs наглядно: как работать с объединением таблиц Хотите лучше понимать SQL JOIN? Вот наглядная шпаргалка с примерами и визуализацией! 🔹 INNER JOIN – пересечение двух таблиц, возвращает только совпадающие строки. SELECT * FROM A INNER JOIN B ON A.key = B.key; 🔹 FULL JOIN – объединяет все данные из обеих таблиц, заполняя пропущенные значения NULL. SELECT * FROM A FULL JOIN B ON A.key = B.key; 🔹 FULL JOIN с фильтрацией NULL – выбирает только строки, которые есть только в одной из таблиц. SELECT * FROM A FULL JOIN B ON A.key = B.key WHERE A.key IS NULL OR B.key IS NULL; 🔹 LEFT JOIN – возвращает все строки из A и совпадающие строки из B. SELECT * FROM A LEFT JOIN B ON A.key = B.key; 🔹 LEFT JOIN (только уникальные в A) – возвращает только строки из A, которых нет в B. SELECT * FROM A LEFT JOIN B ON A.key = B.key WHERE B.key IS NULL; 🔹 RIGHT JOIN – аналогично LEFT JOIN, но с приоритетом B. SELECT * FROM A RIGHT JOIN B ON A.key = B.key; 🔹 RIGHT JOIN (только уникальные в B) – выбирает строки, которые есть в B, но отсутствуют в A. SELECT * FROM A RIGHT JOIN B ON A.key = B.key WHERE B.key IS NULL; Сохраняйте в закладки и пользуйтесь! ⚡ 📲 Мы в MAX #db 👉 @database_info
893
6
Визуализация SQL-запросов Ментальная модель, помогающая представить, как выполняются SQL-запросы. Фактическая последовательно
Визуализация SQL-запросов Ментальная модель, помогающая представить, как выполняются SQL-запросы. Фактическая последовательность выполнения может отличаться от этой модели из-за стратегий оптимизации, применяемых оптимизатором запросов. 📲 Мы в MAX #db 👉 @database_info
806
7
🔥 Оптимизация индексов: частая ошибка DBA 🔥 Сегодня разберём распространённую ошибку, которую совершают многие администраторы баз данных — избыточные индексы. 💡Проблема Добавление индексов — это полезно, но если их становится слишком много, то база данных начинает тормозить при вставке, обновлении и удалении данных. Почему? Потому что каждый индекс требует дополнительного обслуживания при изменениях в таблице. 💡Пример ошибки Представим таблицу orders: CREATE TABLE orders ( id SERIAL PRIMARY KEY, customer_id INT NOT NULL, order_date DATE NOT NULL, total DECIMAL(10,2) NOT NULL ); Допустим, мы добавляем индексы: CREATE INDEX idx_customer ON orders(customer_id); CREATE INDEX idx_order_date ON orders(order_date); CREATE INDEX idx_customer_order_date ON orders(customer_id, order_date); На первый взгляд, всё логично, но есть проблема: индекс idx_customer_order_date покрывает оба предыдущих индекса! 💡Как исправить? Можно удалить idx_customer и idx_order_date, так как составной индекс (idx_customer_order_date) способен выполнять их работу. 📌 Как проверить ненужные индексы? 1️⃣ В PostgreSQL: SELECT indexrelid::regclass, pg_size_pretty(pg_relation_size(indexrelid)) FROM pg_stat_user_indexes ORDER BY pg_relation_size(indexrelid) DESC; 2️⃣ В MySQL: SHOW INDEX FROM orders; Здесь ищем индексы, которые дублируют друг друга. Вывод: Чем меньше избыточных индексов — тем быстрее работает ваша база данных. Проверьте свои индексы прямо сейчас! 📲 Мы в MAX #db 👉 @database_info
817
8
🔥 Оптимизация запросов: Как убрать тормоза в SQL? Сейчас покажу вам, как ускорить медленный SQL-запрос, который выполняется слишком долго. Если у вас в проекте есть запросы, которые выполняются секундами, а не миллисекундами, пора что-то менять! 🚀 Разбор примера Допустим, у нас есть такой запрос: SELECT * FROM orders WHERE customer_id = 123 ORDER BY order_date DESC; Кажется простым, но выполняется медленно. В чём может быть проблема? 📌 Основные причины тормозов: 1️⃣ Нет нужного индекса – если customer_id или order_date не индексированы, база будет делать полный скан таблицы. 2️⃣ Слишком много данных – если таблица огромная, ORDER BY без индекса будет работать медленно. 3️⃣ Использование SELECT * – загружает ненужные колонки и увеличивает нагрузку. ✅ Как ускорить? ✔ Добавляем индекс (если его нет): CREATE INDEX idx_orders_customer ON orders(customer_id, order_date DESC); ✔ Выбираем только нужные колонки: SELECT order_id, order_date FROM orders WHERE customer_id = 123 ORDER BY order_date DESC; ✔ Лимитируем выборку (если нужен только последний заказ): SELECT order_id, order_date FROM orders WHERE customer_id = 123 ORDER BY order_date DESC LIMIT 1; Добавление индекса + правильный выбор колонок + LIMIT = в разы быстрее! 🚀 📲 Мы в MAX #db 👉 @database_info
842
9
🔥 Шпаргалка по SQL с основными командами и примерами 1. Основные команды SQL SELECT column1, column2 FROM table_name; -- Выборка данных SELECT * FROM table_name; -- Выборка всех данных INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2'); -- Добавление данных UPDATE table_name SET column1 = 'value' WHERE condition; -- Обновление данных DELETE FROM table_name WHERE condition; -- Удаление данных 2. Фильтрация данных (WHERE, AND, OR, LIKE, IN, BETWEEN) SELECT * FROM users WHERE age > 18; -- Возраст больше 18 SELECT * FROM users WHERE city = 'Москва' AND age > 18; -- Два условия SELECT * FROM users WHERE name LIKE 'A%'; -- Начинается с 'A' SELECT * FROM users WHERE age BETWEEN 18 AND 30; -- Возраст от 18 до 30 SELECT * FROM users WHERE city IN ('Москва', 'Санкт-Петербург'); -- Город Москва или Питер 3. Группировка и агрегатные функции (GROUP BY, HAVING, COUNT, SUM, AVG, MAX, MIN) SELECT city, COUNT(*) FROM users GROUP BY city; -- Количество пользователей в каждом городе SELECT city, AVG(age) FROM users GROUP BY city HAVING AVG(age) > 25; -- Средний возраст > 25 SELECT MAX(salary) FROM employees; -- Максимальная зарплата SELECT SUM(sales) FROM orders WHERE date >= '2024-01-01'; -- Сумма продаж с 2024 года 4. Сортировка (ORDER BY) SELECT * FROM users ORDER BY age ASC; -- Сортировка по возрасту (по возрастанию) SELECT * FROM users ORDER BY age DESC; -- Сортировка по убыванию 5. Соединение таблиц (JOIN) SELECT users.name, orders.amount FROM users JOIN orders ON users.id = orders.user_id; -- Внутреннее соединение SELECT users.name, orders.amount FROM users LEFT JOIN orders ON users.id = orders.user_id; -- Левый JOIN (все из users) SELECT users.name, orders.amount FROM users RIGHT JOIN orders ON users.id = orders.user_id; -- Правый JOIN (все из orders) 6. Создание и изменение таблиц (CREATE, ALTER, DROP) CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(100), age INT ); -- Создание таблицы ALTER TABLE users ADD COLUMN email VARCHAR(100); -- Добавление колонки ALTER TABLE users DROP COLUMN email; -- Удаление колонки DROP TABLE users; -- Удаление таблицы 7. Работа с индексами (INDEX) CREATE INDEX idx_users_name ON users(name); -- Создание индекса DROP INDEX idx_users_name; -- Удаление индекса 8. Ограничения (PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, DEFAULT) CREATE TABLE orders ( id SERIAL PRIMARY KEY, user_id INT REFERENCES users(id), -- Внешний ключ amount DECIMAL(10,2) CHECK (amount > 0), -- Ограничение CHECK created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- Значение по умолчанию ); 9. Подзапросы (SUBQUERY) SELECT * FROM users WHERE id IN (SELECT user_id FROM orders WHERE amount > 1000); 10. Транзакции (BEGIN, COMMIT, ROLLBACK) BEGIN; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT; -- Завершение транзакции ROLLBACK; -- Откат изменений 📲Мы в MAX #db 👉 @database_info
701
10
🔥 Оптимизация SQL-запросов: 5 ключевых техник Сегодня я покажу вам, как ускорить выполнение SQL-запросов, ведь никто не люби
🔥 Оптимизация SQL-запросов: 5 ключевых техник Сегодня я покажу вам, как ускорить выполнение SQL-запросов, ведь никто не любит ждать, пока база данных "думает". 🚀 1️⃣ Используйте индексы Индексы – это ускоритель запросов. Если у вас часто выполняются WHERE, JOIN или ORDER BY по определенному столбцу – создайте для него индекс. Но не переборщите: индексы ускоряют чтение, но замедляют вставку и обновление данных. 2️⃣ Избегайте SELECT * Выбирайте только нужные столбцы. SELECT * может загружать ненужные данные и нагружать сервер. Лучше указывать конкретные столбцы. 3️⃣ Нормализация или денормализация? Иногда стоит разбивать таблицы (нормализация) для устранения дублирования данных. В других случаях – наоборот, объединять (денормализация) ради быстродействия. Анализируйте ситуацию! 4️⃣ Кеширование запросов Если запрос выполняется часто и данные редко меняются, используйте QUERY CACHE или внешние кеширующие механизмы (Redis, Memcached). 5️⃣ Анализируйте планы выполнения Команда EXPLAIN в MySQL/PostgreSQL покажет, как СУБД выполняет запрос. Это поможет найти узкие места: медленные JOIN'ы, сканы всей таблицы и т.д. 💡 Используете ли вы эти техники? Напишите, какой метод вам помог ускорить работу БД! 📲 Мы в MAX #db 👉 @database_info
865
11
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин https://max.ru/channel_win_sysadmin Системный Администратор Windows https://max.ru/channel_linux_admin Linux: Системный администратор https://max.ru/channel_linuxmod Linux https://max.ru/channel_i_linux Системный администратор https://max.ru/channel_devopslib DevOps, SRE, Sysadmin https://max.ru/channel_devops_star DevOps Star (Звезда Девопса) Excel лайфхак 📌 https://t.me/Excel_lifehack Excel лайфхак Английский с нуля 🇬🇧 https://max.ru/UchuEnglish 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С https://max.ru/channel_DevLab1C 1С:Предприятие 8 Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика https://max.ru/channel_cpp_geek C++ geek Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Rust📌 https://max.ru/channel_rust_lib Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика https://max.ru/channel_java_geek Java Geek GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 Шутки программистов 📌 https://max.ru/itumor Шутки программистов Защита, взлом, безопасность 📌 https://max.ru/thehaking Канал о кибербезопасности https://max.ru/xakkep_1 Хакер Free Книги, статьи для дизайнеров 📌 https://max.ru/odesigners Статьи, книги для дизайнеров Математика 📌 https://max.ru/Pomatematike Канал по математике https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике Вакансии в IT📌 https://max.ru/progjob https://max.ru/channel_rabotait Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Городские📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП https://max.ru/channel_krasnodar_novosty Краснодар Новости https://max.ru/channel_novosibirsk_novosti Новосибирск https://max.ru/channel_samara_novosti Новости Самары https://max.ru/channel_ekaterinburg_novosti Новости Екатеринбурга https://max.ru/channel_kazan_novosti Новости Казани https://max.ru/channel_omsk_novosti Новости Омска https://max.ru/channel_moskva_24 Москва 24
681
12
Оптимизация запросов: Индексы vs. Анализ плана выполнения 🚀 Сейчас я покажу вам, почему простое добавление индексов не всегд
Оптимизация запросов: Индексы vs. Анализ плана выполнения 🚀 Сейчас я покажу вам, почему простое добавление индексов не всегда ускоряет запросы. Часто встречаю ситуацию, когда разработчики по умолчанию добавляют индексы на каждое поле WHERE, но запросы всё равно работают медленно. Давайте разберёмся! 🔹 Миф: индексы всегда ускоряют запросы На самом деле, индекс может даже замедлить выполнение, если: ✅ Запрос возвращает слишком много строк - сканирование индекса будет дороже, чем полное сканирование таблицы. ✅ Индекс не покрывает весь запрос - приходится делать обращения к основной таблице. ✅ Слишком много индексов - это замедляет INSERT/UPDATE/DELETE. 🔹 Как правильно анализировать? Используйте EXPLAIN ANALYZE (PostgreSQL) или EXPLAIN FORMAT=JSON (MySQL) для понимания: 🔍 Используется ли индекс? 🔍 Сколько строк проходит сканирование? 🔍 Есть ли операции сортировки, которые можно избежать с индексом? 🔹 Что делать, если запрос медленный? 1️⃣ Проверить план выполнения (не добавлять индекс вслепую!). 2️⃣ Подумать о составных индексах, если запрос фильтрует по нескольким полям. 3️⃣ Проверить, можно ли избежать сортировки (ORDER BY по индексу). 4️⃣ Рассмотреть материализованные представления для сложных агрегатов. 📲 Мы в MAX #db 👉 @database_info
819
13
🔥 Оптимизация сложных SQL-запросов: Как уменьшить время выполнения? 🛠 Основные проблемы: 🔹 Чрезмерное количество JOIN – мо
🔥 Оптимизация сложных SQL-запросов: Как уменьшить время выполнения? 🛠 Основные проблемы: 🔹 Чрезмерное количество 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
857
14
Шпаргалка по оконным функциям в SQL 📲 Мы в MAX #db 👉 @database_info+1
Шпаргалка по оконным функциям в SQL 📲 Мы в MAX #db 👉 @database_info
1 011
15
🚀 Оптимизация запросов в SQL: как не утонуть в данных Сегодня хочу поделиться мыслями на тему, которая часто становится болью для многих разработчиков баз данных — оптимизация 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
954
16
Безумные и забавные факты о SQLite ⚫️SQLite — самая часто разворачиваемая и используемая база данных. На текущий момент актив
Безумные и забавные факты о SQLite ⚫️SQLite — самая часто разворачиваемая и используемая база данных. На текущий момент активно используется более одного триллиона (1000000000000 или миллиона миллионов) баз данных SQLite. ⚫️Её поддерживают три человека. Они не допускают внешних контрибьюторов. Скорее всего, SQLite используется больше, чем все остальные движки баз данных суммарно. В мире работают миллиарды копий SQLite. Её можно встретить повсюду. https://habr.com/ru/companies/ruvds/articles/873816/ 📲 Мы в MAX #db 👉 @database_info
999
17
Как лучше всего изучать язык SQL? В 1986 году язык SQL (Structured Query Language) стал стандартом. В течение последующих 40
Как лучше всего изучать язык SQL? В 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
950
18
Шардирование базы данных на пальцах Популярные приложения рано или поздно должны масштабироваться для ускорения доступа к дан
Шардирование базы данных на пальцах Популярные приложения рано или поздно должны масштабироваться для ускорения доступа к данным и увеличения трафика. Чтобы распределить данные на несколько серверов и обеспечить им безопасность и целостность, нужна база данных с соответствующей архитектурой — шардированная база данных. Шардирование (шардинг) базы данных — это деление данных на разные фрагменты с целью повышения производительности и надежности. Иногда это понятие путают с репликацией и партицированием, но на самом деле это разные направления масштабирования, которые могут быть реализованы в пределах одной базы данных. Существует два вида шардирования: ▪Вертикальное (по столбцам): каждый шард содержит часть столбцов массива и все связанные с ними строки данных. ▪Горизонтальное (по каким-либо критериям строки): каждый шард содержит одинаковые столбцы, но разные строки данных. https://architecturenotes.co/database-sharding-explained/ 📲 Мы в MAX #db 👉 @database_info
1 012
19
Визуализация SQL-запроса 📲 Мы в MAX #db 👉 @database_info
Визуализация SQL-запроса 📲 Мы в MAX #db 👉 @database_info
919
20
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин https://max.ru/channel_win_sysadmin Системный Администратор Windows https://max.ru/channel_linux_admin Linux: Системный администратор https://max.ru/channel_linuxmod Linux https://max.ru/channel_i_linux Системный администратор https://max.ru/channel_devopslib DevOps, SRE, Sysadmin https://max.ru/channel_devops_star DevOps Star (Звезда Девопса) Excel лайфхак 📌 https://t.me/Excel_lifehack Excel лайфхак Английский с нуля 🇬🇧 https://max.ru/UchuEnglish 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С https://max.ru/channel_DevLab1C 1С:Предприятие 8 Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика https://max.ru/channel_cpp_geek C++ geek Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Rust📌 https://max.ru/channel_rust_lib Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика https://max.ru/channel_java_geek Java Geek GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 Шутки программистов 📌 https://max.ru/itumor Шутки программистов Защита, взлом, безопасность 📌 https://max.ru/thehaking Канал о кибербезопасности https://max.ru/xakkep_1 Хакер Free Книги, статьи для дизайнеров 📌 https://max.ru/odesigners Статьи, книги для дизайнеров Математика 📌 https://max.ru/Pomatematike Канал по математике https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике Вакансии в IT📌 https://max.ru/progjob https://max.ru/channel_rabotait Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Городские📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП https://max.ru/channel_krasnodar_novosty Краснодар Новости https://max.ru/channel_novosibirsk_novosti Новосибирск https://max.ru/channel_samara_novosti Новости Самары https://max.ru/channel_ekaterinburg_novosti Новости Екатеринбурга https://max.ru/channel_kazan_novosti Новости Казани https://max.ru/channel_omsk_novosti Новости Омска https://max.ru/channel_moskva_24 Москва 24
874