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

讲解MSSQL数据库中SQL锁机制和事务隔离级别

锁机制
NOLOCK和READPAST的区别。
1. 开启一个事务执行插入数据的操作。
BEGIN TRAN t
INSERT INTO Customer
SELECT 'a','a'
2. 执行一条查询语句。
SELECT * from Customer WITH (NOLOCK)
结果中显示"a"和"a"。当1中事务回滚后,那么a将成为脏数据。(注:1中的事务未提交) 。NOLOCK表明没有对数据表添加共享锁以阻止其它事务对数据表数据的修改。
SELECT * from Customer
这条语句将一直死锁,直到排他锁解除或者锁超时为止。(注:设置锁超时SET LOCK_TIMEOUT 1800)
SELECT * from Customer WITH (READPAST)
这条语句将显示a未提交前的状态,但不锁定整个表。这个提示指明数据库引擎返回结果时忽略加锁的行或数据页。
3. 执行一条插入语句。
BEGIN TRAN t
INSERT INTO Customer
SELECT 'b','b'
COMMIT TRAN t
这个时候,即使步骤1的事务回滚,那么a这条数据将丢失,而b继续插入数据库中。
NOLOCK
1. 执行如下语句。
BEGIN TRAN ttt
SELECT * from Customer WITH (NOLOCK)
WAITFOR delay '00:00:20'
COMMIT TRAN ttt
注:NOLOCK不加任何锁,可以增删查改而不锁定。
INSERT INTO Customer SELECT 'a','b' –不锁定
DELETE Customer where ID=1 –不锁定
SELECT * from Customer –不锁定
UPDATE Customer SET Title='aa' WHERE ID=1 –不锁定
ROWLOCK
1. 执行一条带行锁的查询语句。
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ -- (必须)
BEGIN TRAN ttt
SELECT * from Customer WITH (ROWLOCK) WHERE ID=17
WAITFOR delay '00:00:20'
COMMIT TRAN ttt
注:在删除和更新正在查询的数据时,会锁定数据。对其他未查询的行和增加,查询数据无影响。
INSERT INTO Customer SELECT 'a','b' –不等待
DELETE Customer where ID=17 –等待
DELETE Customer where ID<>17 –不等待
SELECT * from Customer –不等待
UPDATE Customer SET Title='aa' WHERE ID=17–等待
UPDATE Customer SET Title='aa' WHERE ID<>17–不等待
HOLDLOCK,TABLOCK和TABLOCKX
1. 执行HOLDLOCK
BEGIN TRAN ttt
SELECT * from Customer WITH (HOLDLOCK)
WAITFOR delay '00:00:10'
COMMIT TRAN ttt
注:其他事务可以读取表,但不能更新删除
update Customer set Title='aa' —要等待10秒中。
SEL


相关文档:

hibernate sql查询 list


本文转载: http://hi.baidu.com/%D2%BB%C6%F0%C8%A5%CC%DF%C7%F2/blog/item/802027355899fe83a61e12ee.html
使用SQLQuery
对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery
()
获取这个接口。最简单的情况下,我们可以采用以下形式:
List
cats
=
sess.createSQLQuery
(
......

用TSQL把Access的表导入到远程Sql Server

用TSQL把Access的表导入到远程Sql Server:
把access 的.mdb里t_itemList 表的数据插入到远程SqlServer的t_itemL1111111表里。
SELECT  top 10 *  INTO  t_itemL1111111 IN [ODBC] 
[ODBC;Driver=SQL Server; UID=jyb;PWD=jyb;Server=10.1.18.49;DataBase=所有合并;]
    &nb ......

sql 查询慢的48个原因分析

查询速度慢的原因很多,常见如下几种:
  1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
  2、I/O吞吐量小,形成了瓶颈效应。
  3、没有创建计算列导致查询不优化。
  4、内存不足
  5、网络速度慢
  6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
  7、 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号