Проблема производительности приложения: SqlServer & Oracle - PullRequest
0 голосов
/ 17 июня 2010

У нас есть приложение в Silverlight, WCF, NHibernate. В настоящее время он поддерживает базы данных SQL Serve и Oracle.

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

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

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

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

SQLServer: [Текст]

Oracle: [NCLOB]

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

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

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

Спасибо заранее. Махеш.

Ответы [ 2 ]

0 голосов
/ 17 июня 2010

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

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

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

0 голосов
/ 17 июня 2010

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

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

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

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