AhmedYehiaK Ответов: 1

Веб-API лесозаготовки лучшие практики c#


Всем привет,

У меня есть веб-API, который взаимодействует с несколькими внешними сервисами (SOAP, REST и т. д.). Все запросы к внешним сервисам выполняются параллельно (60~70 запросов создаются в данный момент).

Теперь мне нужен лучший метод с точки зрения производительности, организованных данных для поиска и фильтрации, минимального хранения и т. д

Что я уже пробовал:

I tried (SQL Server File Streaming) but this cause a server file system issues since the logging operation done in extremely high traffic.

1 Ответов

Рейтинг:
2

Homero Rivera

Вы упомянули 60~70 запросов, созданных в данный момент это в секунду?
Если он установлен на достаточно мощном mcachine, SQL Server достаточно хорош.

Однако нам нужно немного подумать "из коробки" и перестать беспокоиться о проблеме ведения журнала, а начать думать о чистой проблеме эффективности SQL Server.

Храните все строки в таблице кучи; никаких индексов, никакой кластеризации, потому что требуется работа для записи как в таблицу, так и в индекс. Вы просто хотите сократить время записи SQL Server с помощью кучи.
.. Пусть эта куча использует один достаточно большой файл данных... Может быть, даже на одном сервере, посвященном этому, в зависимости от фактической рабочей нагрузки.
Целевая таблица кучи должна иметь столбец, указывающий, была ли строка "обработана" или "передана"; столбец типа bit.

Есть задание или процесс, который выполняется каждые столько-то секунд, запрограммированный на:
1. обновите все строки в таблице кучи до "перенесено".
2. скопируйте эти строки в более структурированную таблицу (возможно, в другой базе данных), которая имеет индексы и все такое; это таблица, которую вы хотите использовать для запросов, создания отчетов и фильтрации.
3. Удалите обработанные строки из кучи.

В принципе, вы должны держать таблицу кучи короткой и не запускать на ней ничего другого (никаких отчетов).
Это всего лишь эмпирические правила, основные принципы.


Я не смог поэкспериментировать со следующей рекомендацией, но стоит посмотреть:
Не используйте типы данных переменной длины (varchar, nvarchar, varbinary); все строки должны быть фиксированной длины и, по возможности, пропорциональны размеру страниц SQL Server (см. Понимание страниц и экстентов[^]
Соответствие размеру страницы заключается в том, чтобы избежать фрагментации, которая может быть реальной проблемой с кучами. Кучи SQL Server и их фрагментация-простой разговор[^]

Удачи