官网地址:SqlSugar ORM 5.X 官网 、文档、教程 - SqlSugar 5x - .NET果糖网https://www.donet5.com/Home/Dochttps://www.donet5.com/Home/Doc

面向对象的操作数据库,相比EFCore、Dapper等其他ORM框架性能支持性能轻便快捷,

数据库的读写分离能大大减轻数据库的压力

一、NuGet下载安装 SqlSugarCore

二、实例化SqlSugarCore---包含数据库链接---指定数据库类型---增删改查,上代码

这里演示使用控制台程序

using SqlSugar;//实例化数据库链接
var db = new SqlSugarClient(new ConnectionConfig()
{DbType = DbType.SqlServer,//指定数据库类型ConnectionString = "server=.;Database=TESTDB;Uid=sa;Pwd=198;",//数据库链接字符串IsAutoCloseConnection = true,//链接使用完后是否自动释放InitKeyType = InitKeyType.Attribute//从实体特性中读取主键自增列信息
});//相应的增删改查(Test是对应数据库表的实体类)
//向指定表添加一行数据
db.Insertable<Test>(new Test()
{UserId = "zhangsan",Name = "张三",Phone = "123456",}).ExecuteCommand();//获取列表数据
List<Test> list = db.Queryable<Test>().ToList();//获取首行数据
Test t = db.Queryable<Test>().First();//更新数据
t.Name = "张三丰";
db.Updateable<Test>(t).ExecuteCommand();//删除数据
db.Deleteable<Test>(t).ExecuteCommand();

三、SqlSugar-支持数据库主从复制、这里使用的是SqlServer2008R2

1、开始之前先创建一个指定的文件夹,确保该文件夹为共享

2、配置分发

选中“复制”--右键--配置分发

点击下一步

选中“******”将充当自己的分发服务器 ;SQL Server将创建分发数据库和日志,点击下一步

选中-是,将SQL Server代理服务配置为自动启动,点击下一步

将开始创建的共享文件夹的路径输入文本框、点击下一步

后面一直下一步到完成即可

3、 本地分发

右键-新建发布

选中你要发布的数据库(主库),点击下一步

选中事务发布,点击下一步

选中所有表,点击下一步

不筛选表行,点击下一步

选中立即创建快照并使快照保持可用状态,以初始化订阅,点击下一步

代理安全性,点击安全设置

我们这里发布和订阅都是使用本地数据库,所以选中在SQLServer代理服务账户下运行

连接到发布服务器使用以下SQLServer登录名,如下图,填写好本地账户账号密码,点击确定

创建发布、下一步

填写好发布名称,点击完成

创建成功

这时可以在最开始选中的文件夹内看到多出了这个文件夹,代表创建成功了

4、本地订阅-邮件新建订阅

选中之前发布的代理,点击下一步

分发代理位置选择在发布服务器****上运行所有代理。。。。。点击下一步

选择新建数据库,新建就不做阐述

点击如下图 ...  进入配置

选中在SQL Server代理服务账户下运行,使用SQL Server登录名,点击确定

下一步

剩下的一直点击下一步,直到创建完成

这时可以去数据库列表可以看见多出了自己刚才创建的数据库(从库,包含数据)

5、我们可以多创建几个订阅数据库,这是对主库(TESTDB)进行增删改查会发现会直接影响SQLSugarDB_001.002.003(次库),实现数据同步

四、数据库读写分离

1、链接字符串

using SqlSugar;//实例化数据库链接
var db = new SqlSugarClient(new ConnectionConfig()
{ConnectionString = "server=.;Database=TESTDB;Uid=sa;Pwd=198;",//数据库链接字符串DbType = DbType.SqlServer,//指定数据库类型IsAutoCloseConnection = true,//链接使用完后是否自动释放InitKeyType = InitKeyType.Attribute,//从实体特性中读取主键自增列信息//从库链接SlaveConnectionConfigs = new List<SlaveConnectionConfig>() {new SlaveConnectionConfig(){HitRate =10,ConnectionString ="server=.;Database=SQLSugarDB_001;Uid=sa;Pwd=198;"},new SlaveConnectionConfig(){HitRate =10,ConnectionString ="server=.;Database=SQLSugarDB_002;Uid=sa;Pwd=198;"},new SlaveConnectionConfig(){HitRate =10,ConnectionString ="server=.;Database=SQLSugarDB_003;Uid=sa;Pwd=198;"}}
});

2、我们向主库中新增两条测试数据

//向指定表添加一行数据
db.Insertable<Test>(new Test()
{UserId = "zhangsan",Name = "张三001",Phone = "123456",IsDeleted = false,CreateTime = DateTime.Now,CreateUserId = "000",DeleteTime = DateTime.Now,DeleteUserId = "",
}).ExecuteCommand();db.Insertable<Test>(new Test()
{UserId = "zhangsan",Name = "张三002",Phone = "123456",IsDeleted = false,CreateTime = DateTime.Now,CreateUserId = "000",DeleteTime = DateTime.Now,DeleteUserId = "",
}).ExecuteCommand();

3、运行,然后去数据库查看,如下图,实现了主次同步写入

4、其实现在已经实现了读写分离,上面写入已经确认了,怎么验证读取呢?

如下图,我去次数据库修改了他们的UserId值

5、 我们循环几次读取test表并监听SQL语句和打印UserId值,代码如下

using SqlSugar;//实例化数据库链接
var db = new SqlSugarClient(new ConnectionConfig()
{ConnectionString = "server=.;Database=TESTDB;Uid=sa;Pwd=198;",//数据库链接字符串DbType = DbType.SqlServer,//指定数据库类型IsAutoCloseConnection = true,//链接使用完后是否自动释放InitKeyType = InitKeyType.Attribute,//从实体特性中读取主键自增列信息//从库链接SlaveConnectionConfigs = new List<SlaveConnectionConfig>() {new SlaveConnectionConfig(){HitRate =10,ConnectionString ="server=.;Database=SQLSugarDB_001;Uid=sa;Pwd=198;"},new SlaveConnectionConfig(){HitRate =10,ConnectionString ="server=.;Database=SQLSugarDB_002;Uid=sa;Pwd=198;"},new SlaveConnectionConfig(){HitRate =10,ConnectionString ="server=.;Database=SQLSugarDB_003;Uid=sa;Pwd=198;"}}
});//监听SQL语句
db.Aop.OnLogExecuting = (sql, pra) =>
{Console.WriteLine($"-------------------------------------------------------------");Console.WriteLine($"sql语句:{sql}");
};//获取首行数据
for (int i = 0; i < 5; i++)
{Test t = db.Queryable<Test>().First();Console.WriteLine("----------------------------------------------------------------");Console.WriteLine(t.UserId);
}

结果如下图,可知语句都是从test获取,但实际都是从库中读取,验证成功,读写分离实现

五、同步过程中会存在延迟,导致写入数据可能短时间内(通常就1s或不到1s)无法从次库读取到最新数据,可以添加以下代码,从主库读取

//设置查询可以通过主库查询
db.Ado.IsDisableMasterSlaveSeparation = true;

六、SQLSugar 基本语法+数据库读写分离相关推荐

  1. 学会数据库读写分离、分表分库

    https://www.cnblogs.com/joylee/p/7513038.html 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优 ...

  2. asp.net mysql 读写分离_[ASP.net教程]SqlSugar ORM已经支持读写分离

    [ASP.net教程]SqlSugar ORM已经支持读写分离 0 2016-11-26 23:00:12 目前只有MYSQL版 3.5.2.9 支持,其库版本12月3号更新该功能 用例讲解using ...

  3. 17.sql server数据库使用规则、二八原则、数据库查询集群--数据库读写分离多种实现、数据库配置读写分离(by-朝夕)

    Database 课程目标 环境准备: 一.二八原则 二.数据库读写分离 好处: 绝大部分的企业内部应用,可能不需要上图那么庞大的架构,一台主数据库服务器和一台查询服务器通常能满足读写分离的要求.而且 ...

  4. 一文详解高性能数据库:读写分离

    虽然近十年来各种存储技术飞速发展,但关系数据库由于其 ACID 的特性和功能强大的 SQL 查询,目前还是各种业务系统中关键和核心的存储系统,很多场景下高性能的设计最核心的部分就是关系数据库的设计. ...

  5. 跟我学Springboot开发后端管理系统5:数据库读写分离

    在Matrix-web后台管理系统中,使用到了数据库的读写分离技术.采用的开源的Sharding-JDBC作为数据库读写分离的框架.Matrix-Web后台数据库这一块采用的技术栈如下: 使用Myba ...

  6. 解决数据库读写分离(转)

    如何配置mysql数据库的主从? 单机配置mysql主从:http://my.oschina.net/god/blog/496 常见的解决数据库读写分离有两种方案 1.应用层 http://neore ...

  7. .net core发布 正在发现数据上下文_使用EF Core实现数据库读写分离

    以下文章来源于朝夕Net社区 ,作者Eleven 朝夕Net社区 朝气.丰富.活跃的.Net社区,朝夕教育携百万粉丝共同打造!有技术,有感悟,有新闻,有照片,有故事,还有梦想! [精选转载]| 作者/ ...

  8. 简单好用!利用Spring AOP技术10分钟实现一个数据库读写分离方案

    前言 最近我们的APP在线用户越来越多,接口的响应速度也是越来越慢,经过运维排查发现是由于并发查询太多导致的数据库压力比较大,架构师经过调研给出了数据库读写分离的解决方案,为了快速解决问题,我们最终采 ...

  9. PG SQL数据库读写分离的思路

    PGSQL可以设置一台主多个SLAVE,这样我们需要一个办法能在程序里做到读写分离,查询了互联网,找到了下面的解决思路,请周枫在后继开发中测试下面的思路方案: 在应用层通过spring特性解决数据库读 ...

最新文章

  1. 进阶之初探nodeJS
  2. CISCO-CCNA课程介绍
  3. UNIX下C语言的图形编程-curses.h函数库
  4. 【知识总结】Java类初始化顺序说明
  5. C# 子类实例化基类 基类使用不了子类的方法_C#学习笔记09--构造方法/析构方法/继承/多态/封装...
  6. InnoDB与MyISAM的六大区别(转)
  7. AdBoost算法详解
  8. VS 2010 开发 ActiveX 开始篇
  9. POJ 2967 (水题,考察putchar()按位输入)
  10. SpringMVC项目中,jsp文件无法显示从Controller中传递过来的ModelAndView的模型数据
  11. 爬虫app信息抓取之apk反编译抓取
  12. Ubuntu(Debian)apt-get
  13. html 分割字符串,详解js常用分割取字符串的方法
  14. 计算机网络应用层1练习题
  15. 手把手教你在 Vue 中使用 JSX,不怕学不会!【建议收藏】
  16. unity暂停和继续按钮
  17. 手机的1G,2G,3G和4G区别识记
  18. 【Gsutil】使用手册
  19. [HAOI2006]聪明的猴子 题解
  20. 【Io开发笔记】机智云智能浇花器实战(3)-自动生成代码移植

热门文章

  1. python小乌龟绘制迷宫_参照课本案例4.8.3,请用python实现小乌龟走迷宫的过程;...
  2. 数字电源专用IC,国产C2000, QX320F280049
  3. 推荐一款非Win7下专用的“任务栏图标收纳”工具——TrayApp(转自:http://www.ibobosky.com/my-quick-start-tool-trayapp.htm)...
  4. 电脑经常显示交互式服务器,win10系统打印机出现交互式服务检测的解决办法
  5. Android Stomp客户端
  6. Python爬虫实战——爬取RUNOOB.COM的Python3教程
  7. java runoob
  8. 手游的世界观和方法论
  9. 光谱共焦位移传感器相比激光位移传感器有哪些优点
  10. MySQL #格式unicode转汉字