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.配置主庫復制數據到從庫

為什么一個主庫多個從庫?
一般查詢多於增刪改,這就是我們常說的二八原則,20%操作是增刪改,80%操作是查詢
是否有缺點?
有延遲
如何解決延遲問題?
比較及時性的數據還是通過主庫查詢
具體如何實現?
通過發布服務器,主庫發布,而從庫訂閱,從而實現主從庫

實現
SqlServer 實現
1.使用SqlServer 2019,新建一個主庫,創建表,再通過本地發布創建發布,
然后通過本地訂閱訂閱主庫,創建兩個從庫

2.配置AlwaysOn高可用性

https://www.cnblogs.com/chenmh/p/4484176.html
