3

Я пытаюсь улучшить производительность службы Windows, разработанной на C# и .NET 2.0, которая обрабатывает большое количество файлов. Я хочу обрабатывать больше файлов в секунду.Запрос из базы данных или из памяти? Что быстрее?

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

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

Для завершения сценария: Я использую Windows Server 2008 R2 64 бит, SQL Server 2008 - это база данных, C# и .NET 2.0, как уже упоминалось.

Я прав в своем подходе? Что бы вы сделали?

Спасибо!

+0

Звуки о правильном ... Не знаю, что еще ответить? : P – FarligOpptreden

+0

Мне кажется, что это хорошая идея. Система кэширования будет эффективной. – ken2k

+0

Я думаю, это зависит от того, сколько материала вам нужно хранить. Если это небольшой объем данных, тогда идите и сохраните его в памяти. Память всегда будет быстрее, чем на жестком диске. В то время как сервер sql будет делать хорошую работу по поддержанию буферизации вещей, если вы все сохраните сами, он всегда будет в памяти. Не уверен, какая часть торговли вы получите. Используйте профилировщик .net EQATEC (свободная версия) и сравнивайте запрос с чтением памяти. – JeremyK

ответ

3

Эти параметры изменяются anually

Да, не кэширует их в памяти. Особенно, если они большие или сложные.

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

Простое кэширование их на час или даже на несколько минут может стать хорошим компромиссом.

1

Пересечение сети или переход на диск всегда на несколько порядков медленнее, чем при доступе к памяти.

Базы данных могут кэшировать данные в памяти, поэтому, если вы можете достичь этого, и вы не пересекаете сеть, база данных может быть быстрее, поскольку их шаблоны/индексы доступа к данным и т. Д. Могут быть быстрее, чем вы код. Но, это лучший случай - если вам это нужно быстрее, в кэши памяти.

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

+0

Спасибо @bryanmac. В моем случае я перейду через сеть. И спасибо за совет сложности. –

1

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

Chaching будет быстрее, даже если изменить его каждую минуту, так что да, кэширование, что запрос очень быстро