приветствую.
версия:
+ |
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production PL/SQL Release 11.2.0.4.0 - Production CORE 11.2.0.4.0 Production TNS for Linux: Version 11.2.0.4.0 - Production NLSRTL Version 11.2.0.4.0 - Production
|
столкнулся с такой проблемой, что время выполнения некоторых однотипных DML операторов значительно выше их средней по больнице
сразу пример, приложение в какой-то момент времени решает 50 раз выполнить оператор(меняя бинды)
лог этого приложения показывает такую картинку
+ |
...... UPDATE CUSTOMER_BALANCE SET MOD_NUM = MOD_NUM + 1, UPDATED_USER = :1, CHANGED_DATE = :2, AMOUNT_SPENT = AMOUNT_SPENT + :3 WHERE REC_ID = :4 DBSQLLogger Bind variable 1: 5 DBSQLLogger Bind variable 2: 10/20/2015 09:30:27 DBSQLLogger Bind variable 3: 170 DBSQLLogger Bind variable 4: 76534
***** SQL Statement Write Time: 0.010 seconds *****
UPDATE CUSTOMER_BALANCE SET MOD_NUM = MOD_NUM + 1, UPDATED_USER = :1, CHANGED_DATE = :2, AMOUNT_SPENT = AMOUNT_SPENT + :3 WHERE REC_ID = :4 DBSQLLogger Bind variable 1: 5 DBSQLLogger Bind variable 2: 10/20/2015 09:30:27 DBSQLLogger Bind variable 3: 200 DBSQLLogger Bind variable 4: 76535
***** SQL Statement Write Time: 0.947 seconds *****
UPDATE CUSTOMER_BALANCE SET MOD_NUM = MOD_NUM + 1, UPDATED_USER = :1, CHANGED_DATE = :2, AMOUNT_SPENT = AMOUNT_SPENT + :3 WHERE REC_ID = :4 DBSQLLogger Bind variable 1: 5 DBSQLLogger Bind variable 2: 10/20/2015 09:30:27 DBSQLLogger Bind variable 3: 80 DBSQLLogger Bind variable 4: 76536 ***** SQL Statement Write Time: 0.003 seconds ***** ......
REC_ID - primary key по 4ем изменяемым полям индексов нет триггеров нет таблица партиционирована по полю, которое тут не представлено(некий хеш от номера счета), но все изменяемые строки в одной партиции все операции выполняются последовательно за исключением одной представленной, время выполнения каждой из 49и операций не превышает 0.012 секунды таблица с ее индексами весит на текущий момент 146 Gb
|
помогите, пожалуйста, понять, откуда всплывает такое аномальное и выделяющееся на фоне остальных время выполнения
дополнительные переменные:
подобное поведение наблюдается на операциях обновления и инсерта, т.е. бывает так, что инсерт(все так же с биндами) работает 0.012 секунды, а тут бац и 0.650 секунд
подобное поведение наблюдается не только на этой таблице
не все таблицы где наблюдается это поведение побиты на партиции, есть и обычные в виде кучки
есть ряд явных косвенных причин, по которым я считаю что дело не в блокировках, но не могу быть уверенным на 100%
на тестовых средах(бд там в десятки раз меньше) повторить это поведение не получается
буду рад выслушать любые посылы в сторону того как и куда мне в этой ситуации копать, что бы добраться до истины