Как в Oracle БД измерить размер/объем данных в выборке/селекте
При селекте в таблице в БД Oracle выводятся различные столбцы с разными типами данных, в основном varchar2, number,date,rowid. Как правильно установить размер в Мб определенной выборки?
Ответы (1 шт):
Автор решения: shane54
→ Ссылка
Не уверен что точно правильно понял вопрос. Тогда ответ можно разделить на два, например на вот таких:
- "сколько трафика затрачено на заполнение грида на форме" (или просто выполнение запроса и fetch до последней строки в любом клиенте, что в SQL-Plus, что в любой графической IDE вроде SQL Developer и прочих) - типа 100 строк на экране появилось после нажатия на кнопку на форме - пришло (по сети) 5 МБ например. Это можно вычислить через дельту из предствления V$SESSTAT для анализируемой сессии, замеряя значения для метрики "bytes sent via SQL*Net to client". Запоминаем текущее значение, жмём кнопку на форме / как-то иначе выполняем запрос, форма заполняется / результат появляется на экране - снова берём значение из V$SESSTAT, и из второго вычитаем первое (потому что вьюшка эта кумулятивная, суть накапливает значения метрик). Вот и всё - результат будет в байтах.
- Вторая версия - "сколько занимает информация на экране", тогда для всех полей выполняем функцию LENGTH(), суммируем, ну и умножаем на количество строк. С идеей что каждый символ или цифра на экране - это один байт (или 2-4 байта, если всякие Unicode-кракозябры)
P.S. Тут скорее интересен вопрос - зачем может быть нужно знать то что Вы спрашиваете :)