Почему время на insert в mysql удваивается?

Рейтинг: 0Ответов: 0Опубликовано: 21.06.2023

Всегда использовал mysql но никогда не сталкивался с большими данными и не особо замечал данный момент. обычно размер таблицы у меня не превышал 100к строк. но появилась необходимость добавить в таблицу 5кк строк и в mysql я заметил интересную особенность. Примерно каждые 100к строк время на insert в таблицу mysql увеличивается вдвое. На большие цифры по времени не смотрите записи добавлялись не напрямую в mysql а через простенькое api на node. если первые 100к записей добавлялись за 10 - 100 мс то после 200к время увеличились до 200 мс после 1кк время на insert уже было 1000 мс и так до 5000 мс что уже неприемлемо долго. начал копать играться с настройками мускула но так и не получилось понять почему такое происходит. Это какая то особенность mysql? Тогда я не особо понимаю как люди работают с гораздо большими данными в mysql?

Долго не мучаясь, подключил к проекту postgres для теста на стандартном конфиге и с им таких проблем у меня не было. ему особо нет разницы сколько записей в таблице бд 1 или 5кк время на insert всегда 10-30 мс.

Знатоки разъясните почему так происходит?

Структура таблицы mysql и postgres идентичны Индексов не было. размер буфера увеличивал в конфиге. но это не помогло время на insert заметно увеличивалось и на малых объемах данных.

CREATE TABLE `sitemaps` (
  `id` int UNSIGNED NOT NULL,
  `url` varchar(255) DEFAULT NULL,
  `priority` varchar(5) DEFAULT NULL,
  `last_modified` datetime(6) DEFAULT NULL,
  `username` varchar(255) DEFAULT NULL,
  `created_at` datetime(6) DEFAULT NULL,
  `updated_at` datetime(6) DEFAULT NULL,
  `published_at` datetime(6) DEFAULT NULL,
  `created_by_id` int UNSIGNED DEFAULT NULL,
  `updated_by_id` int UNSIGNED DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

Ответы

Ответов пока нет.