Хранимые процедуры испытывают таймаут периодически!

В Dagger у вас есть два способа предоставить объект

  1. Использование @Inject в конструкции

Пример:

UserRepository Конструктор @Inject (private val mContext: Context)

blockquote>
  1. Но как мы можем конструктор @Inject с некоторым классом третьей стороны, таким как Retrofit Service Interface? Вот почему у Dagger есть @Provide

Пример:

@Module class AppModule { @Provides fun provideContext(application: Application): Context = application.applicationContext }

У Dagger также есть какой-то другой способ предоставить объект

Вы можете читать дальше здесь

В вашем случае вы можете предоставить свой класс StringPreference в своем модуле приложения, например, AppModule

@Module class AppModule { @Provides fun provideStringPreference(context: Context): StringPreference = StringPreference(context) }

7
задан mindless.panda 16 June 2011 в 02:30
поделиться

8 ответов

Хорошо - это - то, как я зафиксировал его в конце.

Кластерный индекс на таблице с 45 миллионами записей уничтожал мой SQL-сервер - каждая вставка из кода приводила к противным тайм-аутам, описанным в ответе. Увеличение допуска тайм-аута не собиралось решать мои проблемы масштабируемости, таким образом, я играл вокруг с индексами, и создание кластерного индекса на некластеризируемом первичном ключе разблокировало ситуацию.

Я ценил бы комментарии к этому, чтобы лучше понять, как это решило проблему.

2
ответ дан 6 December 2019 в 07:08
поделиться

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

7
ответ дан 6 December 2019 в 07:08
поделиться

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

Править:

Для перекомпиляции proc Вы переходите к студии управления, открытая процедура, чтобы изменить и поразить F5 или выполниться: ДОЛЖНОСТНОЕ ЛИЦО sp_recompile 'proc_name'

6
ответ дан 6 December 2019 в 07:08
поделиться

Это может часто касаться:

  • плохие планы запросов из-за очень обеспокоенного повторного использования плана (сниффинг параметра)
  • различные опции НАБОРА - в особенности ANSI_NULLS и CONCAT_NULL_YIELDS_NULL
  • блокировка (у Вас мог бы быть более высокий уровень изоляции),
  • индексация потребностей, которые будут восстановлены / статистика, обновленная / и т.д.

Опции НАБОРА могут привести к определенным индексным типам, не являющимся применимым (индексы на сохраненных вычисляемых столбцах, например - включая "способствовавшие" запросы xml/udf)

5
ответ дан 6 December 2019 в 07:08
поделиться

SQL Server будет ожидать неограниченно долго прежде, чем возвратиться к пользователю. Более, чем вероятный был клиентский набор свойств тайм-аута. Например, можно установить свойство тайм-аута для объекта команды ADO.

1
ответ дан 6 December 2019 в 07:08
поделиться

Вы, возможно, должны были бы обновить статистику по базе данных. Также имеет индексация на таблице измененный недавно?

Проверьте план выполнения SP, чтобы видеть, можно ли найти узкое место. Даже если это работало хорошо прежде, это может, вероятно, быть настроено для выполнения более эффективно.

Также, сколько данных Вы возвращаетесь? У нас были проблемы с плохо разработанным SQL в прошлом, которое не показало вплоть до кумулятивного запуска отчета, имеющего больше данных в наборе результатов. Не знание wht Ваш SPS делает, трудно сказать, является ли это возможностью, но это стоит упомянуть для Вас для исследования.

1
ответ дан 6 December 2019 в 07:08
поделиться

Вы - набор тайм-аута команды? Что-то недавно изменилось в Вашем дб, который заставляет этот proc занимать больше времени?

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

Можно ли совместно использовать источник одного из procs?

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout.aspx

3
ответ дан 6 December 2019 в 07:08
поделиться

Установите на нем профилировщик SQL, сравните результаты его запуска в Management Studio и через ваше приложение.

0
ответ дан 6 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: