Тестирование одновременных операций вставки mysql в переполнение стека

Я хочу запустить этот PHP-скрипт несколько раз одновременно.

$db =  new mysqli('localhost', 'me', 'pw', 'test');
$time = time();
$sql = "  INSERT INTO test  (  `test_created`  ) VALUES( ". $time  .") ";
$result = $db->query($sql);

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

Я попытался использовать виртуальный планировщик cron моего провайдера общего хостинга, указав час и минуту выполнения. Затем я сделал пять одинаковых файлов, содержащих вышеупомянутые коды.

Однако, когда я смотрю на записи таблицы, вставленная метка времени не идентична. Это потому, что mysql не может обрабатывать параллельные операции вставки? Если mysql может обрабатывать «одновременную вставку», это правильный способ проверить параллельные операции вставки? Если нет, то как мне сделать это для тестирования в среде php с или без cron?

1

Решение

  1. Попытка смоделировать действия, происходящие в одном и том же наносекунда это сложно и непрактично в общем, и я просто сделаю общее заявление, что это просто невозможно ни в PHP, ни в MySQL по отдельности, не говоря уже о тандеме.

  2. Вы не можете вставить две строки в таблицу одновременно. Никогда не. У вас может быть два потока в СУБД, которые вставляют строки так быстро и без проблем, что для любых целей и задач вы можете Запрос что это произошло одновременно, но для того, чтобы СУБД поддерживала согласованность, должен быть один непрерывный порядок операций без ветвления.

  3. Даже не беспокойтесь о ситуации, которую вы пытаетесь смоделировать. Я должен был бы сделать серьезное исследование, чтобы найти СУБД, которая не может уладить ситуацию изящно.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector