`
sswh
  • 浏览: 161856 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

SQLServer数据库笔记(二)

阅读更多

事件探查器

初次使用,一般选择上所有事件,并且在“筛选”选项卡上,选中 “排除系统ID”。

单击事件探查器上的“帮助”,会打开SQLServer联机帮助页面“使用SQL事件探查器进行监视”,切换到帮助目录,点击工具栏上的“定位”按钮,在选中的节点下面,有详细的事件分类信息,结合事件探查器熟悉这些内容,可以对SQLServer的执行过程有更好的理解。

在调试状态下看一下一个简单的JDBC程序的执行过程:

public static void main(String[] args) throws Exception {
    Class.forName("net.sourceforge.jtds.jdbc.Driver");
    Connection conn = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/test", "sa", "");
    conn.setAutoCommit(false);
    Statement stmt = conn.createStatement();
    stmt.execute("select * from cat insert into cat values('123', 'aaa')");
    conn.commit();
    stmt.close();
    conn.close();
}

  

    Class.forName("");//无影响;

    DriverManager.getConnection("");//执行过程如下:



 主要是登录事件(AuditLogin),登录时的初始设置如下(疑惑,在企业管理器中看到的默认连接选项不同?)




 jTDS在登录后执行如下设置:

 

    conn.setAutoCommit(false);//执行语句:SET IMPLICIT_TRANSACTIONS ON

    conn.createStatement();//无影响

    stmt.execute("");//执行过程如下(分两部分来看)


 可以看到,无论JDBC statement.execute()或者statement.executeBatch(),在SQLServer都是按Batch处理。

SP:CacheInsert:将sql语句转换为一般形式,并将语句的编译结果放入缓存中;可以看到对于insert语句,缓存的是参数化后的语句,这样,语句参数变化后,仍然能从缓存中得到已编译的语句。

SQLTransaction 开始:隐性事务开始;

Execution Plan:执行计划是表扫描: 





 TransactionLog:对于更新语句,记录事务日志。

    conn.commit();//执行过程如下:

 

 jTDS对于conn.commit()的命令是:   IF @@trancount > 0 COMMIT TRAN

另外,对于Read committed事务隔离级别,select语句在开始执行时获取共享锁,在语句结束后,即释放该锁。更新语句,则直到事务提交或回滚时才释放锁(排他)

    stmt.close();//无影响

    conn.close();//AuditLogout事件。

  • 大小: 58.5 KB
  • 大小: 17.7 KB
  • 大小: 23.5 KB
  • 大小: 12.4 KB
  • 大小: 55.2 KB
  • 大小: 4.6 KB
  • 大小: 41.1 KB
  • 大小: 40.8 KB
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics