Таблица DB2 LUW заблокирована во время чтения - PullRequest
0 голосов
/ 05 марта 2020

В моей базе данных есть многораздельная таблица диапазонов, она разбита на столбцы с датами: транзакция_дата, с 1 разделом в 1 месяц.

Теперь моя проблема: При выполнении оператора SQL для чтения данные из таблицы

select col1,col2 from mytable where ID=1

Моя таблица очень большая, поэтому от SQL до конечного sh уходит много времени. Однако есть еще одно задание ETL для одновременного вставления (добавления) данных в таблицу, операция вставки не может начаться до тех пор, пока не закончится чтение SQL.

Любые предложения, которых можно избежать при чтении данных ? Также есть ли какие-либо официальные документы IBM относительно этой проблемы?

** EDIT 1:

$ db2level
DB21085I  This instance or install (instance name, where applicable:
"db2inst1") uses "64" bits and Db2 code release "SQL11011" with level
identifier "0202010F".

Informational tokens are "DB2 v11.1.1.1", "s1610100100", 
"DYN1610100100AMD64", and Fix Pack "1".

Product is installed at "/opt/ibm/db2/v11.1". 

$ db2set -all
[i] DB2COMM=TCPIP
[i] DB2AUTOSTART=TRUE
[i] DB2OPTIONS=+c
[g] DB2FCMCOMM=TCPIP4
[g] DB2SYSTEM=<server hostname>
[g] DB2INSTDEF=db2inst1

** EDIT 2:

Для выбора и загрузки SQL Скажите, я не указываю какой-либо уровень изоляции.

Для задания ETL это задание IBM DataStage, вставка ETL - это операция добавления массовой загрузки для вставки данных в существующий диапазон.

1 Ответ

0 голосов
/ 05 марта 2020

Вы можете использовать административное представление MON_LOCKWAITS , чтобы проверить, что происходит во время такой ситуации блокировки. При желании вы можете отформатировать блокировку с помощью функции MON_FORMAT_LOCK_NAME, чтобы получить более подробную информацию об этом.

SELECT 
  W.*
--, F.NAME, F.VALUE
FROM SYSIBMADM.MON_LOCKWAITS W
--, TABLE(MON_FORMAT_LOCK_NAME(W.LOCK_NAME)) F
--WHERE W.REQ_APPLICATION_HANDLE = XXX -- if you know the holder's handle to reduce the amount of data returned
ORDER BY W.LOCK_NAME
;
...