Re: Using MARS with JDBC Driver
- From: "Angel Saenz-Badillos[MS]" <angelsa@xxxxxxxxxxxxxxxxxxxx>
- Date: Thu, 19 Jan 2006 09:03:58 -0800
I appreciate the problem
--
Angel Saenz-Badillos [MS] DataWorks
This posting is provided "AS IS", with no warranties, and confers no
rights.Please do not send email directly to this alias.
This alias is for newsgroup purposes only.
I am now blogging: http://weblogs.asp.net/angelsb/
"Jerry Brenner" <Jerry Brenner@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:74B0663A-32DE-483B-A639-67E9ADB9A6B8@xxxxxxxxxxxxxxxx
>I work with Wes. I've been led to believe by various people from
>Microsoft,
> prior to the release, that MARS would be supported and then, after the
> relase at a TechNet program, was supported in the jdbc driver. This is
> the
> #1 issue that is driving us to SQL Server 2005 because the lack of this
> feature is limiting our ability to scale.
>
> We need to synchronize across multiple app servers, so we do this by
> getting
> update locks in the database. In Oracle, we do a SELECT FOR UPDATE. When
> we
> first started on SQL Server 2000, we were running in cursor mode and did
> the
> equivalent. Once we started doing performance work, we saw that we needed
> to
> change to direct mode. At that point, I changed the code to do an UPDATE
> for
> an update lock when running against SQL Server. We have a number of
> concurrency stress tests. We were getting deadlocks in those tests
> between 2
> searched updates on the same row because of the locking on index rows. I
> have a friend who is an architect in the SQL Server group. I twice had to
> go
> to him and then to a developer that works on the locking code to come up
> with
> a solution. (The solution was to index a certain way and to use
> HOLDLOCK.)
> The problems in our concurrency stress tests got resolved after the 2nd
> pass.
> However, we now have similar problems in an internal application that only
> has a couple of users.
>
> Given the continued problems, we are trying to move to SQL Server 2005 in
> preparation for our next release. Our biggest customer on SQL Server is
> planning to go live on our next release and we are concerned that we won't
> be
> able to scale to that level without MARS. (We have no problem scaling to
> that level with Oracle.) Furthermore, based on our experience with the
> small
> internal app, we are concerned that some new functionality could get
> introduced into the larger app that will change the access patterns and
> cause
> the deadlocks to emerge again.
>
> The work arounds that you suggest won't work for us. Is there a projected
> timeframe for a solution?
>
> "Angel Saenz-Badillos[MS]" wrote:
>
>> To be clear I am talking about the MICROSOFT SQL SERVER 2005 JDBC DRIVER
>>
>> --
>> Angel Saenz-Badillos [MS] DataWorks
>> This posting is provided "AS IS", with no warranties, and confers no
>> rights.Please do not send email directly to this alias.
>> This alias is for newsgroup purposes only.
>> I am now blogging: http://weblogs.asp.net/angelsb/
>>
>>
>>
>>
>> "Angel Saenz-Badillos[MS]" <angelsa@xxxxxxxxxxxxxxxxxxxx> wrote in
>> message
>> news:eHKsFQJHGHA.3176@xxxxxxxxxxxxxxxxxxxxxxx
>> > Wes,
>> > Mars is not supported with the v1.0 driver, it is a feature that we are
>> > looking to implement in a later release (given how extremely hard this
>> > is
>> > to implement and the poor bang for the buck this feature gives it will
>> > probably be implemented post v1.1).
>> >
>> > As per JDBC spec MARS like behavior is supported in this driver, (the
>> > driver will behave as if MARS is enabled thanks to some under the
>> > covers
>> > "magic") The two accepted ways to do this in the JDBC space are to
>> > either
>> > create a new connection under the covers whenever you ask for a second
>> > resultset or to client side cache the data from your entire resultset
>> > so
>> > that the tds buffer is free and available for a second resultset at any
>> > time. For this driver and keeping in mind that Pooling will be mostly
>> > supported by application servers we decided against opening a second
>> > connection (this basically kills your pooling story) and opted for
>> > client
>> > side caching.
>> >
>> > The obvious problem with client side caching is that it becomes really
>> > inneficient to retrieve large resultsets, in extreme cases you may
>> > actually run out of JVM memory! The workarround is to retrieve smaller
>> > ammounts of data (always a good recomendation) or when this is not
>> > feasible to use server side cursors. When you use server side cursors
>> > you
>> > only client side cache the specified (fetchsize) number of rows. We are
>> > providing a very granular server side cursor story in this driver.
>> >
>> > I hope this helps, let me know if you have any specific comments or
>> > concerns.
>> >
>> > --
>> > Angel Saenz-Badillos [MS] DataWorks
>> > This posting is provided "AS IS", with no warranties, and confers no
>> > rights.Please do not send email directly to this alias.
>> > This alias is for newsgroup purposes only.
>> > I am now blogging: http://weblogs.asp.net/angelsb/
>> >
>> >
>> >
>> >
>> > "Wes Clark" <WesClark@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
>> > news:9CE9D427-E6A4-42F8-82A9-023666DB084E@xxxxxxxxxxxxxxxx
>> >> Is MARS supported through JDBC? Is the connection the same? Is this
>> >> documented anywhere?
>> >
>> >
>>
>>
>>
.
- References:
- Re: Using MARS with JDBC Driver
- From: Angel Saenz-Badillos[MS]
- Re: Using MARS with JDBC Driver
- From: Angel Saenz-Badillos[MS]
- Re: Using MARS with JDBC Driver
- From: Jerry Brenner
- Re: Using MARS with JDBC Driver
- Prev by Date: Re: Using MARS with JDBC Driver
- Next by Date: Re: Using MARS with JDBC Driver
- Previous by thread: Re: Using MARS with JDBC Driver
- Next by thread: Re: Using MARS with JDBC Driver
- Index(es):
Relevant Pages
|
Loading