Читать большое количество записей (Пакетное чтение) DB2 - PullRequest
0 голосов
/ 20 марта 2019

Привет! Мне нужно читать последовательно, без особой фильтрации большого количества данных из таблицы DB2.Чтобы парализовать READ, я сначала читаю все элементы из индекса с хорошей мощностью (не слишком много дубликатов), затем делю их на списки по 100, а затем использую

SELECT from TABLE where mycolumn in ('value1','value2'....'value100') with UR

После включенияПри трассировке некоторых SQL-запросов выясняется, что для результирующего набора из 5000 записей:

User CPU: 0.032192 seconds
System CPU: 0.003841 seconds

DB2 находится на SSD-диске.Почему это занимает 32 мс времени пользователя?

На стороне Java я настроил драйвер JDBC для использования ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY

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

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

1 Ответ

0 голосов
/ 20 марта 2019

Попробуйте следующий подход:

Select *
from TABLE t
where mod(mycolumn, N)=x

N - количество параллельных потоков
x - [0, N-1] - номер потока

Если у вас нет mycolumn с достаточным количеством элементов, попробуйте выражение rid(t) вместо mycolumn.

rid Справочник по функциям.

...