Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Блокируется таблица InnoDB при INSERT или UPDATE / 6 сообщений из 6, страница 1 из 1
16.10.2016, 21:04
    #39327843
Gamletus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокируется таблица InnoDB при INSERT или UPDATE
Всем привет. Сразу скажу, что очень не опытен в базах данных, поэтому прошу объяснить что делать в моей ситуации.
Прочитал, что таблицы InnoDB блокируется на уровне строк, а не всей таблицы. Поэтому работаю именно с InnoDB.
Есть некая таблица со столбцами ID и NAME
В этой таблице уже есть 1000 записей, у которых NAME = Вася
Далее я одним PHP-скриптом генерирую 100.000 вставок новых строк в эту таблицу, т.е. INSERT, при этом ID автоматический, а NAME = Петя
Пока идёт эта вставка я другим скриптом делаю выборку 10 записей, т.е. SELECT при этом NAME = Вася
Но почему-то выборка НЕ идёт до тех пор, пока не закончатся INSERTы
---
Тоже самое происходит когда делаю UPDATE того же количества записей, при этом апдейт идёт по ID (я намеренно затрагиваю те ID, которые не имеют отношения к NAME = Вася) и снова нет возможности прочитать строки с NAME = Вася пока не закончатся апдейты.
-----------------------
Очень прошу подсказать что я делаю не так и почему блокируется вся таблица при INSERT или UPDATE, и если можно простым доступным языком.
...
Рейтинг: 0 / 0
16.10.2016, 21:10
    #39327845
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокируется таблица InnoDB при INSERT или UPDATE
Gamletus,

как скрипты запускаете? А то сейчас окажется, что браузера и оба скрипта дёргают session_start. Ну это очевидная грабля.
Менее очевидная - профилируйте, действительно ли ждёте именно ответ на запрос, а не что-нибудь ещё именно на стороне скрипта.
...
Рейтинг: 0 / 0
16.10.2016, 21:20
    #39327848
Gamletus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокируется таблица InnoDB при INSERT или UPDATE
Melkijкак скрипты запускаете? А то сейчас окажется, что браузера и оба скрипта дёргают session_start. Ну это очевидная грабля.Вообще-то именно так и делаю )) открываю две вкладки браузера по одной на каждый скрипт и в обоих действительно есть session_start ))
...
Рейтинг: 0 / 0
16.10.2016, 21:44
    #39327858
Gamletus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокируется таблица InnoDB при INSERT или UPDATE
Попробовал сейчас проделать тоже самое с разных браузеров и всё просто супер - блокировки нет. Пока в одном браузере идёт вставка или обновление, в другом без всяких проблем идёт выборка из этой же таблицы. Спасибо за помощь ))
P.S. Если бы вместо InnoDB была таблица MyISAM, то блокировка всей таблицы была бы всё равно даже при работе с разных браузеров?
...
Рейтинг: 0 / 0
16.10.2016, 22:02
    #39327863
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокируется таблица InnoDB при INSERT или UPDATE
Ну так вот, session_start до явного или неявного (при завершении скрипта) вызова session_write_close блокирует выполнение параллельных запросов с этому же session id.

GamletusЕсли бы вместо InnoDB была таблица MyISAM, то блокировка всей таблицы была бы всё равно даже при работе с разных браузеров?
На самом деле, при некоторых условиях insert в myisam бывает неблокирующий.
Но в общем случае - да, запрос бы ждал освобождения табличной блокировки.
...
Рейтинг: 0 / 0
16.10.2016, 22:31
    #39327872
Gamletus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокируется таблица InnoDB при INSERT или UPDATE
MelkijНу так вот, session_start до явного или неявного (при завершении скрипта) вызова session_write_close блокирует выполнение параллельных запросов с этому же session id.
Спасибо за разъяснения...
Я сейчас любопытства ради создал аналогичную таблицу, но уже MyISAM
Проделал все те операции разумеется с разных браузеров и почему-то всё работает также хорошо как и InnoDB, т.е. происходит чтение строк тех, которые успели добавится на момент селекта. И никакой блокировки, ни какого ожидания ни при INSERT ни при UPDATE. Даже получается сами INSERT и UPDATE в MyISAM выполняются в 4 раза быстрее. Тогда не могу понять в чём суть блокировки таблицы если разницы по факту нет? Что-то я запутался...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Блокируется таблица InnoDB при INSERT или UPDATE / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]