SqlCE DB偶尔会在一个手持设备上冻结,而不是另一个

时间:2010-06-15 23:34:35

标签: sql-server windows-ce arm

我有两种类型但略有不同的自定义手持设备,每种都运行相同的WinForm应用程序和WinCE数据库:

类型1:WinCE 4.2,400 mhz,93244 kb 类型2:WinCE 5.0,520 mhz,84208 kb

类型1将很乐意继续进行大批量数据库操作(由应用程序启动),类型2将始终在200周期标记处开始c-r-a-w-l-i-n-g(几个到多个周期)。在几个点上,它将开始正常运行,然后再次爬行。

该应用程序执行多个db op(插入,更新和选择,不删除)。

为了简化我的情况,我已经构建了一个小型测试应用程序,基本上是这样做的:

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 mhz)单位超过了更快(520 mhz)的单位(现在大约是5000个循环),我可以看到520 mhz单位的显着暂停。

造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:0)

您没有告诉我们您的测试环境。假设您在两者上使用相同版本的SQL CE,那么可能是较慢系统上的驱动程序(文件系统或总线)较慢或者您存储的实际媒体是。

例如,如果其中一个写入RAM而另一个写入Flash,那么显然RAM设备的执行速度会快得多。不太明显的可能是一个使用NAND而另一个使用NOR闪存,而NAND写入缓慢的速度正在影响您。或许你正在使用USB,一个系统有更快的USB总线。

有很多原因你可能会发现这种差异而且不知道关于目标硬件的很多,很难确切地告诉你原因。