本人有一个需求,就是我们有一个数据库,但是有多个server对其同时进行修改访问。
问如何做好同步?mysql里面有个LOCK TABLE,这么做是否合适呢?存储过程是否支持同步?mysql的BEGIN...END语句中是否是自动事务的?不是吧?事务呢?假如我开启了一个事务,正在执行语句中,此时数据库被另外的server修改了。那么事务提交的时候会不会失败?还是事务进行中,其他server就无法访问此表?还是事务和LOCK TABLE一起使用?你们又是怎么做同步的呢?或者介绍一些相关的书籍或者资料?感激不尽
问如何做好同步?mysql里面有个LOCK TABLE,这么做是否合适呢?存储过程是否支持同步?mysql的BEGIN...END语句中是否是自动事务的?不是吧?事务呢?假如我开启了一个事务,正在执行语句中,此时数据库被另外的server修改了。那么事务提交的时候会不会失败?还是事务进行中,其他server就无法访问此表?还是事务和LOCK TABLE一起使用?你们又是怎么做同步的呢?或者介绍一些相关的书籍或者资料?感激不尽
当然能,前提是你的设置需要正确,比如你不能在MYISAM表中启用事务。如果你正确的启用了事务,那么回答“是” 其它SERVER无法修改这个表。不需要同步在数据库领域是一个术语,它的含义和你所指的完全不同。所以提问的时候千万不要用“术语”
MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
据我所知,lock的主要优势是不是优化数据插入呢?你用lock做过数据同步的操作吗?
如果这个事务操作包含了3个表,同时有另外一个server也操作这三个表,结果是这两个事务都成功了,数据是其中一个事务的。还是其中一个事务会COMMIT失败?好像没有COMMIT失败这么一说吧
因为事务处理只是取了当前的一个快照啊。
同步这个术语我想大家都明白。
你这个 不是同步吧,而是多个server修改数据, 保证数据的完整性问题吧
一般mysql 服务器 就自动会给你进行添加 一些 锁机制的, 如果某一个server正在尝试修改某条数据,而另外一个也要对它进行数据修改 , 这时候 后来的那个就必须得到前面那个修改完之后 释放掉这条数据的锁之后 ,它才可以操作的,
SET AUTOCOMMIT = 0
LOCK TABLES t1 WRITE// do somethingCOMMIT;
UNLOCK TABLES;这样就会使数据完整了?
我现在还不是很明白他那个SELECT...FOR UPDATE和SELECT ... LOCK IN SHARE MODE用的人是否很多?
那个文档翻译的优点苦涩。那个多间隔尺寸锁定有没有一个比较详细的解释?
ROLLBACK不是得手动调用吗????
当出错锁冲突时,另一个事务会等待,如果长时得到不锁,则会异常回滚。如果是INNODB,则不需要LOCK TABLE,事务本身就会去试图加锁。
CALL t(@a)
然后再
SELECT @a
来获取返回值
为什么不直接把SELECT这个放在储存过程中呢?
这样我们直接CALL t()的时候,直接就相当于CALL t(@a) & SELECT @a。
why?
好,这个文章不错,我疑惑的就是这个,我先研究一下
尽管很多都是Mysql文档的东西,但是mysql翻译的那个确实有点苦涩。呵呵