1、adoconnection连接共用的情况下,如果一个执行长时间不响应,有可能会影响其他客户端也出现查询等待窗口。 更改成使用连接池的方式。每执行一个OPENSQL,就取一个ADOCONNECTION。用完归还。 execsql则只占用一个ADOCONNECTION。 2、在每个adoconnection连接成功后(新连或断线重连),都要执行 SET TRANSACTION ISOLATION LEVEL REPEATABLE READ (充许脏读)。保证OPENSQL不受表锁,行锁,事务进行中的影响。 3、如有些客户反应收银系统保存后久点才弹出钱箱,是因为保存成功后等待时间太长. 网络版本进销存客户端在与服务端交换数据时,while xxxx do等待过程,要加个SLEEP. 不加的时候,如几秒不返回结果,CPU会直接占用25%。 SLEEP(150)。太大时,操作成功会界面卡顿。 SLEEP(50)。时,保存成功就会很快得到响应。 U_DataOptionFrm.runtype(1); while (gexec = False) do begin if (U_DataOptionFrm.Showing = False) and ((DateTimeToint(Now()) - timess) > 2) then U_DataOptionFrm.ShowModal else sleep(50); // 要加个SLEEP,否则在回不来消息的时候,占用cpu end; 该作法经5个收银系统随机压力测试没有出现问题. 4、安装包带有的栏目保存文件,要去除grid.title.caption 的内容,否则在安装繁体版,已保存的模块表格还是显示简单的字。 5、登录窗口表格上个蓝色,之前系统默认灰色 6、进销存明细表,查所有编号的进出存明细,COMMANDTIMEOUT 超时就返出错信息,如按某个编号查,超时也不返出错误信息,都是同一个存储过程,参数不一样 |