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