如果真 (sqlite. 打开 (“测试库.db”, #SQLITE_打开_读写 ) = 假) 输出调试文本 (“打开测试库失败”) 返回 ()sqlite.密码 (到字节集 (“123456”), )error = sqlite. 繁忙超时 (5000 ) 判断循环首 (m_onoff ) error = sqlite. 开始事务 (, #S3事务锁状态_立即 ) 判断 (error = #SQLITE_繁忙 ) 输出调试文本 (“繁忙超时,其他连接正在写入数据”) 到循环尾 () 判断 (error = #SQLITE_成功 )  sql = “insert into test (name,age,sex) values (@name,@age,@sex)”  res = sqlite. 取记录集 (sql, result )  如果真 (result = 假)   res. 关闭 ()  到循环尾 ()     name = 子程序_取随机人名 (sex )  res. 绑定参数文本 (“@name”, name, )   res. 绑定参数整数 (“@age”, 取随机数 (12, 50 ), )  res. 绑定参数整数 (“@sex”, sex )  如果真 (res. 执行 () ≠ #SQLITE_完成 )   res. 关闭 ()   sqlite. 关闭 ()  到循环尾 () res.关闭 ()  error = sqlite. 提交事务 ()  如果真 (error = #SQLITE_繁忙 )  输出调试文本 (“繁忙超时,其他连接正在读取数据”)  到循环尾 ()   如果真 (error ≠ #SQLITE_成功 )  输出调试文本 (sqlite. 取错误文本 ())        输出调试文本 (sqlite. 取错误文本 ())   延时 (500 ) 判断循环尾 ()sqlite. 关闭 ()
最近要用到数据库多线程,看了下列子,大概知道是一个线程一个连接。这样会影响效率么??之前我是用一个连接,然后用许可证来保证读和写,发现写的时候,读变得很慢
然后看了下zy多线程的例子,有一些不太理解,例子大概就是循环的插入,更新,这样。而且数据是随机的,,但是现实中,我们的数据不是随机的。比如sqlite.开始事务 (, #S3事务锁状态_立即)这时候繁忙的时候,我们肯定不能遇到繁忙直接再循环插入数据随机,怎么遇到繁忙的时候,等待到这个线程可以写,然后再操作??
还有一点是,既然读是不影响的,为什么读的线程还要这句 error = sqlite.繁忙超时 (5000) 这句大概意思是这样的么,其他连接没有写操作,直接返回,有写操作的话,等待5秒返回。可是既然事务立即不影响读操作,为什么要加这一句??!
|