Log in
::
Register
::
Not logged in
Home
Tags
Articles
Editorials
Stairways
Forums
Scripts
Videos
Blogs
QotD
Books
Ask SSC
SQL Jobs
Training
Authors
About us
Contact us
Newsletters
Write for us
Recent Posts
Recent Posts
Popular Topics
Popular Topics
Home
Search
Members
Calendar
Who's On
Home
»
SQL Server 2005
»
SQL Server 2005 Strategies
»
READ_COMMITTED_SNAPSHOT & TRUNCATE TABLE
READ_COMMITTED_SNAPSHOT & TRUNCATE TABLE
Rate Topic
Display Mode
Topic Options
Author
Message
geoffrey crombez
geoffrey crombez
Posted Friday, December 21, 2012 3:45 PM
Grasshopper
Group: General Forum Members
Last Login: Wednesday, April 17, 2013 1:40 AM
Points: 14,
Visits: 186
Hi,
when I use the READ_COMMITTED_SNAPSHOT and use DELETE FROM table the other session is not locked when SELECTING data.
However when I use TRUNCATE TABLE it does block the other session SELECTING data.
The difference I see is that the TRUNCATE does a X lock on PAGE level and the DELETE an IX on PAGE level.
So I know not to use TRUNCATE in such scenario, but I would like to understand what is different internally.
Kind Regards
Geoffrey
Post #1399620
Sean Lange
Sean Lange
Posted Wednesday, December 26, 2012 7:31 AM
SSCrazy Eights
Group: General Forum Members
Last Login: 2 days ago @ 8:46 AM
Points: 8,547,
Visits: 8,204
geoffrey crombez (12/21/2012)
Hi,
when I use the READ_COMMITTED_SNAPSHOT and use DELETE FROM table the other session is not locked when SELECTING data.
However when I use TRUNCATE TABLE it does block the other session SELECTING data.
The difference I see is that the TRUNCATE does a X lock on PAGE level and the DELETE an IX on PAGE level.
So I know not to use TRUNCATE in such scenario, but I would like to understand what is different internally.
Kind Regards
Geoffrey
The difference in what those two statements do. Delete simply deletes rows where a truncate removes the pages. The locking you are seeing is because of lock escalation. A truncate will lock the entire table because all of the pages are being removed. Of course truncate is a lot faster because of the minimal logging involved so the locking should be very short.
_______________________________________________________________
Need help? Help us help you.
Read the article at
http://www.sqlservercentral.com/articles/Best+Practices/61537/
for best practices on asking questions.
Need to split a string? Try Jeff Moden's
splitter
.
Cross Tabs and Pivots, Part 1 – Converting Rows to Columns
Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs
Post #1400243
GilaMonster
GilaMonster
Posted Wednesday, December 26, 2012 1:04 PM
SSC-Dedicated
Group: General Forum Members
Last Login: Today @ 12:35 PM
Points: 37,650,
Visits: 29,901
Sean Lange (12/26/2012)
The locking you are seeing is because of lock escalation.
It's not lock escalation.
Truncate table locks at the table level because there's no other sensible level to lock at (and iirc it takes an Sch-M lock too)
Lock escalation would be if the truncate first started taking row or page locks, got over the threshold and converted the locks to table
Gail Shaw
Microsoft Certified Master: SQL Server 2008, MVP
SQL In The Wild
: Discussions on DB performance with occasional diversions into recoverability
We walk in the dark places no others will enter
We stand on the bridge and no one may pass
Post #1400349
Sean Lange
Sean Lange
Posted Wednesday, December 26, 2012 1:07 PM
SSCrazy Eights
Group: General Forum Members
Last Login: 2 days ago @ 8:46 AM
Points: 8,547,
Visits: 8,204
GilaMonster (12/26/2012)
Sean Lange (12/26/2012)
The locking you are seeing is because of lock escalation.
It's not lock escalation.
Truncate table locks at the table level because there's no other sensible level to lock at (and iirc it takes an Sch-M lock too)
Lock escalation would be if the truncate first started taking row or page locks, got over the threshold and converted the locks to table
Thanks for the correction Gail. I knew the locking was at the table level but my incorrect terminology certainly made it unclear.
_______________________________________________________________
Need help? Help us help you.
Read the article at
http://www.sqlservercentral.com/articles/Best+Practices/61537/
for best practices on asking questions.
Need to split a string? Try Jeff Moden's
splitter
.
Cross Tabs and Pivots, Part 1 – Converting Rows to Columns
Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs
Post #1400351
« Prev Topic
|
Next Topic »
Permissions
You
cannot
post new topics.
You
cannot
post topic replies.
You
cannot
post new polls.
You
cannot
post replies to polls.
You
cannot
edit your own topics.
You
cannot
delete your own topics.
You
cannot
edit other topics.
You
cannot
delete other topics.
You
cannot
edit your own posts.
You
cannot
edit other posts.
You
cannot
delete your own posts.
You
cannot
delete other posts.
You
cannot
post events.
You
cannot
edit your own events.
You
cannot
edit other events.
You
cannot
delete your own events.
You
cannot
delete other events.
You
cannot
send private messages.
You
cannot
send emails.
You
may
read topics.
You
cannot
rate topics.
You
cannot
vote within polls.
You
cannot
upload attachments.
You
may
download attachments.
You
cannot
post HTML code.
You
cannot
edit HTML code.
You
cannot
post IFCode.
You
cannot
post JavaScript.
You
cannot
post EmotIcons.
You
cannot
post or upload images.
Copyright © 2002-2013 Simple Talk Publishing. All Rights Reserved.
Privacy Policy.
Terms of Use.
Report Abuse.