读写分离实践简单记录

[TOC]

分析哪些sql 是查询sql

* 不是存储过程
* 没有update, insert , exec, 里面没有proc(存储过程)
* 有select

分析上一条语句是否不是更新插入, 如果是则从读写库中查询

主要是为了方式更新后马上查询的情况,防止数据库主从同步的延迟

还是上代码比较实惠

      private static string GetReadConnectstring(string sql, string connectstring)
        {
            var isquery = IsSelect(sql);
            var result = connectstring;
            if (isquery && !preIsNotSelect)
            {
                result = SqlConnectionString.GetReadonlyConnectionstring(connectstring);
            }
            preIsNotSelect = !isquery;
            return result;
        }
        [ThreadStatic]
        private static bool preIsNotSelect = false; // 上一条执行语句是否是select
        private static bool IsSelect(string sql)
        {
             var sqlTmp = sql.ToLower();
            if (sqlTmp.IndexOf("insert") > -1 || sqlTmp.IndexOf("update") > -1 || sqlTmp.IndexOf("exec") > -1 || sqlTmp.IndexOf("proc") > -1)
            {
                return false;
            }
            return sqlTmp.IndexOf("select") > -1;
        }

转载于:https://my.oschina.net/tangruixin/blog/716182

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值