#sql #sql-server #database #performance #database-performance
#sql #sql-server #База данных #Производительность #база данных-производительность
Вопрос:
У меня есть таблица базы данных с примерно 2500 строками, которая часто считывается моим веб-приложением. Повлияет ли это на производительность чтения из этой таблицы, если все данные в ней часто (например, каждые 1-5 минут) удаляются и вставляются заново?
Под этим я подразумеваю:
DELETE FROM MyTable
INSERT INTO MyTable SELECT ...
Комментарии:
1. Не особенно — это может вызвать некоторую фрагментацию, поскольку удаленные строки не очищаются немедленно, но ничего серьезного, особенно в такой маленькой таблице. При этом a
TRUNCATE
выполняется быстрее и позволяет избежать этой проблемы при загрузке. В идеале вы хотите обернуть это в транзакцию, чтобы не было момента, когда читатели увидят пустую таблицу.2. Это зависит от того, что вы подразумеваете под «часто». 1000 удалений в секунду повлияют на производительность. Один в минуту не будет.
3. @GordonLinoff скорее раз в 1-5 минут
4. @AGB . , , я бы не стал беспокоиться о производительности, если только вы не работаете на заводных наручных часах или у вас невероятно плохо написанные триггеры на столе.
Ответ №1:
Вероятно, нет, при заданных числах … Однако, если у вас есть один или несколько индексов в вашей таблице (для помощи в чтении / выборе или автоматически в любом PK / UK …), Вы должны учитывать, что каждое удаление / вставка может привести к повторному вычислению любого такого индекса (поверх удаления / вставки как такового), напрямую не влияющее на чтение таблиц как таковое, но увеличивающее общую нагрузку на сервер БД. Исходный код отсутствует, но, похоже, вы используете эту таблицу в качестве промежуточного / интерфейса для sth. в противном случае, поэтому при «обновлении» вы, вероятно, захотите связать ваши удаления / вставки в транзакциях, насколько это возможно, вместо того, чтобы, например, выполнять их все по отдельности, как в цикле. Или посмотрите, можете ли вы сохранить свои PKS и просто обновить …? Это также может помочь уменьшить фрагментацию в базовом хранилище …