powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Блокируется таблица InnoDB при INSERT или UPDATE
6 сообщений из 6, страница 1 из 1
Блокируется таблица InnoDB при INSERT или UPDATE
    #39327843
Gamletus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Сразу скажу, что очень не опытен в базах данных, поэтому прошу объяснить что делать в моей ситуации.
Прочитал, что таблицы 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
Блокируется таблица InnoDB при INSERT или UPDATE
    #39327845
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gamletus,

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

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


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