|
|
|
Блокируется таблица InnoDB при INSERT или UPDATE
|
|||
|---|---|---|---|
|
#18+
Всем привет. Сразу скажу, что очень не опытен в базах данных, поэтому прошу объяснить что делать в моей ситуации. Прочитал, что таблицы InnoDB блокируется на уровне строк, а не всей таблицы. Поэтому работаю именно с InnoDB. Есть некая таблица со столбцами ID и NAME В этой таблице уже есть 1000 записей, у которых NAME = Вася Далее я одним PHP-скриптом генерирую 100.000 вставок новых строк в эту таблицу, т.е. INSERT, при этом ID автоматический, а NAME = Петя Пока идёт эта вставка я другим скриптом делаю выборку 10 записей, т.е. SELECT при этом NAME = Вася Но почему-то выборка НЕ идёт до тех пор, пока не закончатся INSERTы --- Тоже самое происходит когда делаю UPDATE того же количества записей, при этом апдейт идёт по ID (я намеренно затрагиваю те ID, которые не имеют отношения к NAME = Вася) и снова нет возможности прочитать строки с NAME = Вася пока не закончатся апдейты. ----------------------- Очень прошу подсказать что я делаю не так и почему блокируется вся таблица при INSERT или UPDATE, и если можно простым доступным языком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2016, 21:04 |
|
||
|
Блокируется таблица InnoDB при INSERT или UPDATE
|
|||
|---|---|---|---|
|
#18+
Gamletus, как скрипты запускаете? А то сейчас окажется, что браузера и оба скрипта дёргают session_start. Ну это очевидная грабля. Менее очевидная - профилируйте, действительно ли ждёте именно ответ на запрос, а не что-нибудь ещё именно на стороне скрипта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2016, 21:10 |
|
||
|
Блокируется таблица InnoDB при INSERT или UPDATE
|
|||
|---|---|---|---|
|
#18+
Melkijкак скрипты запускаете? А то сейчас окажется, что браузера и оба скрипта дёргают session_start. Ну это очевидная грабля.Вообще-то именно так и делаю )) открываю две вкладки браузера по одной на каждый скрипт и в обоих действительно есть session_start )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2016, 21:20 |
|
||
|
Блокируется таблица InnoDB при INSERT или UPDATE
|
|||
|---|---|---|---|
|
#18+
Попробовал сейчас проделать тоже самое с разных браузеров и всё просто супер - блокировки нет. Пока в одном браузере идёт вставка или обновление, в другом без всяких проблем идёт выборка из этой же таблицы. Спасибо за помощь )) P.S. Если бы вместо InnoDB была таблица MyISAM, то блокировка всей таблицы была бы всё равно даже при работе с разных браузеров? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2016, 21:44 |
|
||
|
Блокируется таблица InnoDB при INSERT или UPDATE
|
|||
|---|---|---|---|
|
#18+
Ну так вот, session_start до явного или неявного (при завершении скрипта) вызова session_write_close блокирует выполнение параллельных запросов с этому же session id. GamletusЕсли бы вместо InnoDB была таблица MyISAM, то блокировка всей таблицы была бы всё равно даже при работе с разных браузеров? На самом деле, при некоторых условиях insert в myisam бывает неблокирующий. Но в общем случае - да, запрос бы ждал освобождения табличной блокировки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2016, 22:02 |
|
||
|
Блокируется таблица InnoDB при INSERT или UPDATE
|
|||
|---|---|---|---|
|
#18+
MelkijНу так вот, session_start до явного или неявного (при завершении скрипта) вызова session_write_close блокирует выполнение параллельных запросов с этому же session id. Спасибо за разъяснения... Я сейчас любопытства ради создал аналогичную таблицу, но уже MyISAM Проделал все те операции разумеется с разных браузеров и почему-то всё работает также хорошо как и InnoDB, т.е. происходит чтение строк тех, которые успели добавится на момент селекта. И никакой блокировки, ни какого ожидания ни при INSERT ни при UPDATE. Даже получается сами INSERT и UPDATE в MyISAM выполняются в 4 раза быстрее. Тогда не могу понять в чём суть блокировки таблицы если разницы по факту нет? Что-то я запутался... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2016, 22:31 |
|
||
|
|

start [/forum/search_topic.php?author=Metaller&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
get settings: |
9ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 642ms |
| total: | 842ms |

| 0 / 0 |
