2009-09-23 2 views
13

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

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

+3

Зачем использовать SQL вообще? Почему бы просто не написать файлы для загрузки в БД отчетов? –

+0

Если честно, если не использовать обычные файлы журналов, я буду изучать это. –

+0

Вы можете использовать SQL с движком sotrage = ARCHIVE. –

ответ

9

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

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

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

5

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

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

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

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

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

Но в основном на столе НЕТ КНОПКИ/Validation (PK и уникальные индексы будут убивать вас)

+0

В Интернете 24/7 мир, больше нет понятия дня против ночи.Как бы вы переместили «старую» информацию (но все же сохранили ее в базе данных)? постоянно? каждые X минут? Есть предположения? –

Смежные вопросы