0

У меня есть простое веб-приложение в ASP.NET MVC, которое использует Sql CE для бэкэнд-базы данных с использованием EF. Все работает отлично, за исключением того, что я хотел бы сохранить журнал показов для пользователей, попавших в api в приложении, - я получаю достаточно запросов о том, что он сбой сервера. Я пробовал пару вариантов, которые не работают достаточно хорошо, и я должен был отключить их. Я использую идентификатор пользователя в базе данных, на котором есть уникальный индекс.Производительность Sql Ce для транзакций с большим объемом

- во всех случаях, если элемент не существует в db, создается и сохраняется новая запись.

  • в v1, найдите член в db, увеличьте счетчик показа, сохраните запись назад. Это было слишком медленно и разбило сервер.

  • в версии v2, я просто проверил, существует ли запись и ее создать. если он существует, я ничего не делаю. Это все еще слишком медленно, но быстрее, чем v1.

Я занимаюсь хранением db in-памяти для этого следующего и периодически храним его в sql ce. Я беспокоюсь, будет ли это работать, если я закрою 1000 элементов за несколько секунд, а затем попытаюсь сохранить их в одном обновлении? Кажется, что sql ce может просто не быть способным делать то, что мне нужно вообще, или я не замечаю простую оптимизацию производительности?

+0

то, с чем вы сталкиваетесь, является простой проблемой производительности с EF + SQL CE. У меня также была эта проблема, и она ускорилась (примерно в 15 раз быстрее!) С уже открытым соединением, переданным в контекст, - похоже, что EF с CE имеет проблему с обработкой соединения, что касается открытия соединения вместе с первым запрос будет очень трудоемким, особенно если ваша схема базы данных не соответствует вашим классам POCO точно или база данных была создана на другой ОС (или иногда даже проблемы с доступом к файлу). – DevilSuichiro

+0

ОК, я думал, что он использует соединение пула под капотом, но я проверю это. –

+0

Используйте интерфейсы TableDirect через raw ADO.net и реализуйте обработку/развёртывание соединений, как указано выше. – ErikEJ

ответ

0

Я думаю, что это будет хорошей идеей рассмотреть SQL Server Express Edition/LocalDB в качестве альтернативы для SQL Server CE в этом случае. SQL Server CE - легкая база данных для настольных приложений или мобильных устройств по дизайну. CE 4.0 был улучшен для приложений ASP.NET, но его производительность будет не очень хороша в обычных случаях.

+0

Да, я, скорее всего, перейду к нему –

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