Как оптимизировать таблицу только для быстрых вставок?

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

Есть ли способ гарантировать, что веб-приложениям не нужно ждать этих вставок? Например, я знаю, что добавление большого количества индексов замедляет вставки, поэтому я не буду. Что еще там? Не следует ли добавлять первичный ключ? (Каждую ночь таблица будет закачана в базу данных отчетов, в которой будет много ключей/индексов)

Ответы

Ответ 1

Если производительность является ключевой, вы можете не захотеть записать эти данные в базу данных. Я думаю, что большинство из них будет обрабатывать базу данных как обратный, но похоже, что вы не хотите ждать сообщения с подтверждением. Убедитесь, что, как предлагает С. Лотт, может быть не так просто просто добавить строку в простой текстовый файл где-нибудь.

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

Рекомендовать очевидное: как часть ночных отчетов запустить, очистить содержимое таблицы. Кроме того, никогда reset размер файла базы данных (команда olde shrink database); через неделю или около того для обычного использования файлы базы данных должны быть такими же большими, какими они когда-либо будут, и вам не придется беспокоиться о быстром росте производительности файла.

Ответ 2

Вот несколько идей, примечание для последних важно, чтобы у вас были чрезвычайно высокие воланы:

  • не имеют первичного ключа, он выполняется с помощью индекса
  • не имеют никакого другого индекса
  • Создайте базу данных достаточно большой, чтобы у вас не было роста базы данных.
  • Поместите базу данных на свой собственный диск, чтобы избежать конфликтов.
  • Избегайте программного RAID-массива
  • поместите базу данных на зеркальный диск, сохраните расчет, сделанный на RAID 5

Ответ 3

Нет ключей, нет ограничений, нет подтверждения, нет триггеров, Нет расчетных столбцов

Если вы можете, службы должны вставить async, чтобы не дождаться результатов (если это приемлемо).

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

Но в основном на столе NO KEYS/Validation (ПК и уникальные индексы убьют вас)