精华内容
下载资源
问答
  • 视图后面加with(nolock)后

    千次阅读 2013-01-25 10:33:33
    为此决定对报表相关查询表进行无锁操作,即在表后面加 with(nolock),但我们为客户端是以视图形式提供,为此产生一个问题:在视图后面加with(nolock),是否意味着视图内的所有表都是nolock?    我在网上没找到...

    原文出处:http://www.cnblogs.com/ASPNET2008/archive/2012/02/09/2343538.html

          一些小的企业项目,往往存在很多局限性,这里讲的局限性是指这些项目在面对某些需求时,所选用的解决方案不多。就拿我目前处理这个来讲吧,说的通俗点就是为业务部门生成相关报表。我目前理解的报表生成方式,总结如下:
          
          第一:在业务库上执行SQL语句或者存储过程,实时生成数据。这其中又分为三种:
          
           1:在主库上操作,及业务系统操作的数据库与生成报表的SQL逻辑同处一个数据库。
           2: 在主库的只读库即从库上操作,一般可以通过订阅复制来设置主从库,产生报表的逻辑只操作从库。
           3: 主库定时生成一个备份库,报表从生成的备份库中操作。
           
          第二:由数据仓库生成相应报表。
              这部分在这里就不多说了。
              
          我目前的项目就属于第一种的第一小分类,即直接在主库上以执行SQL方式产生数据,其中的原因也不用多说,低成本。但由于生成报表的需要的时间一般都较长,容易对业务表进行长时间的锁定,影响业务系统的正常使用,反过来,如果用户正在操作业务库,此时如果同时执行报表生成,就会形成锁等待。为此决定对报表相关查询表进行无锁操作,即在表后面加 with(nolock),但我们为客户端是以视图形式提供,为此产生一个问题:在视图后面加with(nolock),是否意味着视图内的所有表都是nolock?
          
          我在网上没找到相关内容,于是还是眼见为实,决定做个小实验。重点需要搞清楚如下几个问题:
          
          问题一:如何人为造成一个锁?即让某个表被某个线程长时间锁定。


          我们可以BEGIN TRAN mytran,然后操作一个表,比如update,但不commit tran,此时被操作的表就会被当前线程长时间锁定。我们可以用sp_who2来查询锁定情况,如下图所示,第一个框代表状态,第二个框是CPUTime。还可以利用sp_lock查看锁的类型。


          
          问题二:如何制造脏读的情况,我们都说加了nolock,容易形成脏读,但脏读到底怎么样呢?
          
          1:创建一个测试用的表:
          

    复制代码
    --创建表
    CREATE TABLE mytest
        (
          id INT IDENTITY
                 NOT NULL ,
          data UNIQUEIDENTIFIER DEFAULT ( NEWID() )
                                NOT NULL
        )
    复制代码

     

        这里需要创建一个聚焦索引,如果不创建此聚焦索引,后续的结果会发生变化。
        

    --创建索引
    CREATE UNIQUE CLUSTERED INDEX cidx ON mytest( data )

     

         2:为表添加一些测试数据。
       

    复制代码
    --添加数据
    DECLARE @i INT ;
    SET @i = 1 ;
    WHILE @i <= 50000 
        BEGIN
            INSERT  mytest
                    DEFAULT VALUES  
            SET @i = @i + 1
        END
    复制代码

        

         3:创建测试视图:
        

    CREATE VIEW view_mytest
    AS
      SELECT * FROM mytest
    go

     

        4:创建一个嵌套视图,嵌套视图的目的就是想看看在最上层视图上加nolock,是否会传递到最底层的基表。
       

    CREATE VIEW view_mytest2
    AS
      SELECT a.* FROM view_mytest a
      LEFT JOIN dbo.Report b
      ON a.id=b.id
    go

     

         5:在MSMS中打开两个窗口:
          窗口一:执行如下脚本,提交一个事务,更新测试表,但不提交,形成长时间锁定。
          

    BEGIN TRAN mytran
    UPDATE  mytest
    SET     data = NEWID()

     

          窗口二:对测试表进行行数统计,当发现数据出现错误时,打印出提示信息。      

    DECLARE @totalrows INT ,
    
        @currentnow INT ,
    
        @errorcount TINYINT
    
    SET @errorcount = 0
    
    SELECT  @totalrows = COUNT(1)
    
    FROM    mytest 
    
    WHILE 1 = 1 
    
        BEGIN
    
            SELECT  @currentnow = COUNT(1)
    
            FROM    view_mytest2 WITH ( NOLOCK )  
    
            IF @totalrows <> @currentnow 
    
                BEGIN
    
                    PRINT '查询总数= ' + CAST(@currentnow AS VARCHAR(10)) + ' 差异数量= '
    
                        + CAST(@currentnow - @totalrows AS VARCHAR(10))
    
                    SET @errorcount = @errorcount + 1
    
                    IF @errorcount >= 8 
    
                        BREAK
    
                END
    
        END

          6:查看窗口二,如果nolock,理论上应该会出现错误提示信息,出现此错误提示信息就是因为在无锁情况下有可能出现多读或者是少读的现象。


        

        

          上图表示,在视图上添加nolock跟在基表后加nolock效果一样,只不过在视图上加就相当于视图内所有表都无锁,这样不太灵活,尽管有脏读现象,但我们的业务逻辑一般都是多表相匹配后的情况,如果一个事务中会操作多个表,生成报表时,某些表形成了脏读,也不会影响最终数据,如果所有表都操作完毕,还未提交事务,此时虽然查询出的数据可能是错误数据,但属于可接受范围之内。

      

          文中若不错误地方望批评指正。 

       

          参考资料:http://www.dotblogs.com.tw/ricochen/archive/2011/04/15/22758.aspx 

    展开全文
  • 什么有的句子中with前直接接在所修饰词后,有的with前却了逗号??? 例程:He gave his card,with a few words in pencil. He gave his card,with a few words in pencil. 翻译:他把它的名便给我,上面有几个...

    为什么有的句子中with前直接接在所修饰词后,有的with前却加了逗号???
    例程:He gave his card,with a few words in pencil. He gave his card,with a few words in pencil.
    翻译:他把它的名便给我,上面有几个铅笔字
    解析:with a few words in pecil是伴随状态,所以要用逗号,前面是一个完整的句子。而有时候He write with a pen.像这个句子前半句并非是一个完整的句子,所以不能用逗号
    例程:Flask has many configuration values, with sensible defaults, and a few conventions when getting started.
    展开全文
  • b是一个文本文件,里面就是字符串,在打印时为什么加了\n,\n不是表示换行吗,我的txt文件里面没有换行啊就是一行写完所有的数据了。 a=r'C:\Users\v_pejiepeng\Desktop\pcc-master\chapter_10\hou.txt' ...
  • Java7提供了try-with-resources机制,其类似Python中的with语句,将实现了 java.lang.AutoCloseable 接口的资源定义在 try 后面的小括号中,不管 try 块是正常结束还是异常结束,这个资源都会被自动关闭。...

    Java7提供了try-with-resources机制,其类似Python中的with语句,将实现了 java.lang.AutoCloseable 接口的资源定义在 try 后面的小括号中,不管 try 块是正常结束还是异常结束,这个资源都会被自动关闭。 try 小括号里面的部分称为 try-with-resources 块。

    使用try-with-resources机制的代码如下所示:

    static String readFirstLineFromFile(String path) throws IOException {
    	try (BufferedReader br = new BufferedReader(new FileReader(path))) {
    		return br.readLine();
    	}
    }

    在Java7之前,只能使用下面的语句关闭资源:

    static String readFirstLineFromFileWithFinallyBlock(String path) throws IOException {
    	BufferedReader br = new BufferedReader(new FileReader(path));
    	try {
    		return br.readLine();
    	} finally {
    		if (br != null)
    			br.close();
    	}
    }

    readFirstLineFromFile 方法中,如果 try 块和 try-with-resources 块都抛出了异常,则抛出 try 块中的异常, try-with-resources 块中的异常被忽略; readFirstLineFromFileWithFinallyBlock 方法中,如果方法 readLine 和 close 都抛出了异常,则抛出 finally 块中的异常, try 块抛出的异常被忽略。

    参考资料:https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html 

    展开全文
  • 今天看文档的时候,发现了一个问题: var options = { target: '#output1', // target element(s) to be updated with server response beforeSubmit: showRequest, // pre-submit callback success:

    今天看文档的时候,发现了一个问题:

    var options = {
        target:        '#output1',   // target element(s) to be updated with server response
        beforeSubmit:  showRequest,  // pre-submit callback
        success:       showResponse  // post-submit callback
    
        // other available options:
        //url:       url         // override for form's 'action' attribute
        //type:      type        // 'get' or 'post', override for form's 'method' attribute
        //dataType:  null        // 'xml', 'script', or 'json' (expected server response type)
        //clearForm: true        // clear all form fields after successful submit
        //resetForm: true        // reset the form after successful submit
    };
    
    // pre-submit callback
    function showRequest(formData, jqForm, options) {
        return true;
    }

    对象的方法为什么只有函数名,后面没有()?

    回想一下平时的写法:

    var options = {
        target:        '#output1',   // target element(s) to be updated with server response
        beforeSubmit:  function() {},
        success:       showResponse  // post-submit callback
    
        // other available options:
        //url:       url         // override for form's 'action' attribute
        //type:      type        // 'get' or 'post', override for form's 'method' attribute
        //dataType:  null        // 'xml', 'script', or 'json' (expected server response type)
        //clearForm: true        // clear all form fields after successful submit
        //resetForm: true        // reset the form after successful submit
    };
    
    采用匿名函数来定义一个对象的方法

    再参照js对象方法的定义:1.对象的方法定义了一个函数,并作为对象的属性存储  2.对象的方法通过添加( )调用


    显然,对象的方法定义了一个函数,但是并没有调用,如果加上( ),则函数会立即被调用


    附:如下函数:

    function test() {
        return "test";
    }

    分别打印

    test: function test() {return "test";}  //函数表达式

    test(): test  //函数执行结果

    是不是很像?

    var test = function() {
        return "test";
    }

    为什么可以直接使用函数名呢?参照js函数定义:

    函数可以通过声明定义,也可以是一个表达式

    函数声明:

    function functionName(parameters) {
         执行的代码
    }
    函数表达式:

    函数表达式存储在变量中,变量可作为一个函数使用,实际上就是一个匿名函数。

    var x = function (a, b) {return a * b;}
    var z = x(4, 3);

    总结一下:“functionName”既是函数名,又是一个函数表达式。





    展开全文
  • 英文页面地址:http://allmybrain.com/2010/04/29/debugging-linux-kernel-modules-with-virtualbox-and-kgdb/Debugging Linux Kernel Modules with VirtualBox and KGDB Posted in April 29th, 2010 by Dennis in...
  • Switch后面可以接什么

    千次阅读 2016-10-23 22:25:38
    Switch后面可以接:byte short int char 还可以接String,枚举类型 不能long 还有boolean类型
  • python的with用法

    万次阅读 多人点赞 2016-10-06 21:18:11
    1.With语句是什么?有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭...
  • SQL:with as用法

    千次阅读 2017-08-31 14:38:37
    WITH AS短语,也叫做子查询部分,定义一个SQL片断后,该SQL片断可以被整个SQL语句所用到。有的时候,with as是为了提高SQL语句的可读性,减少嵌套冗余。比如sql:with A as ( select * from user ) select * ...
  • 一、基本语法 connect by递归查询基本...start with:表示以什么为根节点,不限制可以写1=1,要以id为123的节点为根节点,就写为start with id =123 connect by:connect by是必须的,start with有些情况是...
  • SQL创建表里边的with什么意思

    千次阅读 2015-03-25 15:29:23
    SQL创建表里边的with什么意思 2009-12-02 22:56anrow定 | 分类:数据库DB | 浏览2969次 例如Create table [dbo].[adminitable] ([adminpassword] [varchar](50) not null,[adminname] [varchar](20) not ...
  • With itmNewMail .subject = subject '主旨 .body = body '正文本文 .Bcc = to_who '收件者 .Display '启动Outlook发送窗口 SetTimer 0, 0, 0, AddressOf WinProcA End With Set objOL = Nothing Set ...
  • 如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。...
  • HTTP之X-Requested-With分析和思考

    万次阅读 2016-01-22 17:05:06
    本文主要是针对自己在实际的协议分析过程中遇到的X-Requested-With头域进行了分析,主要分析了该头域为什么会出现,以及在什么情况下出现。好像是同一个问题,但是细究还是有所不同。  最近在报文抓包的时候遇到了...
  • SQL Server with as使用

    万次阅读 多人点赞 2017-11-30 21:39:53
    SQL Server with as使用, 使用with as 实现递归查询
  • 前言 在我们使用vscode写代码的时候,每次修改都要先保存,...直接修改内容,不需要去浏览器刷新,保存即可自动刷新(比如后面加123) 如果live server 插件打开不是谷歌浏览器,也可以修改 打开设置 => 工作区
  • WITH AS 使用

    万次阅读 2019-03-21 10:43:45
    一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION...
  • WITH AS的用法

    千次阅读 2018-08-21 13:29:40
    一、WITH AS的含义   WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在...
  • hive中使用with as优化SQL语句

    千次阅读 2019-03-10 16:17:09
    hive可以通过with查询来提高查询性能,因为先通过with语法将数据查询到内存(既然是到内存中,如果数据量太大,估计会占用大量资源,可能会报内存溢出),然后后面其它查询可以直接使用,这种方法与创建临时表类似...
  • 关于python with的用法及异常处理

    千次阅读 2020-01-11 16:50:01
    实际上,在with后面的代码块抛出异常时,exit()方法被执行。开发库时,清理资源,关闭文件等操作,都可以放在exit()方法中。 总之,with-as表达式极大的简化了每次写finally的工作,这对代码的优雅性是有极大帮助的...
  • 理解python的with语句

    千次阅读 多人点赞 2017-04-07 21:43:06
    一、with语句是什么 (1)有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,...
  • 视图中with check option的作用是什么

    千次阅读 2009-08-12 11:31:00
    create view IS_student  as  select sno,sname,sage  from student  where sdept='IS' ... with check option;  加上了with check option;后,不能执行插入操作:    ins...
  • NEO4J中WITH的用法

    千次阅读 2020-01-05 20:30:28
    和Oracle中with的用法相似,把with后面结果集当成一个查询结果、在这个结果基础上再做where条件的筛选 比如下面这个语句:查询所有电影集、每个电影至少有8个以上的演员参演。 with o,count(r) as count_r,以这个...
  • Hive中使用 with as 优化SQL

    万次阅读 多人点赞 2018-07-31 23:29:06
    当我们书写一些结构相对复杂的SQL语句时,可能某个子查询在多个层级多个地方存在重复使用的情况,这个时候我们可以使用 with as 语句将其独立出来,极大提高SQL可读性,简化SQL~ 注:目前 oracle、sql server、hive...
  • with open使用方法

    万次阅读 2017-08-02 16:08:02
    昨晚在级群有个同学提出一个问题需要去读文件每一行的倒数18个字符并写到另一个文件中,一开始以为用Python三行代码应该能够解决,但写了二十分钟才真正解决问题。 首先需要知道的是要使用到两个...with open(r'D:\p
  • SQL 视图的with check option

    千次阅读 多人点赞 2018-11-20 10:13:25
    一.网上查阅了很多关于该选项的内容,不是很清楚,但是看了下面这个例子...你创建视图的时候 create view stu as select 学生 from table where 专业='计算机' with check option 这样where后面就实现了对专业的...
  • SQL With As 用法

    万次阅读 2018-10-07 16:17:15
    SQL With As 用法 一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以定义一个SQL片断,该SQL片断会被整个SQL语句用到。可以使SQL语句的可读性更高,也可以在UNION ALL的不同部分,...
  • Java7里try-with-resources分析

    万次阅读 多人点赞 2014-01-18 22:18:34
    这个所谓的try-with-resources,是个语法糖。实际上就是自动调用资源的close()函数。和Python里的with语句差不多。 例如:   static String readFirstLineFromFile(String path) throws IOException { try ...
  • Python with用法

    千次阅读 2014-03-07 16:04:57
    Python的with用法,详解!
  • Python中with的用法

    万次阅读 多人点赞 2018-07-01 12:03:29
    With语句是什么? 有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。其中一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 256,570
精华内容 102,628
关键字:

with后面可加什么