Я работаю над некоторыми проблемами производительности Oracle в нашем веб-приложении. Одна вещь, которую я заметил, которая, кажется, запутывает любые виды тестов, это то, что простые запросы, которые возвращают много результатов, все еще очень медленные. Один пример:
select * from TPM_PROJECTWORKGROUPS;
Когда я запускаю его, я получаю:
5825 record(s) selected [Fetch MetaData: 0ms] [Fetch Data: 59s]
[Executed: 9/22/2011 1:52:38 PM] [Execution: 203ms]
Если я правильно понимаю, это означает, что для выполнения фактического запроса потребовалось 203 мс, но потребовалось 59 секунд для того, чтобы эти данные были возвращены клиенту, это означает, что в данном случае означает «выборка»?
У меня нет доступа для прямого подключения к компьютеру базы данных и локального выполнения запроса, но можно ли предположить, что виновником является фактическая пропускная способность сети? Это имеет смысл, поскольку я нахожусь в Сиэтле, а сервер - в Нью-Йорке, но минута для 5800 строк кажется довольно медленной.
Есть ли какой-нибудь быстрый совет для а) подтверждения того, что пропускная способность сети действительно является проблемой, и б) каких-либо "ошибок" или вещей, которые нужно проверить, почему сериализация данных по проводам такая медленная? Спасибо!
Несколько обновлений на основе комментариев:
ВЫБРАТЬ СЧЕТЧИК (*) ОТ (выберите * из TPM_PROJECTWORKGROUPS) t;
Результаты:
1 record(s) selected [Fetch MetaData: 0ms] [Fetch Data: 0ms]
[Executed: 9/22/2011 2:16:08 PM] [Execution: 219ms]
И если я попытаюсь выбрать только один столбец:
ВЫБРАТЬ ПРОЕКТ ИЗ TPM_PROJECTWORKGROUPS;
Результаты:
5825 выбранных записей [Fetch MetaData: 0ms] [Fetch Data: 1m 0s]
[Выполнено: 22.09.2011 14:17:20] [Выполнено: 203мс]
Схема таблицы:
ПРОЕКТ (НОМЕР)
РАБОЧИЙ ГРУПП (НОМЕР)