Any body have any ideas on this one?
Have an Sqlserver 2000 instance with SP3a on it and had a
problem where we had multiple data files within the
primary filegroup. An end user was adding rows into the
table and received an out of space error on the data
component. Checking the properties on the files the auto
extend option had been turned off , which was fine in our
environment, however, checking the space used in each of
these files showed that there was plenty of space
available for use in all. (No, it wasnt the trans log that
gave grief), I allowed the autoextend on each file and got
over the problem for the table in the short term , (and
saw one of the files extend.)
This lead me to do some thinking about the way Sqlserver
handles the growth of tables on multiple files. The good
book says that Sqlserver will allocate in a round robin
fashion the data pages to a table, however this doesnt
seem to be the case. Also, How does the table what file it
is on. I found this in the sysindexes table and decoding
the first value (Contains fileid and page id and row
offset).
Thats fine, however the major problem is, if Sqlserver
doesnt do the round robin allocation of datapages like it
should, then are all your free space calcs on the file
allocation valid?
Any thoughts' Any stored procedures about to handle this'
cheers
MikeWe've had an experience in the past, where the disks seemed to get overused
and reported an error similar to (unable to allocate space). Unfortunately,
I cannot
remember the specifics. We've had a problem where the auto-extend conflicts
with
an insert.
With regard to the round robin filling, sql server will fill the files using
a proporitional
algorithm. Therefore if you fill one file then add another, the 2nd file
will get filled. If
you create 2 files at the same time, then you will observe that each file is
filled with the
same amount of data each time. In short a 20GB insert will put 10GB in each
file.
HTH
"Mike" <anonymous@.discussions.microsoft.com> wrote in message
news:1a9101c3e08e$548d4c70$a101280a@.phx.gbl...
> Any body have any ideas on this one?
> Have an Sqlserver 2000 instance with SP3a on it and had a
> problem where we had multiple data files within the
> primary filegroup. An end user was adding rows into the
> table and received an out of space error on the data
> component. Checking the properties on the files the auto
> extend option had been turned off , which was fine in our
> environment, however, checking the space used in each of
> these files showed that there was plenty of space
> available for use in all. (No, it wasnt the trans log that
> gave grief), I allowed the autoextend on each file and got
> over the problem for the table in the short term , (and
> saw one of the files extend.)
> This lead me to do some thinking about the way Sqlserver
> handles the growth of tables on multiple files. The good
> book says that Sqlserver will allocate in a round robin
> fashion the data pages to a table, however this doesnt
> seem to be the case. Also, How does the table what file it
> is on. I found this in the sysindexes table and decoding
> the first value (Contains fileid and page id and row
> offset).
> Thats fine, however the major problem is, if Sqlserver
> doesnt do the round robin allocation of datapages like it
> should, then are all your free space calcs on the file
> allocation valid?
> Any thoughts' Any stored procedures about to handle this'
> cheers
> Mike|||Interesting,
still leads to the problem where you think you should have
space available because you tally the total of all file
systems and unfortunately one is full!!! Kind of makes one
stop and think about what level should your space
statistcs be collected at and how you manage them!
>--Original Message--
>We've had an experience in the past, where the disks
seemed to get overused
>and reported an error similar to (unable to allocate
space). Unfortunately,
>I cannot
>remember the specifics. We've had a problem where the
auto-extend conflicts
>with
>an insert.
>
>With regard to the round robin filling, sql server will
fill the files using
>a proporitional
>algorithm. Therefore if you fill one file then add
another, the 2nd file
>will get filled. If
>you create 2 files at the same time, then you will
observe that each file is
>filled with the
>same amount of data each time. In short a 20GB insert
will put 10GB in each
>file.
>HTH
>"Mike" <anonymous@.discussions.microsoft.com> wrote in
message
>news:1a9101c3e08e$548d4c70$a101280a@.phx.gbl...
>> Any body have any ideas on this one?
>> Have an Sqlserver 2000 instance with SP3a on it and had
a
>> problem where we had multiple data files within the
>> primary filegroup. An end user was adding rows into the
>> table and received an out of space error on the data
>> component. Checking the properties on the files the auto
>> extend option had been turned off , which was fine in
our
>> environment, however, checking the space used in each of
>> these files showed that there was plenty of space
>> available for use in all. (No, it wasnt the trans log
that
>> gave grief), I allowed the autoextend on each file and
got
>> over the problem for the table in the short term , (and
>> saw one of the files extend.)
>> This lead me to do some thinking about the way Sqlserver
>> handles the growth of tables on multiple files. The good
>> book says that Sqlserver will allocate in a round robin
>> fashion the data pages to a table, however this doesnt
>> seem to be the case. Also, How does the table what file
it
>> is on. I found this in the sysindexes table and decoding
>> the first value (Contains fileid and page id and row
>> offset).
>> Thats fine, however the major problem is, if Sqlserver
>> doesnt do the round robin allocation of datapages like
it
>> should, then are all your free space calcs on the file
>> allocation valid?
>> Any thoughts' Any stored procedures about to handle
this'
>> cheers
>> Mike
>
>.
>
No comments:
Post a Comment