Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Проблемы и решения для повышения производительности работы с доменными типами данных после миграции на UniDAC 5.0

Delphi , Базы данных , SQL

При работе с базой данных на языке программирования Delphi и Pascal часто возникают задачи, связанные с оптимизацией производительности. Одна из таких проблем связана с использованием компонентов UniDAC для работы с базами данных, в частности, с ухудшением производительности после миграции с версии 4.1 на версию 5.0.

Описание проблемы

После обновления с UniDAC 4.1 до версии 5.0 пользователи столкнулись с существенным падением производительности в процедурах загрузки данных. Это проявлялось в том, что одни и те же запросы выполнялись значительно дольше, особенно при работе с доменными типами данных. Например, запрос, выбирающий информацию о типах данных, в новой версии UniDAC выполнялся более 1,100,000 раз для вставки 210,000 записей в базу данных.

Пример минимального воспроизводимого приложения

program minProject;
{$APPTYPE CONSOLE}
uses
Messages, SysUtils, Variants,
DB, DBAccess, Uni, UniProvider, PostgreSQLUniProvider;
const text = 'insert into test_table (id) values (:id)';
var
qu:TUniQuery;
PostgreSQL: TPostgreSQLUniProvider;
UniConnection1: TUniConnection;
i: Integer;
ids: Variant;
begin
UniConnection1 := TUniConnection.Create(nil);
PostgreSQL := TPostgreSQLUniProvider.Create(UniConnection1);
UniConnection1.ProviderName := 'PostgreSQL';
UniConnection1.Username := '';
UniConnection1.Password := '';
UniConnection1.Server := '';
UniConnection1.Database := 'test';
UniConnection1.SpecificOptions.Values['ProtocolVersion'] := 'pv30';
ids := VarArrayOf([41750, 41751, 41752]);
qu := TUniQuery.Create(UniConnection1);
qu.Connection := UniConnection1;
qu.SQL.Text := text;
qu.Prepare;
for I := 0 to 2 do
begin
qu.ParamByName('id').AsInteger := ids[i];
qu.Execute;
end;
qu.Close();
end.
// Создание доменного типа и таблицы для демонстрации
CREATE DOMAIN id_dom AS integer NOT NULL;
CREATE TABLE test_table (id id_dom);

При использовании обычных типов данных проблем не наблюдалось.

Подтвержденное решение

Разработчики UniDAC выяснили, что проблема связана с добавленной в версии 5.0 поддержкой доменных типов, которая отсутствовала в версии 4.1. Это привело к необходимости запроса дополнительных метаданных от базы данных. В результате было выпущено обновление UniDAC 5.0.2, содержащее исправление, улучшающее производительность при работе с доменными типами. Теперь UniDAC работает с той же скоростью, что и версия 4.6.12, даже если запрос содержит поля с доменными типами данных.

Рекомендации для пользователей

  1. Обновите UniDAC до последней версии (5.0.2).
  2. Проверьте, используются ли в вашем приложении доменные типы данных.
  3. При необходимости оптимизируйте запросы и настройки соединения с базой данных.

Следуя этим шагам, вы сможете избежать падения производительности и использовать возможности UniDAC для эффективной работы с базами данных.

Создано по материалам из источника по ссылке.

производительности при работе с доменными типами данных в компоненте UniDAC 5.0 после миграции из версии 4.1 и найденное решение, улучшающее работу через обновление до версии 5.0.2.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: SQL ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-10 16:54:56/0.0034990310668945/0