SQL-запрос блокирует другой, хотя сеанс блокировки равен 0

Я вошел в систему из двух приложений, работающих в одной таблице, и выполнял две операции из двух программ, заставляя запускать исходные SQL-запросы. И одна операция заставляет другого застревать или работать очень медленно. Я нашел эти два вопроса долгое время вместе.

  1. выберите счет (*) из таблицы ....
  2. вставить в таблицу ......

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

1
добавлено отредактировано
Просмотры: 2
nl ja de
Вы также должны показать нам, как вы узнали, что сеанс блокировки равен 0 "
добавлено автор a_horse_with_no_name, источник
дополнительно: select и insert не должны блокировать друг друга (по крайней мере, не в современной СУБД)
добавлено автор a_horse_with_no_name, источник
Приложение использует oracle 10g db.
добавлено автор jetty, источник
Я увидел блокирующий сеанс 0, выполнив select * из v $ lock. можете ли вы рассказать мне о том, как я могу видеть блокировки, которые приобретаются в режиме реального времени.
добавлено автор jetty, источник
Показывать конфликтующие блокировки очень, очень специфично для СУБД. Вам нужно указать, какую СУБД вы используете. Информация в потоке точек для SELECT может быть очень актуальна для того, почему это занимает так много времени; предположительно, существует предложение WHERE, которое заставляет сканирование таблицы. Информация в потоке точек для инструкции INSERT также, вероятно, будет актуальной; это, вероятно, не простой список VALUES для одной строки. Существуют и другие факторы; уровень изоляции может быть проблемой. Если вы используете MySQL, вполне возможно также иметь значение для InnoDB и MyISAM. И т.п.
добавлено автор Jonathan Leffler, источник
@ user1957130 есть более дружественные взгляды, чем поиск в v $ lock. dba_blockers dba_waiters dba_dml_locks и dba_ddl_locks для начала.
добавлено автор DazzaL, источник

1 ответы

Я не думаю, что у вас есть проблемы с блокировкой, так как выбор не запрашивает никаких блокировок.

То, что вы можете испытывать, состоит в том, что выбор должен использовать предыдущие изображения, то есть значения перед вставкой (при условии, что вставка и выбор используют одну и ту же таблицу). Предыдущие изображения хранятся в сегментах отката, и доступ к ним несколько дорог.

Тем не менее, нет смысла запрашивать количество строк таблицы, которая находится в процессе заполнения. Что скажет вам результат? Это будет неправильно через микросекунду позже. Это говорит о том, что вы пересматриваете логику, лежащую в основе всего этого.

0
добавлено