天天看點

NET 讀寫分離 操作資料庫 ORM 架構

SqlSugar ORM完美支援了讀寫分離,使用超級簡單,隻要配置連接配接字元串即可

讀寫分離:配置從表

1.如果存在事務所有操作都走主庫,不存在事務 修改、寫入、删除走主庫,查詢操作走從庫 

2.HitRate 越大走這個從庫的機率越大

SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()

{

ConnectionString = Config.ConnectionString,//主庫

DbType = DbType.SqlServer,

IsAutoCloseConnection = true,

//從庫

SlaveConnectionConfigs = new List<SlaveConnectionConfig>() {

new SlaveConnectionConfig() { HitRate=10, ConnectionString=Config.ConnectionString2 } ,

new SlaveConnectionConfig() { HitRate=10, ConnectionString=Config.ConnectionString2 }

}

});

  //查詢 走從庫

var list = db.Queryable<Student>().ToList();

//插入 走主庫

db.Insertable(new Student() { SchoolId = 1, Name = "jack" }).ExecuteCommand();

//更新 走主庫

db.Updateable(new Student() { Id = 1, SchoolId = 2, Name = "jack2" }).ExecuteCommand();

//删除 走主庫

db.Deleteable<Student>().Where(it => it.Id == 1).ExecuteCommand();

配置主從複制

ORM是隻把讀和寫進行了請求處理,資料庫的主從複制,資料庫的同步需要去資料庫裡面配置

例如: SqlServer有訂閱 或者 alwayson等

為什麼要讀寫分離?

降低資料庫伺服器的壓力

如何實作讀寫分離?

1.一個主庫多個從庫

2.配置主庫複制資料到從庫

NET 讀寫分離 操作資料庫 ORM 架構

為什麼一個主庫多個從庫?

一般查詢多于增删改,這就是我們常說的二八原則,20%操作是增删改,80%操作是查詢

是否有缺點?

有延遲

如何解決延遲問題?

比較及時性的資料還是通過主庫查詢

具體如何實作?

通過釋出伺服器,主庫釋出,進而從庫訂閱,進而實作主從庫

NET 讀寫分離 操作資料庫 ORM 架構

實作

SqlServer 實作

1.使用SqlServer 2019,建立一個主庫,建立表,再通過本地釋出建立釋出,

然後通過本地訂閱訂閱主庫,建立兩個從庫

NET 讀寫分離 操作資料庫 ORM 架構

2.配置AlwaysOn高可用性

NET 讀寫分離 操作資料庫 ORM 架構

繼續閱讀