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高可用性