易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL Server2005 事务隔离级别

任何事务无论其隔离级别如何,都具有原子性。原子性和隔离级别是两码事。
假定只有一种资源数据表上的“行“可以被锁定。锁只有共享锁和排他锁两种。
锁的兼容性:
  SX
S 10
X 00
事务的隔离级别:
Read Uncommitted
数据读取时不需要锁定
Read Committed
数据读取时需要共享锁定
Repeatable Read
数据读取时需要排他锁
Serializable
事务必须等同于串行执行
注意无论任何时候更新行都必须要有排他锁。
插入行不需要锁。
在Read Committed隔离级别下,数据读取完毕后立即释放共享锁,而在Repeatable Read隔离级别下,事务保持共享
锁直到整个事务结束。
在SQL Server中调整事务隔离级别是针对会话的,set tran isolation level后,会话中后来开始的事务都在此隔
离级别上执行。一个事务只能具有一个隔离级别。同一会话中的所有事务必须串行执行。必须通过begin tran语句来覆盖默认事务范围。
测试:
 /*环境*/
CREATE TABLE [dbo].[TranTest](
 [Id] [int] IDENTITY(1,1) NOT NULL,
 [count1] [int] NULL,
 [count2] [int] NULL
)
insert into TranTest values(1,2)
insert into TranTest values(3,4)
insert into TranTest values(5,6)
insert into TranTest values(7,8)
约定总是先执行session1,并且在session1结束前执行session2
1. 排他锁总是在事务结束时释放
--session 1
set tran isolation level any
begin tran
 update TranTest set count1=count1 + 10 where id=1
 waitfor delay '00:00:10'
commit tran
--session 2
 select * from TranTest
现象:session2被阻塞直到session1中的会话结束。
解释:session1首先执行,更新id=1的行时持有了该行的排他锁,该锁直到session1中的事务结束时释放,这阻止
了session2获得共享锁。
2. 读未提交无需任何锁
--session 1
set tran isolation level any
begin tran
 update TranTest set count1=count1 + 10 where id=1
 waitfor delay '00:00:10'
commit tran
--session 2
set tran isolation level read uncommitted
begin tran
 select * from TranTest
commit tran
现象:session2未被阻塞,而是读取到了session1尚未提交的数据。
解释:读未提交无需锁定,因而绕开了锁定机制。
3. 死锁
--session 1
set tran isolation level read committed
begin tr


相关文档:

Using Oracle Trace Analyzer (trcanlzr.sql)


Using Oracle Trace Analyzer (trcanlzr.sql)
Dave Moore:  Author of Oracle Utilities
Oracle has provided another utility initially designed for performance tuning Oracle Applications.  Trace Analyzer is provided in the form of a PL/SQL package (TRCA$ ).  The Trace Analyzer utility i ......

SQL调整最关注的是什么?

调整的目的就是为了消耗最小的资源来完成功能,通过查看执行计划和各种统计信息来分辨调整后的sql对资源的耗费情况,来找出一个成本最小的sql语句
检查系统的I/O问题
vmstate能检查整个系统的iostat(IO statistics)
查看该SQL的response time(db block gets/consistent gets/physical reads/sorts (disk)) ......

获取数据库中的表结构的sql语句

--获取某个数据库中的表结构
SELECT    
  --表名=case   when   a.colorder=1   then   d.name   else   ''   end,
  序号=a.colorder,
  --标识=case   when   COLUMNPROPERTY(&nbs ......

如何升级sql server 2000至2005

从sql server 2000升级到2005有5种方法:
l直接升级
l利用detach/attach功能移动sql  server 2000的数据库到2005
l通过backup/restore功能来迁移db
l通过sql server 2005的database copy wizard来拷贝数据库
l通过dts的export/import工具来迁移数据到sql server 2005
1.第一种方法(直接升级):
适合: 数据 ......

SQL Server 行列转换

在SQL SERVER中,有时需要合多列值到行的需求,常见的方法有:1.创建自定义函数,2.使用游标法进行字符串合并。3.使用临时表实现字符串合并。 数据: DEPTNO EMPS
------ ----------
10 CLARK
10 KING
10 MILLER
20 SMITH
20 ADAMS
20 FORD
20 SCOTT
20 JONES
30 ALLEN
30 BLAKE
30 MARTIN
30 JAMES
30 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号