БД SqlCE иногда зависает на одном контроллере, а не на другом - PullRequest
1 голос
/ 16 июня 2010

У меня есть два типа пользовательских карманных компьютеров, которые похожи, но немного отличаются, каждый из которых запускает одно и то же приложение WinForm и базу данных WinCE:

Тип 1: WinCE 4.2, 400 МГц, 93244 КБ Тип 2: WinCE 5.0, 520 МГц, 84208 КБ

Тип 1 успешно пройдет через большую пакетную операцию дБ (инициированную приложением), а Тип 2 последовательно начнет c-r-a-w-l-i-n-g (в течение нескольких или многих циклов) примерно на отметке 200 циклов. В некоторых точках он начнет нормально работать, а затем снова сканировать.

Приложение выполняет несколько операций с БД (вставляет, обновляет и выбирает, не удаляет).

Чтобы упростить мою ситуацию, я создал небольшое тестовое приложение, которое по сути делает это:

command_s.CommandText = "select dvr from vr where vid = 2211250";
command_u.CommandText = "update pvr set LocationID=81 where Status='OK' and vri = 27861";

while(going)
{
    command_s.ExecuteScalar();
    command_u.ExecuteNonQuery();
}

и включите его на двух устройствах рядом. Конечно же, более медленный (400 МГц) блок опережает более быстрый (520 МГц) (сейчас это примерно на 5000 циклов вперед), и я вижу заметные паузы на 520 МГц.

Что вызывает это?

1 Ответ

0 голосов
/ 16 июня 2010

Вы не очень много рассказали нам о своей тестовой среде.Предполагая, что вы используете одну и ту же версию SQL CE на обоих, тогда, вероятно, либо драйвер (файловая система или шина) в более медленной системе медленнее, либо фактический носитель, на котором вы храните, является.

Например, если один из них записывает данные в ОЗУ, а другой - во Flash, очевидно, что устройство ОЗУ будет работать намного быстрее.Менее очевидно может быть то, что один использует NAND, а другой использует NOR flash, и медлительность медленной записи NAND влияет на вас.Или, может быть, вы используете USB и одна система имеет гораздо более быструю шину USB.

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

...