Хит производительности с CLOB / TEXT? - PullRequest
2 голосов
/ 03 апреля 2009

У нас есть база данных с щедрым использованием типа данных CLOB / TEXT по всей схеме. После вчерашнего выполнения большого количества запросов к нескольким таблицам, имеющим тип CLOB, я пришел к выводу, что как только в предложении SELECT присутствует CLOB (даже если значение равно NULL / empty), запрос получает огромное снижение производительности.

У нас есть клиент-серверное приложение (не веб-приложение), которое развернуто на сайте клиента. Кроме того, мы поддерживаем несколько баз данных на бэкэнде, поэтому мы не можем выполнить специфичные для базы данных оптимизации в коде.

Отказ от CLOBs на самом деле не вариант.

Я понимаю, что большая часть оптимизации, необходимой для того, чтобы тип данных CLOB / TEXT был на сервере базы данных. Какие рекомендации я должен передать клиентам для этого?

Что я могу сделать как разработчик кода, чтобы ускорить запросы?

Ответы [ 2 ]

1 голос
/ 03 апреля 2009

Степень проблемы с производительностью зависит от базы данных. Но в целом можно ожидать, что большинство реализаций будут хранить данные CLOB в физически отдельном месте на диске от полей фиксированной ширины.

CLOB следует использовать экономно, только по мере необходимости, именно по этой причине. Если вам нужно использовать один, убедитесь, что вам не нужно возвращать много из них одновременно. Они лучше всего подходят, когда вам нужно получить только по одной за раз, например, когда вы просматриваете полную запись в вашем клиенте.

0 голосов
/ 03 апреля 2009

Для правильного ответа потребуется больше информации. В частности, не могли бы вы опубликовать примеры «медленных» запросов, а также структуру таблиц, к которым они обращаются?

Тем не менее, в общем случае CLOB не должны автоматически вызывать проблемы с производительностью.

Запросы с использованием условий на них будут медленными, поскольку CLOB обычно не могут быть проиндексированы. Их получение окажет влияние, если общий объем передаваемых данных станет большим. Но, помимо этих моментов, CLOB не должны существенно влиять на производительность (то есть наличие CLOB в таблице не должно повредить).

Это всего лишь общие замечания. Конечно, детали будут зависеть от используемой вами СУБД и ее конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...