uk
Feedback
Data Science. SQL hub

Data Science. SQL hub

Відкрити в Telegram

По всем вопросам- @workakkk @itchannels_telegram - 🔥лучшие ит-каналы @ai_machinelearning_big_data - Machine learning @pythonl - Python @pythonlbooks- python книги📚 @datascienceiot - ml книги📚 РКН: https://vk.cc/cIi9vo #VRHSZ

Показати більше

📈 Аналітичний огляд Telegram-каналу Data Science. SQL hub

Канал Data Science. SQL hub (@sqlhub) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 35 837 підписників, посідаючи 3 816 місце в категорії Технології та додатки та 18 135 місце у регіоні Росія.

📊 Показники аудиторії та динаміка

З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 35 837 підписників.

За останніми даними від 18 червня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -33, а за останні 24 години на 8, загальне охоплення залишається високим.

  • Статус верифікації: Не верифікований
  • Рівень залученості (ER): Середній показник залученості аудиторії становить 6.81%. Протягом перших 24 годин після публікації контент зазвичай збирає 3.98% реакцій від загальної кількості підписників.
  • Охоплення публікацій: В середньому кожен допис отримує 2 442 переглядів. Протягом першої доби публікація в середньому набирає 1 425 переглядів.
  • Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 12.
  • Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як sql, индекс, postgres, index, sqlite.

📝 Опис та контентна політика

Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
По всем вопросам- @workakkk @itchannels_telegram - 🔥лучшие ит-каналы @ai_machinelearning_big_data - Machine learning @pythonl - Python @pythonlbooks- python книги📚 @datascienceiot - ml книги📚 РКН: https://vk.cc/cIi9vo #VRHSZ

Завдяки високій частоті оновлень (останні дані отримано 19 червня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.

35 837
Підписники
+824 години
-277 днів
-3330 день
Архів дописів
💎 Квантизация нейросетевых моделей Интересная статья, в которой ML-разработчик Яндекса рассказывает, что такое квантизация и
💎 Квантизация нейросетевых моделей Интересная статья, в которой ML-разработчик Яндекса рассказывает, что такое квантизация и как она помогает экономить ресурсы, разбирает типы данных и объясняет, что квантизовать, чтобы улучшить эффективность модели. Автор также рассказывает, что такое выбросы, как они портят жизнь ML-инженерам, а также как с ними бороться. 📎Статья @sqlhub

erid: LjN8KawpL Построение DWH в Yandex Cloud: кейс крупной логистической компании 21 марта в 16.00 На вебинаре эксперты iiii
erid: LjN8KawpL Построение DWH в Yandex Cloud: кейс крупной логистической компании 21 марта в 16.00   На вебинаре эксперты iiii Tech и Yandex Cloud совместно с клиентом Рулог поделятся кейсом, как в рамках локализации отчетности развернуть DWH (КХД) на Yandex Cloud.  Расскажем о: - современном стеке аналитических инструментов - бесшовной миграции с международных облачных платформ  - о проекте построения DWH (КХД) на основе дата-контрактов  Вебинар будет полезен CDO, CTO, руководителям направлений по работе с данными, архитекторам данных, аналитиками и дата-инженерам.  Спикеры: Георгий Цыганков,  руководитель направления BI Андрей Суренский,  архитектор по работе с партнёрами Yandex Cloud Венера Никитина, бизнес-аналитик логистической компании Рулог Зарегистрироваться можно по ссылке 

💻Временная таблица в базе данных SQL ⏩Временная таблица SQL (temp table) — это таблица, которая создается и используется в к
+1
💻Временная таблица в базе данных SQL ⏩Временная таблица SQL (temp table) — это таблица, которая создается и используется в контексте определенного сеанса или транзакции в СУБД. Она предназначена для хранения временных данных, которые нужны на короткое время и не требуют постоянного хранения. Временные таблицы в SQL обеспечивают удобный способ разбиения сложных задач на более мелкие и управляемые. Они позволяют разделить этапы обработки данных, что может повысить производительность, улучшить читаемость кода и упростить логику запросов. ⏩Чтобы создать временную таблицу, можно использовать инструкцию CREATE TABLE с ключевым словом TEMPORARY или TEMP перед именем таблицы:
CREATE TEMPORARY TABLE temp_table (
    id INT,
    name VARCHAR(50),
    age INT
);
Что тут происходит: — Инструкция CREATE TEMPORARY TABLE используется для создания временной таблицы. — temp_table — это имя, которое присваивается временной таблице. Имя можно выбрать любое. — Внутри круглых скобок мы определяем столбцы временной таблицы. — В данном примере временная таблица temp_table имеет три столбца: id типа INT, name типа VARCHAR(50) и age типа INT. — При необходимости мы можем добавить дополнительные столбцы, указав их имена и типы данных. — Временная таблица автоматически удаляется в конце сеанса или при завершении сеанса. ⏩Или вот ещё пример. Допустим, у нас есть большой набор данных, и мы хотим выполнить сложный анализ или вычисления на меньшей части этих данных. Для такого анализа можно создать временную таблицу, содержащую только необходимые строки и столбцы.
-- Создать временную таблицу с подмножеством данных
CREATE TEMPORARY TABLE subset_data AS
SELECT column1, column2, column3
FROM original_table
WHERE condition;

-- Анализ подмножества данных
SELECT column1, AVG(column2) AS average_value
FROM subset_data
GROUP BY column1;

-- Удалить временную таблицу
DROP TABLE subset_data;
📎 Читать подробнее @sqlhub

Не упустите возможность начать карьеру в одной из самых востребованных IT-профессий! На курсе Data Scientist с нуля до Junior
Не упустите возможность начать карьеру в одной из самых востребованных IT-профессий! На курсе Data Scientist с нуля до Junior с трудоустройством вы: ✅ Изучите одно из 3 востребованных направлений на выбор — дата-аналитику, дата-инженерию или машинное обучение. ✅ Освоите Python, библиотеки для анализа данных и машинного обучения, SQL, Git, научитесь работать с Power BI и другими актуальными для дата-сайентиста инструментами. ✅ Попрактикуетесь на задачах с реальными данными. ✅ Добавите до 9 проектов в портфолио. ✅ С вами будет работать личный наставник. Он не только укажет на ошибки, но и поможет разобраться в сложных темах и ответит на вопросы. Узнать подробнее о курсе и получить скидку до можно здесь: https://epic.st/SegNI?erid=2Vtzqv3wox8 Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880

Представьте, что у вас есть несколько таблиц Postgres, с которыми вам нужно работать и обрабатывать данные из таблиц с помощь
Представьте, что у вас есть несколько таблиц Postgres, с которыми вам нужно работать и обрабатывать данные из таблиц с помощью Pandas по расписанию. Как вы можете этого добиться? Kestra, orchestrator проект с открытым исходным кодом, который поможет вам без особых усилий организовать этот рабочий процесс, используя файл YAML. https://pypi.org/project/kestra/ @sqlhub

При работе в офисе руководитель всегда может следить за настроением подчинённых и вовремя давать пинка любителям раскладывать
При работе в офисе руководитель всегда может следить за настроением подчинённых и вовремя давать пинка любителям раскладывать пасьянсы. Но на удалёнке часто возникают проблемы с дисциплиной, и эффективность команды снижается 📉 На помощь приходит виртуальное пространство от Яндекс 360. На вебинаре 20 марта в 11:00 ребята расскажут о тонкостях выстраивания дистанционной работы, даже если сотрудники находятся в разных часовых поясах. Зарегистрироваться можно здесь 👈

💻Распространённые ошибки в составлении SQL запросов ▶️Использование SELECT * - Проблема: Выбор всех столбцов с помощью SELECT * приводит к передаче ненужных данных, увеличению использования памяти и снижению производительности запросов. - Решение: Укажите в операторе SELECT только необходимые столбцы.
-- Пример проблемы
SELECT * FROM employees;

-- Улучшенный запрос
SELECT employee_id, first_name, last_name FROM employees;
▶️Отсутствие индексации - Проблема: Отсутствие индексов может привести к полному сканированию таблицы и снижению производительности запросов. - Решение: Создайте и используйте индексы для часто используемых в выражениях WHERE столбцов.
-- Создание индекса
CREATE INDEX idx_last_name ON employees(last_name);

-- Использования индекса в запросе
SELECT * FROM employees WHERE last_name = 'Smith';
▶️Чрезмерное использование подзапросов - Проблема: Подзапросы могут работать медленнее, чем JOIN, особенно при работе с большими наборами данных. - Решение: Используйте JOIN, когда это возможно, а подзапросы оставьте для ситуаций, в которых они более эффективны.
-- Пример проблемы (подзапрос)
SELECT department_name FROM departments WHERE department_id IN (SELECT department_id FROM employees);

-- Улучшенный запрос (JOIN)
SELECT DISTINCT d.department_name FROM departments d JOIN employees e ON d.department_id = e.department_id;
▶️Неэффективные JOIN - Проблема: Выбор неправильного типа JOIN (например, Cartesian JOIN) или неправильное указание условий соединения может привести к неправильным результатам или замедлению запросов. - Решение: Разберитесь в различных типах JOIN (INNER, LEFT, RIGHT, FULL) и используйте их по назначению.
-- Пример проблемы (Cartesian JOIN)
SELECT * FROM employees, departments;

-- Улучшенный запрос (INNER JOIN)
SELECT e.employee_name, d.department_name FROM employees e
INNER JOIN departments d ON e.department_id = d.department_id;
▶️Неиспользование выражений WHERE - Проблема: Отсутствие фильтрации данных с помощью выражений WHERE может привести к запросу ненужных данных. - Решение: Всегда включайте выражения WHERE, ограничивающие набор результатов.
-- Пример проблемы (без выражения WHERE)
SELECT * FROM orders;

-- Улучшенный запрос (с выражением WHERE)
SELECT * FROM orders WHERE order_date >= '2023-01-01';
▶️Игнорирование планов выполнения запросов - Проблема: Игнорирование планов выполнения запросов может привести к упущенным возможностям оптимизации. - Решение: Используйте такие инструменты, как EXPLAIN, для анализа планов выполнения и внесения необходимых оптимизаций.
-- Просмотр плана выполнения
EXPLAIN SELECT * FROM products WHERE category = 'Electronics';
▶️Отсутствие оптимизации больших наборов данных - Проблема: Запросы, хорошо работающие с небольшими наборами данных, могут плохо работать с большими объёмами данных. - Решение: Реализуйте такие стратегии, как пагинация, разбиение данных на разделы и оптимизация индексов для больших наборов данных.
-- реализация пагинации
SELECT * FROM products LIMIT 10 OFFSET 20;
▶️Повторяющиеся агрегации - Проблема: Повторение одних и тех же агрегаций в нескольких частях запроса может быть неэффективным. - Решение: Используйте CTE (Общие табличные выражения) для хранения промежуточных результатов и избегайте лишних вычислений.
-- Пример проблемы (повторяющаяся агрегация)
SELECT department, SUM(salary) AS total_salary FROM employees GROUP BY department;

-- Улучшенный запрос (с CTE)
WITH DepartmentSalaries AS (
    SELECT department, SUM(salary) AS total_salary FROM employees GROUP BY department
)
SELECT * FROM DepartmentSalaries;
▶️Неадекватная обработка ошибок - Проблема: Неправильная обработка ошибок может привести к сбоям в работе приложения или неправильным результатам. - Решение: Реализуйте надлежащую обработку ошибок в SQL запросах или в коде приложения.
-- Пример обработки ошибок в SQL (MySQL)
BEGIN;
-- SQL выражение
IF some_condition THEN
    ROLLBACK; -- Откат транзакции при ошибке
ELSE
    COMMIT; -- Коммит транзакции при успешном выполнении всех выражений
END IF;
@sqlhub

Заниматься ли аналитикой как профессией - вот в чем вопрос… Объясняем, почему все же да Что такое аналитика сегодня? Это зарп
Заниматься ли аналитикой как профессией - вот в чем вопрос… Объясняем, почему все же да Что такое аналитика сегодня? Это зарплаты от 60 000 рублей на начальном уровне, возможность удаленной работы и перспективы роста доходов… Да, но это же еще и очень сложно, запутанно и вообще только для технарей? Не совсем так! На бесплатном онлайн-курсе «Аналитика за шесть уроков» эксперты-практики из Changellenge >> Education докажут, что начать учиться аналитике может перейти практически каждый — независимо от возраста и базового образования. На мини-курсе вы: ✔️Изучите азы основных аналитических программ; ✔️Решите базовые задачи от экспертов-практиков; ✔️Разберетесь с направлениями и выберите подходящее для себя; ✔️Получите сертификат о прохождении курса и пошаговый план по переходу в новую профессию. И примете решение о продолжении новой карьеры! Регистрируйтесь по ссылке https://u.to/DSFsIA Реклама. changellenge-education.com ИНН 7716917009 erid: 2VtzqxVAVrJ

💻 BEGIN, COMMIT, ROLLBACK (работа с транзакциями) ⏩Транзакции – это способ группировки одной или нескольких операций с базой
💻 BEGIN, COMMIT, ROLLBACK (работа с транзакциями)Транзакции – это способ группировки одной или нескольких операций с базой данных в единую единицу работы. Транзакция может состоять из одной или нескольких SQL-операций и использоваться для обеспечения согласованности данных. Транзакция обеспечивает гарантированное выполнение либо всех входящих в неё SQL-операций, либо ни одной. Транзакции управляются командами BEGIN, COMMIT, ROLLBACK. ⏩Транзакции выполняются внутри сессий. Сессия — это одно соединение с базой данных, которое начинается при подключении к базе данных и завершается при её отключении. Транзакция начинается с команды BEGIN и завершается командой COMMIT (успешное завершение) или ROLLBACK (откат). Указывать BEGIN, COMMIT и ROLLBACK не обязательно, часто их использование подразумевается неявно. В случае если сессия неожиданно прерывается, тогда все транзакции, которые были начаты в текущей сесcии – автоматически откатываются. ⏩Подробнее: — BEGIN – инициирует новую транзакцию. После выполнения этой команды все последующие операции с базой данных будут выполняться в рамках этой транзакции. — COMMIT – завершает текущую транзакцию, применяя все её операции. Если все операции в транзакции были успешными, результаты этих операций фиксируются (становятся постоянными). Изменения становятся видны последующим транзакциям. — ROLLBACK – откатывает текущую транзакцию, отменяя все её операции, если в процессе выполнения транзакции возникли ошибки или отмена транзакции производится приложением исходя из внутренней логики работы. ⏩Если данные, внесённые с помощью транзакции на изображении верны – нужно выполнить инструкцию подтверждения транзакции:
COMMIT;
📎 Читать подробнее @sqlhub

Как правильно подставлять значения из переменных / списков / словарей в SQL запрос в Python? ⏩Лучше всего использовать SQL за
Как правильно подставлять значения из переменных / списков / словарей в SQL запрос в Python? ⏩Лучше всего использовать SQL запросы с использованием параметров:
cursor.execute("SELECT * FROM my_table WHERE id = ?", [123])
# parameter placeholder ------------------------> ^
# список/кортеж со значениями параметров -----------> ^^^^^
⏩Какие преимущества приносит использование параметров? — Защита от SQL-инъекцийПравильное квотирование литералов в зависимости от их типа (пример со строками, пример с датами). — Оптимизация — сокращение времени работы SQL запроса. Благодаря использованию параметров следующие шаги не выполняются при повторном запуске (зависит от БД): — проверка синтаксиса SQL запроса — проверка прав доступа к объектам БД — построение плана выполнения SQL запроса — Защита от переполнения/вытеснения кеша SQL запросов. Например "безобидный" запрос qry = f"SELECT first_name, last_name FROM users WHERE id = {user_id}", который часто выполняется в нагруженной системе с различными значениями user_id может вытеснить из кеша запросов полезные запросы. ⏩ Пример использования параметров в SQL запросе:
import sqlite3

con = sqlite3.connect(":memory:")
cur = con.cursor()
cur.execute("create table lang (name, first_appeared)")

cur.execute("insert into lang values (?, ?)", ("C", 1972))

lang_list = [
    ("Fortran", 1957),
    ("Python", 1991),
    ("Go", 2009),
]
cur.executemany("insert into lang values (?, ?)", lang_list)

cur.execute("select * from lang where first_appeared=:year", {"year": 1972})
print(cur.fetchall())

con.close()
При таком подходе можно использовать cursor.executemany() - это значительно быстрее и эффективнее по сравнению с вставкой в цикле по одной строке. 📎 Читать подробнее @sqlhub

Вариант для тех, кто ищет виртуальный сервер с хорошей веб-защитой — Aéza: – Виртуальные сервера до 6.0 ГГц на лучших процесс
Вариант для тех, кто ищет виртуальный сервер с хорошей веб-защитой — Aéza: – Виртуальные сервера до 6.0 ГГц на лучших процессорах; – Профессиональная фильтрация атак StormWall; – Круглосуточная поддержка; – Anycast фильтрация; – Низкие цены; – 15% кешбэка по ссылке. Бесконечно можно смотреть на три вещи: на огонь, воду и скидку от Aeza! Говорят: твоё от тебя не уйдет. А зачем ждать? Динозавры тоже ждали и остались в прошлом Используй 50% скидку и погнали в будущее! Кроме того, сейчас Aéza раздает личные бесплатные сервера, забираем тут. Регистрация, подписка, платежи не потребуются. Реклама. Индивидуальный предприниматель Лобанов Леонид Константинович. ИНН 781625705648 erid: LjN8KEr3S

💻 Vitess 19 для кластеризации БД Состоялся релиз мажорной версии открытого масштабируемого решения для кластеризации баз дан
💻 Vitess 19 для кластеризации БД Состоялся релиз мажорной версии открытого масштабируемого решения для кластеризации баз данных MySQL — Vitess 19. В этой версии разработчики добавили улучшения, направленные на оптимизацию масштабируемости, производительности и удобства использования с базами данных. Изменения и дополнения в Vitess 19: ⏩прекращение поддержки MySQL 5.7. Разработчики советуют пользователям выполнить обновление до MySQL 8.0, используя Vitess 18, прежде чем переходить на Vitess 19. Однако Vitess 19 по-прежнему будет поддерживать импорт из MySQL 5.7; ⏩добавлены новые метрики для консолидации потоков и версия сборки в /debug/vars, чтобы обеспечить более глубокое понимание и отслеживаемость; ⏩улучшена совместимость запросов, реализована поддержка операций удаления из нескольких таблиц, новый запрос SHOW VSCHEMA KEYSPACES и несколько других улучшений синтаксиса SQL, которые расширяют совместимость Vitess с MySQL; ⏩поддержка отсрочки попыток переключения в случае блокировки. Поддержка принудительного отключения; ⏩улучшение процесса инкрементного резервного копирования: поддержка имён резервных копий и пустых резервных копий. «Следуя тенденции последних трёх лет, новая версия Vitess быстрее предыдущей во всех тестах, которые мы отслеживаем в Arewefastyet. Мы исправили несколько проблем с производительностью, доработали интерфейс и код», — пояснили разработчики, порекомендовав изучить документацию проекта и список исправлений. 🖥 Исходный код проекта опубликован на GitHub под лицензией Apache License 2.0. @sqlhub

🚀 GPM AdTech Challenge от «Газпром-Медиа» и Getintent Когда: 18-30 марта Формат: гибридный Три задачи на выбор: 1) Сервис пе
🚀 GPM AdTech Challenge от «Газпром-Медиа» и Getintent Когда: 18-30 марта Формат: гибридный Три задачи на выбор: 1) Сервис перевода и дубляжа видеоконтента 2) Предсказание конверсий пользователей в рекламном аукционе 3) Генератор креативов Ты можешь стать победителем независимо от своего технического бэкграунда. Создавай прототип и участвуй в состязании за общий призовой фонд в 1 000 000 рублей. Регистрация до 18 марта: https://cnrlink.com/gpmdssql 🎙 Frontend Мeetup от Росбанка Когда: 22 марта Формат: очный, Казань Вас ждут доклады специалистов Росбанка, СберМаркета и VK Добра. Авторы лучших вопросов получат мерч. Регистрация до 20 марта: https://cnrlink.com/rbkazandssql 💢 «Халява, приди!»‎ от Codenrock Когда: весь март Формат: онлайн Реши несложные задачи по программированию и получи возможность стать обладателем промокода на любой маркетплейс Регистрация до 30 марта: https://cnrlink.com/halyavadssql Реклама. ООО "Цукер студия". ИНН 7751071015. erid: LjN8KXHRS

💻AlPort опубликовал наиболее полный рейтинг генеративных технологий, который учитывает локальные особенности продуктов В рей
💻AlPort опубликовал наиболее полный рейтинг генеративных технологий, который учитывает локальные особенности продуктов В рейтинг попали самые перспективные разработки в сфере генеративного искусственного интеллекта по ключевым категориям. Туда попали сразу две нейросетки от Яндекса — текстовая YandexGPT и мультимодальная YandexART. Также Яндекс вместе с Stability AI, Open AI, Google, Microsoft, Tencent и Baidu стал одной из 11 компаний со всего мира, которые разрабатывают более одного типа GenAI-моделей. 📎 Статья @sqlhub

erid: LjN8KLBAG Где быстро набраться опыта в аналитике данных и прокачать свои навыки? Вы уже знаете инструменты аналитики, н
erid: LjN8KLBAG Где быстро набраться опыта в аналитике данных и прокачать свои навыки?  Вы уже знаете инструменты аналитики, но вам не хватает практического опыта или разноплановых задач на работе, чтобы получить первый оффер или повышение. Тогда вам будет полезен «Симулятор аналитика» от karpovꓸcourses. Программа идёт 2 месяца, в течение которых вы погрузитесь в полноценный рабочий процесс аналитика и получите опыт, соизмеримый с прохождением стажировки в компании. На курсе вы будете: 🔹Сами проводить A/B-тесты; 🔹Автоматизировать отчётность; 🔹Создавать дашборды с продуктовыми метриками; 🔹Разбираться с разными важными бизнес-задачами. Поток стартует 18 марта — присоединяйтесь и прокачайте свои скиллы под руководством топовых аналитиков: https://clc.to/y4ZEPw Получите скидку 5% по промокоду SQLHUB до 28.03.2024 Реклама. ООО "КАРПОВ КУРСЫ". ИНН 7811764627.

💻 Cheatsheet SQL Шпаргалок по SQL много не бывает, так что держите, полезно освежить перед собеседованием Здесь освещаются самые основные операторы, такие как JOIN, IN, LIKE, BETWEEN, ORDER BY, а также много всего ещё Пользуйтесь) @sqlhub

20 марта ИТ руководители ADV Group, Сталепромышленная компания и M1Cloud поделятся практическим опытом построения индивидуаль
20 марта ИТ руководители ADV Group, Сталепромышленная компания и M1Cloud поделятся практическим опытом построения индивидуальных решений облачной ИТ-инфраструктуры.     На вебинаре спикеры поделятся опытом кастомизации облака под особые требования ИТ и бизнеса в сфере:    - производительности вычислительных ресурсов    - сетевой связанности    - информационной безопасности   - отказоустойчивых DR-решений   - мониторинга и др.      Приглашаем на вебинар всех, кто отвечает за ИТ-инфраструктуру и рассматривает индивидуальные облачные решения.   Участие бесплатное.    Посмотреть программу и зарегистрироваться Реклама. ООО "СТЕК ГРУПП". ИНН 7729739360.

💻 Зачем нужен SELECT ... FOR UPDATE? ▶️Итак, ответ. Пока у вас транзакции следуют строго одна за другой - у вас всё хорошо и нет проблем. Кроме производительности. А чтобы улучшить производительность — необходимо разрешить транзакции выполнять параллельно. И вот тут начинается богатый и поразительный мир concurrently control. При том, не только в БД, а везде где хоть что-то выполняется параллельно. Допустим есть пользователь, у него есть 100 денег на счету. Пользователь может их тратить, вы проверяете баланс SELECT balance ..., затем обновляете баланс при покупке UPDATE ... SET balance = ? WHERE .... И вот в счастливый день как-то так вышло, что приходят сразу 2 запроса на покупки для этого пользователя. Одна на 50 денег, вторая на 70. Одна из них должна быть отклонена, т.к. денег недостаточно. Но в результате получается что обе покупки прошли и у вас проблема, вы продали то, что не надо было. И это даже не видно по балансу пользователя. Как же? Это типичный race condition, обе транзакции сначала данные читают, потом локально что-то делают, потом что-то пишут. ⏩читать им никто не мешает, потому обе транзакции прочитали что у пользователя 100 денег ⏩обе транзакции закономерно решили что денег достаточно ⏩обе транзакции обновили баланс пользователя При конкурентном доступе к ресурсу подрались только на последнем шаге, транзакция которая начала обновлять данные позже сначала подождала завершение первой транзакции. А затем банально перезаписала баланс на тот который считала правильным сама — lost update аномалия. ▶️Вот как раз для того чтобы предупредить СУБД о том, что мы планируем с данными что-то делать, а потому нам надо сериализовать транзакции иначе, и существует FOR SHARE, FOR UPDATE дополнения. Потому они кстати и задокументированы в разделе Explicit Locking 📎 Подробнее прочитать можно тут @sqlhub

Кто круче нейросети? Только тот, кто ее обучает. Примите участие в бесплатном интенсиве «Погружение в Data Science: обучите с
Кто круче нейросети? Только тот, кто ее обучает. Примите участие в бесплатном интенсиве «Погружение в Data Science: обучите свою первую нейросеть за два дня» от онлайн-школы Skillfactory. С 19 по 20 марта будете знакомиться с: – сферой Data Science и ее направлениями; – элементарным анализом данных на Python; – алгоритмами машинного обучения. А за лучшее решение домашнего задания вы сможете получить подарок — мини-курс по аналитическому мышлению. Регистрируйтесь: https://go.skillfactory.ru/&erid=2Vtzqw16U2P Реклама. ООО «Скилфэктори», ИНН: 9702009530