首页 > 数据库 >SQLSugar 基本语法+数据库读写分离

SQLSugar 基本语法+数据库读写分离

时间:2024-07-06 15:28:31浏览次数:17  
标签:Uid 读写 db 链接 点击 new 数据库 SQLSugar

面向对象的操作数据库,相比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;

标签:Uid,读写,db,链接,点击,new,数据库,SQLSugar
From: https://blog.csdn.net/u011966339/article/details/140230007

相关文章

  • 数据库——常用SQL语句
    title:数据库——常用SQL语句date:2024-07-0612:25:36tags:数据库categories:数据库cover:/image/T1.jpgdescription:数据库的常用SQL语句SQL语句SQL(StructuredQueryLanguage)是一种用于访问和操作数据库系统的标准编程语言。它允许用户执行各种数据管理任......
  • 数据库——事务管理
    title:数据库——事务管理date:2024-07-0611:55:39tags:数据库categories:数据库cover:/image/T1.jpgdescription:数据库的事务管理的相关知识事务管理事务管理是对一系列数据库操作进行管理的过程,这些操作被视为一个不可分割的工作单元(原子单元)。事务管理在......
  • 数据库——锁
    title:数据库——锁date:2024-07-0612:25:15tags:数据库categories:数据库cover:/image/T2.jpgdescription:数据库里对锁的应用,锁的一些相关知识锁在数据库管理和并发编程中,锁(Locks)是一种重要的同步机制,用于控制多个用户对共享资源的访问,以避免数据的不一致......
  • 用友财务软件数据库恢复步骤
    一、准备工作确认问题:首先,确认是否真的需要数据库恢复。有时候,问题可能只是软件界面上的显示问题或配置错误,而非真正的数据丢失。备份当前状态(如果可能):在进行任何恢复操作之前,如果系统仍然可以访问,建议备份当前的数据库状态,以防恢复操作失败导致数据进一步丢失。二、查找备份......
  • 数据库原理之并发控制的基本概念
    我们今天继续来看数据库原理,我们简单讲讲数据库的并发控制。并发控制的定义并发控制是为了保证事务的隔离性和一致性,数据库管理系统需要对并发操作进行正确调度。并发控制的主要技术有:、时间戳、乐观控制法、多版本并发控制等。并发操作带来的数据不一致性主要有以下三点:......
  • 用友财务软件数据库恢复
    是一个关键的操作,旨在解决数据库文件损坏或数据丢失的问题。一、恢复方法使用软件内置的数据恢复工具步骤:打开用友财务软件,进入“工具”或“数据管理”等相关菜单。找到“数据库恢复”或“数据恢复”选项,点击进入。选择需要恢复的数据库文件和备份文件。这里需要确保备份文......
  • 管家婆数据库数据恢复
    一、确认数据丢失情况首先,需要确认数据是否真的丢失,以及丢失的数据范围。有时候,数据可能只是暂时无法访问,或者由于软件故障导致的数据显示问题。二、检查备份定期备份的重要性管家婆软件通常会具备自动备份功能,用户应该确保该功能已经开启,并定期检查备份文件的完整性和可用......
  • 数据库迁移工具
    对于国产数据库数据往Oracle数据库上迁移的需求,推荐使用以下几种迁移软件: 1.达梦数据迁移工具简介:达梦数据库自带的数据迁移工具,特别适用于达梦数据库(DM)到Oracle数据库的迁移。特点:专门为达梦数据库设计,对达梦数据库的特性有深入的支持。图形化界面,操作简便,用户可以通过简......
  • Linux关于数据库,群集,缓存加速等精捡面试题
    目录第一部分:企业网站架构部署与优化..................................................61.列举几种常见的HTTP状态码?及各种代表的含义?................................62.HTTP请求方法有哪些?请至少列举三种,并简述它们的用途。........................63.HTTP协......
  • sqlserver数据库MDF文件修复
    针对SQLServer数据库的MDF文件修复,这是一个相对复杂的过程,具体方法取决于文件的损坏程度、是否有备份以及数据库的状态。以下是一些常见的修复方法:使用备份恢复这是最直接且最可靠的方法。如果你有数据库的备份,并且备份是在MDF文件损坏之前创建的,那么你可以通过还原备份来恢......