Пересказ статьи Dmitry Romanoff. PostgreSQL. How do you find potentially ineffective indexes?
В то время как индексы в PostgreSQL могут значительно улучшить производительность запросов, особенно для тяжелых операций чтения, они полезны не во всех ситуациях.
Наличие слишком большого числа индексов на таблице PostgreSQL может оказать негативное влияние на производительность базы данных и потребление ресурсов.
Следующий запрос поможет вам найти потенциально неэффективные индексы.
Продолжить чтение "PostgreSQL. Как обнаружить потенциально неэффективные индексы?"
Пересказ статьи Deepak Mahto. PL/pgSQL Conversion Gotchas Cursors and Last Fetch
Курсоры баз данных являются одним из ключевых компонентов разработки. Мы используем их для перемещению по результатам запроса для обработки, которая диктуется бизнес-логикой или функциональностью. В Code Conversion код курсора всегда приходится переносить либо из PL\SQL или T-SQL в Pl\pgSQL, и некоторые особые соображения следует привлекать в качестве передовой практики, чтобы избежать непредвиденных сюрпризов или нарушения функциональности.
Если вы хотите разобраться с курсорами в Pl\pgSQL, советую обратиться к
официальной документации PostgreSQL, в которой подробно описывается большинство деталей.
В этом блоге мы рассмотрим сценарии, связанные с курсорами, которые отличаются от обработки их в Oracle. При преобразовании кода мы стремимся насколько это возможно придерживаться совместимости с целевым назначением. Однако в некоторых случаях, хотя код кажется идентичным, функциональность может измениться. Давайте рассмотрим здесь один такой случай.
Продолжить чтение "Проблемы преобразования PL/pgSQL: курсоры и последний Fetch"
Пересказ статьи Dileep kumar. PostgreSQL -Row level & Table level Locks
Пессимистичные блокировки в PostgreSQL
Пессимистичное блокирование представляет собой подход, когда мы предварительно запрашиваем блокировки на все записи, которые собираемся обновлять, и блокировки будут сняты, как только будет завершена транзакция. При использовании этого подхода мы можем применить строгий метод сериализации для одновременно выполняющихся запросов к данным.
Что такое блокировка
В мире баз данных блокировка является логическим объектом, который упорядочивает доступ к данным, когда два или более пользователей пытаются получить доступ к одним и тем же данным. Являясь развитой СУБД, PostgreSQL предоставляет несколько механизмов блокирования для обработки конкурентных запросов, что в конечном итоге обеспечивает большую согласованность данных.
В последующих разделах рассматриваются блокировки уровня строки, таблицы, сессии и транзакции.
Продолжить чтение "PostgreSQL - блокировки уровня строки и уровня таблицы"
§ На третий этап выставлена новая задача от pegoopik - 217 (2 балла). Прежняя задача 217 перенесена в головоломки под номером 263.
§ Популярные темы недели на форуме
Топик Сообщений Просмотров
5 (SELECT) 7 8
143 (SELECT) 5 4
91 (Learn) 2 8
35 (Learn) 2 13
76 (Learn) 2 4
Продолжить чтение "Новости за 2025-02-08 - 2025-02-14"
Пересказ статьи Erik Darling. Indexing SQL Server Queries For Performance: Fixing Windowing Functions
Ответом на проблемы производительности, связанные с ранжирующими оконными функциями, почти всегда было предложение просто включить пакетный режим (Batch Mode). Там, где это невозможно, вы могли прибегнуть к добавлению индексов.
Иногда, даже с пакетным режимом, предстояло проделать еще много дополнительной работы, но это действительно позволяет выполнить большую часть работы.
В этой статье я собираюсь разобраться со сложностью индексирования для ранжирующих оконных функций, когда имеются дополнительные причины индексирования, например, предикаты в предложениях JOIN и WHERE.
Я хочу вам показать ограниченность индексирования для решения проблем производительности ранжирующих оконных функций в построчном режиме (Row Mode). Это особенно болезненно для разработчиков, вынужденных использовать Standard Edition, где
пакетный режим безнадежно канул в Лету.
В некоторый момент количество данных, с которыми вы имеете дело, становится плохо подходящим для ранжирующих оконных функций, и больше смысла имеют другие подходы.
Конечно, есть множество вещей, которые делают другие оконные функции и которые простым переписыванием запросов не охватываются.
Вот несколько примеров:
Продолжить чтение "Индексация запросов SQL Server для производительности: исправление оконных функций"
Пересказ статьи Syed Hamed Raza. Mastering Python String Functions
Python, универсальный и мощный язык программирования, обладает богатым набором функций для манипуляции строками. Строки являются фундаментальным типом данных, представляющих собой последовательность символов. Понимание и владение строковыми функциями Python является ключом для эффективной обработки текста, манипуляции данными и общих навыков программирования. В этом руководстве мы рассмотрим различные строковые функции и их применение.
1. Базовые операции со строками
1.1 Конкатенация
Одной из наиболее востребованных операций со строками является конкатенация. Python позволяет соединять две и более строк с помощью оператора +.
str1 = "Hello"
str2 = "World"
result = str1 + " " + str2
print(result)
Hello World
Продолжить чтение "Освоение строковых функций Python"
Пересказ статьи Chad Callihan. MySQL INTO OUTFILE vs. INTO DUMPFILE
Я еще не писал о MySQL, так что настало время несколько разнообразить блог.
Есть пара разных способов экспорта данных с помощью запроса SELECT в MySQL: INTO OUTFILE и INTO DUMPFILE. Давайте используем образец базы данных Sakila в MySQL и проделаем несколько примеров, чтобы сравнить эти два варианта.
Продолжить чтение "MySQL INTO OUTFILE против INTO DUMPFILE"
§ Популярные темы недели на форуме
Топик Сообщений Просмотров
238 (SELECT) 4 4
5 (SELECT) 3 3
16 (Learn) 2 23
17 (Learn) 2 13
235 (SELECT) 2 4
§ Авторы недели на форуме
Автор Сообщений
pegoopik 6
DanRev 3
lutik 2
selber 2
Gambit87 2
Продолжить чтение "Новости за 2025-02-01 - 2025-02-07"
Пересказ статьи Virender Singla. Peek into Query Hash (query_id) in PostgreSQL
PostgreSQL имеет расширение с именем pg_stat_statements для отслеживания топовых SQL-запросов, которое издавна содержит столбцы queryid и query. Но pg_stat_activity приобрело столбец query_id, только начиная с версии PostgreSQL 14.
pg_stat_statements не захватывает выполняющиеся запросы SQL, а запросы нормализуются (удаляются константы и жестко закодированные значения) перед сохранением. Это означает, что SELECT pg_sleep(10); и SELECT pg_sleep(20); будут иметь единственную запись в виде SELECT pg_sleep($1);.
Вы видели когда-нибудь, чтобы в pg_stat_statements было две записи для одних и тех же query, userid, dbid, но с разными queryid?
Продолжить чтение "Загляните в хэш запроса (query_id) в PostgreSQL"
Пересказ статьи Brent Ozar. Does Your GROUP BY Order Matter?
Иногда, когда вы используете GROUP BY, порядок столбцов имеет значение. Например, эти два запроса SELECT дают разные результаты:
CREATE INDEX Location_DisplayName
ON dbo.Users(Location, DisplayName);
SELECT TOP 100 Location, DisplayName, COUNT(*) AS Duplicates
FROM dbo.Users
GROUP BY Location, DisplayName
ORDER BY Location, DisplayName;
SELECT TOP 100 DisplayName, Location, COUNT(*) AS Duplicates
FROM dbo.Users
GROUP BY DisplayName, Location
ORDER BY DisplayName, Location;
Их действительные планы выполнения существенно разнятся:
Продолжить чтение "Имеет ли значение порядок в GROUP BY?"
§ Претенденты на попадание в TOP 100
Рейтинг Участник (решенные задачи, время в днях)
218 curiouser (102, 60.864)
223 __Sai (114, 368.421)
268 lea_22 (93, 2999.637)
286 wad881988 (68, 7.903)
314 Evgenishka (91, 561.696)
362 Sa1avat (78, 25.970)
Продолжить чтение "Новости за 2025-01-25 - 2025-01-31"
Пересказ статьи Lorenzo Uriel. Everything you Need to Know About Index in SQL Server
Цель настоящей статьи - рассказать просто об индексах в SQL Server, объяснив фундаментальные понятия и предложив практические советы по обслуживанию.
Я обязуюсь обеспечить легкое и быстрое чтение, упрощающее понимание этого важного аспекта в области баз данных и управлении запросами.
Темы
- Обзор индексов
- Типы индексов в SQL Server
- Кластеризованные индексы.
- Некластеризованные индексы.
- Поколоночный и построчный индексы.
- Фрагментация индексов
- Внутренняя и внешняя.
- Перестройка и реорганизация.
Продолжить чтение "Все, что вам нужно знать об индексе в SQL Server"
Пересказ статьи Julien Van Beveren. Forcing the Postgres query planner into using the correct index using OFFSET 0
MySQL имеет возможность применять хинт USE INDEX для указания, какие индексы использовать при выполнении конкретного запроса. PostgreSQL не имеет такой особенности, полагая, что он лучше знает, когда и какие индексы использовать.
Перед выполнением запроса PostgreSQL строит "план". Это сложный процесс, который я хотел бы понимать досконально, но планировщик запросов главным образом смотрит на существующие индексы, распределение данных и фильтры запроса, чтобы найти различные способы вернуть затребованные вами данные. Затем он оценивает "стоимость" каждой операции и выполняет "самый дешевый" план. Это работает отлично до тех пор, пока не...
Продолжить чтение "Принудительное использование планировщиком запросов Postgres правильного индекса с помощью OFFSET 0"
Пересказ статьи Steve Jones. Friday Flyway Tips – Inserting Column in the Middle of a Table
Заказчик мне задал вопрос, может ли Flyway Desktop (FWD) вызвать проблемы, если разработчики добавили столбцы в середину таблицы. Это обоснованное беспокойство, и данная статья показывает, что FWD не вызывает проблем, даже если ваши разработчики глупят.
Если только они не захотят это сделать специально.
Я много работал с Flyway Desktop с тех пор, как мы перешли с устаревших плагинов для SSMS на автономный инструмент.
Сценарий
Представим, что у вас есть подобная таблица с несколькими столбцами.
CREATE TABLE Product
( ProductID INT NOT NULL CONSTRAINT ProductPK PRIMARY KEY
, ProductName VARCHAR(50)
, ProductDesc VARCHAR(1000)
, ProductSize CHAR(1)
, ProductWeight INT
, ProductColor VARCHAR(20)
, StatusID int
)
GO
Эта таблица имеет одинаковую структуру на сервере разработки и на продакшене, и мне нужно добавить новый столбец. Нам необходимо знать количество в упаковке, поскольку у новых товаров в коробке содержится несколько штук, так что необходимо добавить в таблицу столбец ProductQtyPerUnit.
Продолжить чтение "Вставка столбца в середину таблицы"
§ Лидеры недели
Участник w_sel all_sel select dml Всего Рейтинг
Новиков С.В. (@Ser589QA) 18 56 30 0 30 894
Chuvstvin M. (chuvstvinmaxim) 5 144 12 0 12 112
Bulyakarov S. (Sa1avat) 4 70 11 0 11 422
Ikramov R. (ARNET) 5 74 8 19 27 459
Хохлов А.В. (rald6839) 6 63 8 6 14 731
Ivanov A. (aiwannafly7) 4 4 6 7 13 5626
Корнеева Е. (Evgenishka) 2 88 4 0 4 332
Турласов Е.Х. (lilyanchik) 3 3 4 0 4 9073
Продолжить чтение "Новости за 2025-01-18 - 2025-01-24"