Пользователи PostgreSQL нередко оперируют аналитическими запросамиЧитать полностью »
Рубрика «оптимизация запросов»
Ускоряем запросы в PostgreSQL, оптимизируя оператор GROUP BY
2024-11-19 в 13:55, admin, рубрики: data management, database optimization, efficiency, postgresql, sql, оптимизация запросов, сортировка запросовНейронные оптимизаторы запросов в реляционных БД (Часть 2): На пути к продуктивизации
2024-10-04 в 11:24, admin, рубрики: AQO, Bao, KNN, машинное обучение, многорукие бандиты, нейросети, обучение с подкреплением, оптимизация, оптимизация запросовВведение
Нейронные оптимизаторы запросов в реляционных БД (Часть 1)
2024-09-09 в 10:54, admin, рубрики: deep q-learning, postgresql, Q-learning, машинное обучение, нейросети, оптимизация, оптимизация запросов, оптимизация плана, СУБДВведение
Ускоряем приложение: никаких фреймворков — только математика
2023-05-02 в 11:46, admin, рубрики: highload, Алгоритмы, Блог компании Конференции Олега Бунина (Онтико), Блог компании Почтатех, высокая производительность, высоконагруженные приложения, Микросервисная архитектура, микросервисы, оптимизация запросовПредставьте, что вам нужно ускорить работу огромной легаси-системы с 50 микросервисами, нагрузка на которую выросла в 2000 раз. При этом она обрабатывает затратные по времени операции, которые зависят друг от друга в плане данных.
Алгоритмы балансировки нагрузок
2023-05-01 в 13:25, admin, рубрики: ruvds_перевод, Алгоритмы, балансировка нагрузки, балансировщик нагрузки, Блог компании RUVDS.com, веб-серверы, оптимизация запросов, Серверная оптимизация, Серверное администрированиеРано или поздно веб-приложения перерастают среду одного сервера. Компаниям требуется увеличить или их доступность, или масштабируемость, или и то, и другое. Чтобы сделать это, они развёртывают своё приложение на нескольких серверах и ставят перед ним балансировщик нагрузок для распределения входящих запросов. Чтобы справляться с нагрузками, большим компаниям могут потребоваться тысячи серверов, на которых запущено веб-приложение.
В этом посте мы рассмотрим способы, которыми один балансировщик нагрузок может распределять HTTP-запросы на множество серверов. Мы начнём снизу и проделаем весь путь вверх до современных алгоритмов балансировки нагрузок.
Читать полностью »
Разработчик в стране DBA: как оптимизация запросов БД окончилась обнаружением «подводных камней» и багрепортом в MariaDB
2022-01-05 в 7:00, admin, рубрики: backend, mariadb, performance, php, sql, базы данных, Блог компании SuperJob, высокая нагрузка, высокая производительность, оптимизация запросов, ускорение сайтаЭта история про то, как искать виновника торможения запросов, если база и бэкенд переводят стрелки друг на друга; почему при обновлении базы не стоит раньше времени завершать нагрузочное тестирование; а также о том, что не всегда во встроенных инструментах оказываются те, что упомянуты в документации.
Ну а начиналось все очень мирно: мы хотели немного подтянуть сайт под обновленные требования Google.
varchar(max)-varchar(max) и в продакшн
2020-02-20 в 9:39, admin, рубрики: Microsoft SQL Server, sort, sql server, оптимизация запросов, памятьНедавно поучаствовал в дискуссии на тему влияния на производительность указания длины в столбцах с типом nvarchar. Доводы были разумны у обеих сторон и поскольку у меня было свободное время, решил немного потестировать. Результатом стал этот пост.
Спойлер – не всё так однозначно.
Все тесты проводились на SQL Server 2014 Developer Edition, примерно такие же результаты были получены и на SQL Server 2016 (с небольшими отличиями). Описанное ниже должно быть актуально для SQL Server 2005-2016 (а в 2017/2019 требуется тестирование, поскольку там появились Adaptive Memory Grants, которые могут несколько исправить положение).
Нам понадобятся – хранимая процедура от Erik Darling sp_pressure_detector, которая позволяет получить множество информации о текущем состоянии системы и SQL Query Stress – очень крутая open-source утилита Adam Machanic/Erik Ejlskov Jensen для нагрузочного тестирования MS SQL Server.
О чём вообще речь
Вопрос, на который я стараюсь ответить – влияет ли на производительность выбор длины поля (n)varchar (далее везде просто varchar, хотя всё актуально и для nvarchar), или можно использовать varchar(max) и не париться, поскольку если длина строки < 8000 (4000 для nvarchar) символов, то varchar(max) и varchar(N) хранятся IN-ROW.
Читать полностью »
История одного SQL расследования
2019-06-12 в 13:55, admin, рубрики: postgresql, postrgresql, sql, оптимизация запросовВ декабре прошлого года я получил интересный отчет об ошибке от команды поддержки VWO. Время загрузки одного из аналитических отчетов для крупного корпоративного клиента казалось непомерно большим. А так как это сфера моей ответственности, я тут же сосредоточился на решении проблемы.
Предыстория
Чтобы было понятно о чём речь, я расскажу совсем немного о VWO. Это платформа, с помощью которой можно запускать разные таргетированные кампании на своих сайтах: проводить A/B эксперименты, отслеживать посетителей и конверсии, делать анализ воронки продаж, отображать тепловые карты и проигрывать записи визитов.
Но самое главное в платформе — составление отчетов. Все вышеперечисленные функции связаны между собой. И для корпоративных клиентов, огромный массив из информации был бы просто бесполезен без мощной платформы, представляющей их в виде для аналитики.
Используя платформу, можно сделать произвольный запрос на большом наборе данных. Вот простенький пример:
Показать все клики на странице "abc.com" ОТ <даты d1> ДО <даты d2> для людей, которые использовали Chrome ИЛИ (находились в Европе И использовали iPhone)
Обратите внимание на булевы операторы. Они доступны для клиентов в интерфейсе запроса, чтобы делать сколь угодно сложные запросы для получения выборок.
Медленный запрос
Клиент, о котором идет речь, пытался сделать что-то, что интуитивно должно работать быстро:
Покажи все записи сессий для пользователей посетивших любую страницу с урлом, где есть "/jobs"
На этом сайте было огромное количество трафика, и мы хранили более миллиона уникальных URL-адресов только для него. И они хотели найти довольно простой шаблон урла, относящегося к их бизнес-модели.
Нескучные запросы с Django ORM Annotate и Query Expressions
2017-04-12 в 3:46, admin, рубрики: django, postgresql, python, оптимизация запросовБыло когда-то время, когда ORM Django считалась очень милой, но абсолютно глупой. Хотя, возможность производить Annotate и Aggregate были в ней с незапамятных времён. А в версии 1.8 добавилась возможность применять функции базы данных внутри Query Expressions. И, разумеется, если начинающий джангист не испугался и дочитал вступление до этих строк, он может смело читать дальше: статья ориентирована именно на начинающих.
Некоторое время назад передо мной встала задача: выбрать из таблицы значения по пользователям. Причём, эти значения должны соответствовать определённому регулярному выражению. Но и это не конец условия: из выбранных выражений нужно вытащить substring. Опять же, по регулярке. Сделал я это довольно быстро, и захотелось поделиться опытом с тем, кто ещё не может применять Annotate и Query Expressions на практике