zoukankan      html  css  js  c++  java
  • DataBase杂谈

    在拜读Joseph albahari的Threading in C#文章中,从线程问题的提出,到解决方案的实现。及后续利用Microsoft提供的现成DLL提供的现有方法来处理,

    多线程之间相互关联及处理方法。感慨千万。

    而后,进入其广告链接LinqPad工具后,下载安装,读到关于循环查询的语句时,涉及到循环从DB数据中进行查询,采用Predicate的一个方法,可以解决反复查询数据库的问题。

    IQueryable<Product> SearchProducts (params string[] keywords)
    {  var predicate = PredicateBuilder.False<Product>();
      foreach (string keyword in keywords)
      {
        string temp = keyword;
        predicate = predicate.Or (p => p.Description.Contains (temp));
      }
      return dataContext.Products.Where (predicate);}
    using System;
    using System.Linq;
    using System.Linq.Expressions;
    using System.Collections.Generic;
    public static class PredicateBuilder
    {  public static Expression<Func<T, bool>> True<T> ()  { return f => true;  }
      public static Expression<Func<T, bool>> False<T> () { return f => false; }
       public static Expression<Func<T, bool>> Or<T> (this Expression<Func<T, bool>> expr1,
                                                           Expression<Func<T, bool>> expr2)
      { var invokedExpr = Expression.Invoke (expr2, expr1.Parameters.Cast<Expression> ());
        return Expression.Lambda<Func<T, bool>>
              (Expression.OrElse (expr1.Body, invokedExpr), expr1.Parameters);}
     
      public static Expression<Func<T, bool>> And<T> (this Expression<Func<T, bool>> expr1,
                                                           Expression<Func<T, bool>> expr2)
      {
        var invokedExpr = Expression.Invoke (expr2, expr1.Parameters.Cast<Expression> ());
        return Expression.Lambda<Func<T, bool>>
              (Expression.AndAlso (expr1.Body, invokedExpr), expr1.Parameters);
      }
    }

     最终通过循环添加执行语句后,变成OR。而,通常是用的查询语句中,会碰到OR, IN, BETWEEN, 甚至用到 >、<、!=等具体的方法。 

    在使用Index的情况下, 性能最优顺序 BETWEEN   >  Unit ALL > IN > OR 等方法。当然如果不存在Index的情况下,相差无几。

    前日刚好对之前管理的DB客户服务器进行了Index Rebuild,将原本存在个Page也上的Index进行了断边化处理。 原本的NONClustered Index改成Clustered Index。

    普通的针对数据保护容错方面的对应措施。多Session并存控制

    在SQLServer的DB环境中,有如下几种模式 

    READ UNCOMMITTED

    READ COMMITTED (Default)

    REPEATABLE READ

    SERIALIZABLE

    SNAPSHOT

     普通默认模式是Read Commited,即保证多个Session之间的基本隔离。

    https://www.interfacett.com/blogs/understanding-isolation-levels-sql-server-2008-r2-2012-examples/
    Love it, and you live without it
  • 相关阅读:
    Nagios 监控网络流量(Windows主机和交换机)
    Nagios监控Windows服务器(NSClient++安装与应用)
    Mysql源码安装
    NETSNMP配置
    Linux 下文件解压
    cacti没有图像 排错
    菜鸟写游戏外挂
    什么是IDOC,以及IDOC的步骤
    后台跑程序(仿SM36)
    smartforms参数
  • 原文地址:https://www.cnblogs.com/tomclock/p/7514934.html
Copyright © 2011-2022 走看看