Я работаю над некоторыми проблемами производительности 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 секунд, чтобы эти данные были возвращены клиенту, в том смысле, что было ли в данном случае «Fetch» средством?
У меня нет доступа для прямого подключения к компьютеру с базой данных и локального выполнения запроса, но можно ли предположить, что виновата сама фактическая пропускная способность сети? Это имеет смысл, поскольку я нахожусь в Сиэтле, а сервер в Нью-Йорке, но все же минута для 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 записей [Извлечь метаданные: 0 мс] [Извлечь данные: 1 мин 0 с]
[Выполнено: 9 / 22/2011 14:17:20 PM] [Выполнение: 203 мс]
Схема таблицы:
PROJECTID (NUMBER) WORKGROUPID (NUMBER)