2010-06-17 2 views
0

У нас есть приложение в Silverlight, WCF, NHibernate. В настоящее время он поддерживает базу данных SQL Servve и Oracle.Проблема с производительностью приложений: SqlServer & Oracle

Поскольку это огромные данные, он работает нормально на SQL Sevrer. Но в Oracle он работает очень медленно.

Для одной функциональности требуется 5 секунд для выполнения на SQL Server и 30 секунд для Oracle. Я не могу понять, что будет проблемой.

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

1) База данных: содержит одну базовую таблица содержит столбец типа

SQLServer: [Текст]

Oracle: [NCLOB]

2) Структура базы данных является слишком много нормализованы.

Может быть, в oracle я использовал NCLOB, это и есть причина производительности. Я имею в виду, я не знаю подробностей об этом ....

Может кто-нибудь, пожалуйста, дайте мне знать, что будет причиной? Или Какие действия мне нужно, чтобы улучшить производительность, равную SqlServer.?

Заранее спасибо. Mahesh.

ответ

0

Во-первых, NCLOB и текст не эквивалентны. Измените NCLOB на NVARCHAR2 и повторите тесты. Также убедитесь, что для Oracle есть аналогичные индексы, чтобы тесты были справедливыми. Oracle должен легко работать так же быстро, как SQL Server.

True, полностью нормализованный может быть медленным для поиска, поскольку вам может потребоваться СОХРАНИТЬ на многих столах, но быстро для вставок, поскольку вам нужно только вставить его в одно место. Вы должны добиться баланса. Проанализируйте, как используется ваша база данных, и сделайте выбор. Возможно, помощь может помочь только денормализация пары таблиц для повышения производительности.

Что я сделал в нашей базе данных наших компаний, это создать хранилище мини-данных, в котором мы полностью сохраним основные таблицы, а затем сохраненный процесс выполняет тяжелую работу по объединению многих таблиц и добавлению их данных в таблицу хранилища данных , Веб-сайт теперь невероятно быстро, так как он просто просматривает данные в одной таблице. Попробуйте что-то подобное.

0

Как сказал Саймон, измените NCLOB на NVARCHAR2, а затем проверьте.
Если это не поможет попробовать следующее:

  • проверить, если соединение правильно настроено - по вопросу командной строки TNSPING myserver. Это покажет, есть ли проблемы с задержкой в ​​сети.
  • Откройте Oracle Enterprise Manager и перейдите на вкладку производительности. Там вы найдете несколько индикаторов, которые могут показать вам узкие места.Смотрите это два первые:
    • Проверить Advisor Central для всех трудоемких операций (не только SQL, но и всех других проблем, которые могут быть вызваны неоптимальной конфигурацией)
    • Check Top активности, чтобы увидеть, какие запросы использует большинство из ресурсы - там вы найдете SQL, планы выполнения и Tunning предложения

Если это не поможет, найти компетентных администраторов баз данных.

Смежные вопросы