Как обрабатывать несколько вставок в таблицу, которая генерирует первичный идентификатор с автоматическим приращением? - PullRequest
0 голосов
/ 24 апреля 2019

Я использую базу данных mySql для хранения данных пользователя в таблице Пользователь при регистрации.

Таблица пользователей имеет идентификатор столбца первичный ключ автоинкремента .

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

Как мне поступить, когда одновременно регистрируется 15000 пользователей? все эти запросы поставлены в очередь в базе данных? Если да, то это замедляет работу веб-страницы, верно? Как мне его масштабировать?

1 Ответ

0 голосов
/ 24 апреля 2019

Ключ в том, чтобы понять, что подразумевается под «одновременно».

Даже если 15 000 человек используют свои браузеры для регистрации в течение одной и той же минуты, вероятность того, что INSERT в MySQL одновременно выполняется более чем на нескольких из них, очень мала.

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

Большую часть времени поток в MySQL бездействует, ожидая, пока приложение, подключенное к базе данных, не выполнит кодего сторона, между запросами SQL.Обычно в списке процессов встречаются сотни строк с надписью «Sleep», в то время как на самом деле SQL-запрос выполняет 6-12 потоков.

Учитывая это, MySQL не составляет труда распределить значения автоинкремента.так быстро, как это требуется.

...