本帖最后由 sdrczht 于 2010-07-26 13:33:31 编辑

解决方案 »

  1.   

    问题太多,很难用几句话清晰的回答。如果长篇大论,建议楼主还不如直接去看MYSQL的手册。
    一、对于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这个过程中间,所做的操作,如插入数据可能都先缓存起来,请问这时是缓存到客户机中,还是服务器上?
    服务器
      

  2.   

    《数据库系统概论(第四版)》 王珊 萨师煊   高等教育出版社 (掌握基础知识和概念) 然后再粗略浏览一遍MYSQL的官方手册。(方便以后查找,避免类似于考试的时候,给你本政治书也不知道答案在第几章,第几页)MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  3.   

    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  4.   

    上传就是我几天前刚问过你的将access数据库的数据插入到MYSQL数据库中,再将access数据转移至另外一表中,清除access表中数据,该表再重新获得新数据,然后再执行相同的操作。
    请acmain_chm再帮我重新解决第二问和第三问,那些参考我就不想看了,我也看了不少,看得脑袋都疼了,还不如你的解释来得明白,谢谢
      

  5.   


    CSDN中贴子很多,记不得你上次问的是什么了。
      

  6.   

    但具体过程我上面已经说了,就是insert into MYSQL数据表 select * from access数据表,然后再delete from access数据表
      

  7.   

    有些头晕 是否可以把问题简化成
    进程A ,T1,   开始  insert into table1 select ....
    进程B, T2, 开始 select * from table1 
    进程A ,T3,   完成  insert into table1 select ....T2 是在行程A还未结束INSERT时发生的。 (这和ACCESS似乎没什么牵连啊)
    另外,到底有没有事务?什么存储引擎? 楼主是否能象这样举例说明。
      

  8.   

    由于我的代码复制不上来,我只好一点点敲了:
    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
    这个事务进程大致就是上面这样了。
      

  9.   

    你的事务,仅是ACCESS中的事务,与MYSQL无关。 另外你的表存储引擎是什么? 这儿你只贴出来的一个进程,进程B是什么?
      

  10.   

    注:我的MySQL数据库引擎是INNODB,如果换成MyISAM又会是什么锁?

    那这个事务在运行时,如果其它用户也正要查询MySQL的这个数据表,这时的操作会怎样,是先将数据插入进去,然后再允许其它用户查询,还是先查询数据之后再插入数据,还是互不干扰,该查询的查询,该插入的插入。其实我想问就是查询和插入有没有什么优先级,或者是这时就需要加锁了吗?
    只有这个进程了,别的就是其它用户同时进行的操作了。我上面可能没太说明白。大致就是有几台机器,通过扫描一些数据存到本地数据库中(access),然后定时将这些数据上传(复制)给MySQL数据库,同时清空本地数据库,再接收新数据,继续同样的操作。同时,还有另外一些机器需要通过网页查询MySQL数据库中已经上传的数据。就这样。因为现在这个项目正在进行中,我目前想到的只有这些,之后可能还会有其它问题,到时还得不少麻烦您了。