如何实现数据库的同步读写

如何实现数据库的同步读写,第1张

你在写数据的时候要看你数据库允许的锁定级别是什么,每种数据库都不一样,如果是最高级别的锁你在写数据的时候其他事务是无法对他进行写 *** 作的,如果是读就会发生 (1)读事务读取的数据不同(2)发生对未提交的更新的依赖。

则读事务在读数据的时候需要申请读锁。建议是你不要通过扫数据库来查找更新,把数据放到内存中通过缓冲区进行交换那样更好

在每个数据库的table1\table2都建立插入、删除、修改触发器

如在A1上

ceate trigger dbotable1_u on A1dbotable1 for insert,update,delete as

IF @@rowcount = 0 RETURN

declare @no_i int -- 假设no为关键字

--declare 其他字段

declare @no_d int -- 假设no为关键字

--declare 其他字段

--赋值

select @no_i =no ,--其他值

from inserted

select @no_d =no ,--其他值

from deleted

--判断@no_d,@no_i 是否在A2,A3,A4,A5的表中存在

--1、如果@no_d,@no_i 都存在,则用新值更新A2,A3,A4,A5的talbe1

--2、如果@no_d不存在@no_i存在,则将新值插入A2,A3,A4,A5的talbe1

--3、如果@no_d存在@no_i不存在,则删除A2,A3,A4,A5的talbe1对应的值

if exists(select 1 from A2dbotalbe1 where no = @no_d) and

exists(select 1 from A2dbotalbe1 where no = @no_i)

begin

--修改A2数据库的表

end

如果是同一个mysql服务端的两个数据库同步可考虑下触发器,如果是不同端口的两个mysql服务端跟在两台服务器同步配置上没有区别。

数据库最好不要做主从,不然性能会降低很多的。

可以采取其他的方法撒,比如分布式存储。可以考虑下memcachedb,实现持久存储。

表结构一致的话,可以考虑映射表去实现来的(shell脚本定时同步,触发器),不过shell脚本会将环境搞的复杂一点,维护也会相对麻烦

映射表具体实现(在要同步的数据库下创建相同的表结构):

CREATE TABLE table_name

(

    column_name  column_type  

    

    key 

)

ENGINE=MYISAM DEFAULT CHARSET=utf8 

CONNECTION="mysql://user:pwd@ip_address/db_name/table_name";

以上就是关于如何实现数据库的同步读写全部的内容,包括:如何实现数据库的同步读写、如何实现多个SQL数据库同样结构的表同步更新!、同一个服务器上两个数据库表怎么同步等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9839256.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存