Пересказ статьи Simon Liew. Optimize SQL LIKE Wildcard Searches
Полный поиск по шаблону (например, LIKE '%поисковая_фраза%') в Microsoft SQL Server может быть медленным и неэффективным, поскольку гарантируется сканирование всех строк в таблице. Имеются ли какие-нибудь варианты оптимизации запросов с оператором SQL LIKE?
Оптимизация независимого от регистра полного поиска по шаблону с начальным и конечным подстановочным знаком является проблемой в базах данных SQL - эти шаблоны LIKE не получают выгоды от индексирования. Здесь исследуются потенциальные варианты оптимизации такого поиска и проверяются распространенные заблуждения.
Continue reading "Оптимизация поиска при использовании SQL LIKE с подстановочными знаками"
Пересказ статьи Brent Ozar. How Many Indexes Is Too Many?
Давайте начнем с
базы данных Stack Overflow (будет работать версия любого размера), удалим все индексы на таблице Users и выполним DELETE:
SET STATISTICS IO ON;
GO
BEGIN TRAN
DELETE dbo.Users WHERE DisplayName = N'Brent Ozar';
Я использую SET STATISTICS IO ON, о чем мы говорили в статье
"Как думать подобно серверу SQL Server" для иллюстрации количества прочитанных данных, и я делаю это в транзакции, которую я могу периодически откатывать, каждый раз демонстрируя полученные эффекты. Вот действительный план выполнения:
Continue reading "Слишком много индексов — это сколько?"
Пересказ статьи Jeyaram Ayyalusamy. 09 - PostgreSQL 17 Performance Tuning: How Updates and VACUUM Affect Storage
Модель хранения в PostgreSQL отличается от многих других баз данных. Вместо переписывания строки по месту, PostgreSQL создает новые версии строк при обновлении данных. Эта схема хороша для безопасности транзакций и параллелизма, но при этом влияет на размер таблицы и VACUUM приобретает важное значение для производительности.
Давайте пошагово пройдем тестовый пример, чтобы увидеть, как это работает на практике.
Отключение autovacuum (только для тестирования)
PostgreSQL обычно выполняет фоновый процесс, который называется autovacuum, для очистки мертвых кортежей и предотвращения раздувания таблиц.
- Для реальных приложений выключение autovacuum не рекомендуется, поскольку это критически важно для работоспособности базы данных.
- Но в целях тестирования он может быть выключен для конкретной таблицы для гарантии, что ничего не будет происходить автоматически в фоновом режиме.
Это позволяет нам в точности наблюдать, как PostgreSQL управляет хранилищем.
Continue reading "Настройка производительности в PostgreSQL 17: как обновления и VACUUM влияют на хранилище"
Пересказ статьи Dmitry Romanoff. Understanding MySQL Process List Queries: A Guide to Monitoring and Optimizing Performance
Таблица MySQL information_schema.processlist предоставляет большой объем информации о текущем состоянии сервера MySQL. Она важна для администраторов и разработчиков баз данных, чтобы мониторить эти данные для обеспечения оптимальной производительности и диагностики потенциальных проблем. В этой статье мы познакомимся с несколькими запросами MySQL, предназначенными для извлечения полезных идей из списка процессов, и обсудим, насколько они могут помочь нам в мониторинге и оптимизации сервера MySQL.
1. Просмотр всех процессов
Чтобы получить исчерпывающий обзор всех текущих процессов на сервере MySQL, вы можете использовать следующий запрос:
SELECT * FROM information_schema.processlist;
Continue reading "Понимание запросов списка процессов MySQL: руководство по мониторингу и оптимизации производительности"