但具体过程我上面已经说了,就是insert into MYSQL数据表 select * from access数据表,然后再delete from access数据表
有些头晕 是否可以把问题简化成 进程A ,T1, 开始 insert into table1 select .... 进程B, T2, 开始 select * from table1 进程A ,T3, 完成 insert into table1 select ....T2 是在行程A还未结束INSERT时发生的。 (这和ACCESS似乎没什么牵连啊) 另外,到底有没有事务?什么存储引擎? 楼主是否能象这样举例说明。
由于我的代码复制不上来,我只好一点点敲了: con.beginTrans con.execute "insert into ODBC[这里是MySQL的连接语句].表1 select * from access表1" con.execute "insert into access备份表 select * from access表1" con.execute "delete from access表1"con.execute "insert into ODBC[这里是MySQL的连接语句].表2 select * from access表2" con.execute "insert into access备份表 select * from access表2" con.execute "delete from access表2"if Err.Number=0 then con.CommitTrans else con.RollbackTrans end if 这个事务进程大致就是上面这样了。
一、对于MySQL数据库,如果只是简单的查询(select)或插入、更新、删除等,后面没有什么“for update”或“in share mode”,好像是这两个,我没太记住,那么默认方式会加锁吗?加的是什么锁?(注:我的MySQL数据库引擎是INNODB,如果换成MyISAM又会是什么锁)
那么默认方式会加锁吗? 会
加的是什么锁? 根据操作,加不同的锁
二、我的那个上传数据的事务运行时,加的又是什么锁?(注:我的MySQL数据库引擎是INNODB,如果换成MyISAM又会是什么锁)
你的“上传”是什么操作?MYSQL中没有“上传”这个概念。三、当有的客户机在上传数据,而有的客户机又在查询数据时(注意:是针对同一个表),这时会发生冲突吗?还是已经加上了锁,优先级如何?是先进行查询,还是先上传数据(用的是Insert into)?如果冲突如何解决?
首先,不了解“上传”中你具体的操作是什么? insert into ... ? load data infile ?
“上传数据(用的是Insert into)” 你是如何INSERT的?代码是什么?
另外计算机中没有两个指令会是同时发生的!总有一个先后。四、这个和上个问题差不多,就是各个客户机同时进行查询或上传数据,会怎么样(相同的表或不同的表)?
总有时序上的先后。五、按照我的理解,客户机在上传数据过程中,在事务begin时到commit这个过程中间,所做的操作,如插入数据可能都先缓存起来,请问这时是缓存到客户机中,还是服务器上?
服务器
请acmain_chm再帮我重新解决第二问和第三问,那些参考我就不想看了,我也看了不少,看得脑袋都疼了,还不如你的解释来得明白,谢谢
CSDN中贴子很多,记不得你上次问的是什么了。
进程A ,T1, 开始 insert into table1 select ....
进程B, T2, 开始 select * from table1
进程A ,T3, 完成 insert into table1 select ....T2 是在行程A还未结束INSERT时发生的。 (这和ACCESS似乎没什么牵连啊)
另外,到底有没有事务?什么存储引擎? 楼主是否能象这样举例说明。
con.beginTrans
con.execute "insert into ODBC[这里是MySQL的连接语句].表1 select * from access表1"
con.execute "insert into access备份表 select * from access表1"
con.execute "delete from access表1"con.execute "insert into ODBC[这里是MySQL的连接语句].表2 select * from access表2"
con.execute "insert into access备份表 select * from access表2"
con.execute "delete from access表2"if Err.Number=0 then
con.CommitTrans
else
con.RollbackTrans
end if
这个事务进程大致就是上面这样了。
那这个事务在运行时,如果其它用户也正要查询MySQL的这个数据表,这时的操作会怎样,是先将数据插入进去,然后再允许其它用户查询,还是先查询数据之后再插入数据,还是互不干扰,该查询的查询,该插入的插入。其实我想问就是查询和插入有没有什么优先级,或者是这时就需要加锁了吗?只有这个进程了,别的就是其它用户同时进行的操作了。我上面可能没太说明白。大致就是有几台机器,通过扫描一些数据存到本地数据库中(access),然后定时将这些数据上传(复制)给MySQL数据库,同时清空本地数据库,再接收新数据,继续同样的操作。同时,还有另外一些机器需要通过网页查询MySQL数据库中已经上传的数据。就这样。因为现在这个项目正在进行中,我目前想到的只有这些,之后可能还会有其它问题,到时还得不少麻烦您了。