Important question about linq to SQL performance on high loaded web applications

Posted by Alex on Stack Overflow See other posts from Stack Overflow or by Alex
Published on 2010-03-31T02:21:08Z Indexed on 2010/03/31 2:23 UTC
Read the original article Hit count: 311

Filed under:
|

I started working with linq to SQL several weeks ago. I got really tired of working with SQL server directly through the SQL queries (sqldatareader, sqlcommand and all this good stuff). 

After hearing about linq to SQL and mvc I quickly moved all my projects to these technologies. I expected linq to SQL work slower but it suprisongly turned out to be pretty fast, primarily because I always forgot to close my connections when using datareaders. Now I don't have to worry about it.

But there's one problem that really bothers me. There's one page that's requested thousands of times a day. The system gets data in the beginning, works with it and updates it. Primarily the updates are ++ @ -- (increase and decrease values). I used to do it like this

UPDATE table SET value=value+1 WHERE ID=@I'd

It worked with no problems obviously. But with linq to SQL the data is taken in the beginning, moved to the class, changed and then saved.

Stats.registeredusers++; Db.submitchanges();

Let's say there were 100 000 users. Linq will say "let it be 100 001" instead of "let it be increased by 1".

But if there value of users has already been increased (that happens in my site all the time) then linq will be like oops, this value is already 100 001. Whatever I'll throw an exception"

You can change this behavior so that it won't throw an exception but it still will not set the value to 100 002.

Like I said, it happened with me all the time. The stas value was increased twice a second on average. I simply had to rewrite this chunk of code with classic ado net.

So my question is how can you solve the problem with linq

© Stack Overflow or respective owner

Related posts about asp.net-mvc

Related posts about linq-to-sql