Вставить Игнорировать эффективность в течение определенного периода времени - PullRequest
1 голос
/ 29 декабря 2011

Вот ситуация

Со временем у меня будет база данных MySQL с 40-50 тысячами записей.Записи извлекаются из текстового файла (через скрипт PHP, после нажатия кнопки на веб-странице), который обновляется (добавляется) 2-3 раза в день из другого отдела (не в моей руке).Я должен вставить эти новые записи в базу данных (когда нажата кнопка на моей веб-странице) и игнорировать те, которые уже есть.Для этого я использую оператор "Insert Ignore".

У меня вопрос к тому времени, когда записи растут (40-50 тысяч), будет ли оператор "Insert Ignore" выполняться долго (время ожидания моего браузера составляет 5 секунд, и я не могу выйти за пределы этого),Никогда не будет более 300 уникальных записей для обновления за один раз, и моя таблица просто имеет 2 столбца (если это имеет значение).Система работает отлично сейчас, но я хочу быть готовым к будущему.У меня нет возможности проверить его, поэтому я буду признателен, если кто-нибудь скажет мне, основываясь на его / ее опыте.

Ответы [ 2 ]

2 голосов
/ 29 декабря 2011

Таблица с 50 тыс. Записей не должна вызывать проблем с производительностью.Теперь, если бы у вас было 50 миллионов, я мог бы изменить свою мелодию.

Как указал Моше Л., есть несколько способов сделать это.Вот ссылка на статью, в которой измеряется производительность ON DUPLICATE KEY и INSERT IGNORE в базе данных из 9 миллионов записей.В соответствии с этим, вы идете по правильному пути.

1 голос
/ 29 декабря 2011

У меня есть тяжелая система имя / значение с INSERT IGNORE, а также INSERT ... On DUPLICATE KEY UPDATE.Когда таблица стала большой, я «делю» сегодняшнюю информацию (обновлённую) и архив.

Кроме того, я не знаю, каков ваш дизайн системы, но в моей системе (простое имя / счетчик) я сохраняю подробную информацию за одну неделю, и архив сгруппирован, чтобы получить маленькие и меньшие строки.

Удачи!

...