I have an ASP application running in a MS Windows Server 2003 computer
joined to a Windows 2000 Active Directory domain.
Different users have different roles, and the security in the SQL
database is based on Active Directory security groups (SQL server is
configured for Windows security and not SQL server security).
I would like to make certain ASP page show an icon depending on whether
the user has EXECUTE permission on a particular stored procedure.
Example: User X@.domain.com is a member of the Active Directory
security group APP-ADMIN. On the SQL server side, APP-ADMIN is the log
in of a SQL user called "App Admins", and App Admins have been granted
EXECUTE permission to the stored procedure spDeleteSomething. I want
the ASP to determine if X@.domain.com has the permission on
spDeleteSomething so an icon is displayed; in this case it should be
displayed.
I hope I made this clear, but if not, feel free to ask for more details.You can use the IS_MEMBER function to check to see if the current login is a
member of the App Admins group:
SELECT IS_MEMBER('domain.com\App Admins')
returns 1 if the current login is a member of the App Admins security group,
0 if they aren't.
"webJose" wrote:
> I have an ASP application running in a MS Windows Server 2003 computer
> joined to a Windows 2000 Active Directory domain.
> Different users have different roles, and the security in the SQL
> database is based on Active Directory security groups (SQL server is
> configured for Windows security and not SQL server security).
> I would like to make certain ASP page show an icon depending on whether
> the user has EXECUTE permission on a particular stored procedure.
> Example: User X@.domain.com is a member of the Active Directory
> security group APP-ADMIN. On the SQL server side, APP-ADMIN is the log
> in of a SQL user called "App Admins", and App Admins have been granted
> EXECUTE permission to the stored procedure spDeleteSomething. I want
> the ASP to determine if X@.domain.com has the permission on
> spDeleteSomething so an icon is displayed; in this case it should be
> displayed.
> I hope I made this clear, but if not, feel free to ask for more details.
>|||In ASP.NET, you can determine if a web user is a member of an Active
Directory group or role without going through SQL Server.
How To: Use Role Manager in ASP.NET 2.0
http://msdn.microsoft.com/library/d... />
000013.asp
For example:
if (Roles.IsUserInRole("TestRole"))
{
Label1.Text = User.Identity.Name + " is in role TestRole";
}
else
{
Label1.Text = User.Identity.Name + " is NOT in role TestRole";
}
"webJose" <webJose@.gmail.com> wrote in message
news:1140194004.035980.226530@.g14g2000cwa.googlegroups.com...
>I have an ASP application running in a MS Windows Server 2003 computer
> joined to a Windows 2000 Active Directory domain.
> Different users have different roles, and the security in the SQL
> database is based on Active Directory security groups (SQL server is
> configured for Windows security and not SQL server security).
> I would like to make certain ASP page show an icon depending on whether
> the user has EXECUTE permission on a particular stored procedure.
> Example: User X@.domain.com is a member of the Active Directory
> security group APP-ADMIN. On the SQL server side, APP-ADMIN is the log
> in of a SQL user called "App Admins", and App Admins have been granted
> EXECUTE permission to the stored procedure spDeleteSomething. I want
> the ASP to determine if X@.domain.com has the permission on
> spDeleteSomething so an icon is displayed; in this case it should be
> displayed.
> I hope I made this clear, but if not, feel free to ask for more details.
>|||JT: Thank you for your response. Although highly enlighting, I am not
using .NET (I know! I should be). :-)
Mark: Thank you for your response. IS_MEMBER workS OK for me. I'll
create user-defined functions to encapsulate this functionality. Now,
out of curiosity, is there a way to test for EXECUTE permissions on any
stored procedure like on the fly? For example, something like:
If CanExecute("spSomeSP") Then
Response.Write "You got it!"
End If
And CanExecute() would test somehow the permissions for the user ID on
the sp name passed as argument.|||You could query it from the sysprotects system table.
For SQL 2000:
IF EXISTS (
SELECT 1 FROM sysprotects
WHERE [id] = OBJECT_ID('yourproc')
AND [uid] = USER_ID()
AND [action] = 224
AND [protecttype] IN (204,205)
)
BEGIN
PRINT 'You have access'
END
For SQL 2005
IF EXISTS (
SELECT 1 FROM sys.database_permissions
WHERE [class] = 1
AND [major_id] = OBJECT_ID('yourproc')
AND [grantee_principal_id] = USER_ID()
AND [type] = 'EX'
AND [state] IN ('G','W')
)
BEGIN
PRINT 'You have access'
END
"webJose" wrote:
> JT: Thank you for your response. Although highly enlighting, I am not
> using .NET (I know! I should be). :-)
> Mark: Thank you for your response. IS_MEMBER workS OK for me. I'll
> create user-defined functions to encapsulate this functionality. Now,
> out of curiosity, is there a way to test for EXECUTE permissions on any
> stored procedure like on the fly? For example, something like:
> If CanExecute("spSomeSP") Then
> Response.Write "You got it!"
> End If
> And CanExecute() would test somehow the permissions for the user ID on
> the sp name passed as argument.
>|||One caveat to this: the will only return that the user has access if the use
r
they map too was explicity given access to execute procedure. If their
permission is inherited from membership in a server or database role, my
script will not show them as having access.
If you are explicitly giving execute permission to each of the users, then
it will work.
"Mark Williams" wrote:
> You could query it from the sysprotects system table.
> For SQL 2000:
> IF EXISTS (
> SELECT 1 FROM sysprotects
> WHERE [id] = OBJECT_ID('yourproc')
> AND [uid] = USER_ID()
> AND [action] = 224
> AND [protecttype] IN (204,205)
> )
> BEGIN
> PRINT 'You have access'
> END
> For SQL 2005
> IF EXISTS (
> SELECT 1 FROM sys.database_permissions
> WHERE [class] = 1
> AND [major_id] = OBJECT_ID('yourproc')
> AND [grantee_principal_id] = USER_ID()
> AND [type] = 'EX'
> AND [state] IN ('G','W')
> )
> BEGIN
> PRINT 'You have access'
> END
> --
> "webJose" wrote:
>
Showing posts with label users. Show all posts
Showing posts with label users. Show all posts
Tuesday, March 27, 2012
Determine Nearest Day
Hi,
Users of an application can retrieve sales between 2 dates that they pick in
the front end (DateFrom & DateTo)
I have sales data that these values will be used to query, the data is
always summarised to the Sunday of each w
.
Before my stored procedure attempts to query, it needs to work out the
nearest Sunday for each of the dates. Eg;
DateFrom = 14th December 2005
This date needs to be converted to look 'backwards' for the nearest Sunday.
It needs to find 11th December.
DateTo = 29th December 2005
This needs to be converted forwards to look to the nearest Sunday. It needs
to find 01 Jan 2006.
Is there any TSQL that can be used to work this out, or is it a case of
using a lookup table (which I do have available)
Thanks
DylanHi
DECLARE @.Today datetime
SET @.Today = '20060105'
SELECT DATEADD(day, DATEDIFF(day, '1900', @.Today)/7*7+6 , '1900')
"DylanM" <DylanM@.discussions.microsoft.com> wrote in message
news:031DC14C-596B-411C-B15D-88D17743AB7E@.microsoft.com...
> Hi,
> Users of an application can retrieve sales between 2 dates that they pick
> in
> the front end (DateFrom & DateTo)
> I have sales data that these values will be used to query, the data is
> always summarised to the Sunday of each w
.
> Before my stored procedure attempts to query, it needs to work out the
> nearest Sunday for each of the dates. Eg;
> DateFrom = 14th December 2005
> This date needs to be converted to look 'backwards' for the nearest
> Sunday.
> It needs to find 11th December.
> DateTo = 29th December 2005
> This needs to be converted forwards to look to the nearest Sunday. It
> needs
> to find 01 Jan 2006.
> Is there any TSQL that can be used to work this out, or is it a case of
> using a lookup table (which I do have available)
>
> Thanks
> Dylan
>|||Excellent, thanks Uri.
And to convert backwards, I thinks it's just as follows...' (-1 instead of
+6)
SELECT DATEADD(day, DATEDIFF(day, '1900', @.Today)/7*7-1 , '1900')
Thanks again.
"Uri Dimant" wrote:
> Hi
> DECLARE @.Today datetime
> SET @.Today = '20060105'
> SELECT DATEADD(day, DATEDIFF(day, '1900', @.Today)/7*7+6 , '1900')
>
>|||This rounds it up to the nearest Sunday. It prints DateTo, the day or the
w
dateto is, and then the rounded up date, and the day of the w
the
rounded up day is.
I suspect you can use the modulus operator to make this perform better, but
I'm not SK.
create table salesData
(pk int not null identity primary key,
DateTo datetime,
DateFrom Datetime)
GO
insert into salesData values (getdate()-101,getdate()-103)
insert into salesData values (getdate()-105,getdate()-108)
GO
select case when DATENAME ( dw , DateTo )='Sunday' then dateto
when DATENAME ( dw , DateTo )='Monday' then dateto-1
when DATENAME ( dw , DateTo )='Tuesday' then dateto-2
when DATENAME ( dw , DateTo )='Wednesday' then dateto-3
when DATENAME ( dw , DateTo )='Thursday' then dateto-4
when DATENAME ( dw , DateTo )='Friday' then dateto-5
when DATENAME ( dw , DateTo )='Saturday' then dateto-6
end,
dateto, datename(w
day,dateto),
case when DATENAME ( dw , DateTo )='Sunday' then datename(w
day, dateto)
when DATENAME ( dw , DateTo )='Monday' then datename(w
day, dateto-1)
when DATENAME ( dw , DateTo )='Tuesday' then datename(w
day, dateto-2)
when DATENAME ( dw , DateTo )='Wednesday' then datename(w
day, dateto-3)
when DATENAME ( dw , DateTo )='Thursday' then datename(w
day, dateto-4)
when DATENAME ( dw , DateTo )='Friday' then datename(w
day, dateto-5)
when DATENAME ( dw , DateTo )='Saturday' then datename(w
day, dateto-6)
end
from salesdata
go
drop table salesdata
go
Hilary Cotter
Looking for a SQL Server replication book?
http://www.nwsu.com/0974973602.html
Looking for a FAQ on Indexing Services/SQL FTS
http://www.indexserverfaq.com
"DylanM" <DylanM@.discussions.microsoft.com> wrote in message
news:031DC14C-596B-411C-B15D-88D17743AB7E@.microsoft.com...
> Hi,
> Users of an application can retrieve sales between 2 dates that they pick
> in
> the front end (DateFrom & DateTo)
> I have sales data that these values will be used to query, the data is
> always summarised to the Sunday of each w
.
> Before my stored procedure attempts to query, it needs to work out the
> nearest Sunday for each of the dates. Eg;
> DateFrom = 14th December 2005
> This date needs to be converted to look 'backwards' for the nearest
> Sunday.
> It needs to find 11th December.
> DateTo = 29th December 2005
> This needs to be converted forwards to look to the nearest Sunday. It
> needs
> to find 01 Jan 2006.
> Is there any TSQL that can be used to work this out, or is it a case of
> using a lookup table (which I do have available)
>
> Thanks
> Dylan
>|||To do it in one shot, try this:
SELECT DATEADD(day, DATEDIFF(day, '18991231', @.Today+3)/7*7 , '18991231')
It will find "next" Sunday, if today is Thursday, Friday, or Saturday,
it will find "This"
Sunday if today is Sunday, and it will find "last" Sunday if today is
Monday, Tuesday, or Wednesday.
Steve Kass
Drew Unviersity
DylanM wrote:
>Hi,
>Users of an application can retrieve sales between 2 dates that they pick i
n
>the front end (DateFrom & DateTo)
>I have sales data that these values will be used to query, the data is
>always summarised to the Sunday of each w
.
>Before my stored procedure attempts to query, it needs to work out the
>nearest Sunday for each of the dates. Eg;
>DateFrom = 14th December 2005
>This date needs to be converted to look 'backwards' for the nearest Sunday.
>It needs to find 11th December.
>DateTo = 29th December 2005
>This needs to be converted forwards to look to the nearest Sunday. It needs
>to find 01 Jan 2006.
>Is there any TSQL that can be used to work this out, or is it a case of
>using a lookup table (which I do have available)
>
>Thanks
>Dylan
>
>sql
Users of an application can retrieve sales between 2 dates that they pick in
the front end (DateFrom & DateTo)
I have sales data that these values will be used to query, the data is
always summarised to the Sunday of each w
Before my stored procedure attempts to query, it needs to work out the
nearest Sunday for each of the dates. Eg;
DateFrom = 14th December 2005
This date needs to be converted to look 'backwards' for the nearest Sunday.
It needs to find 11th December.
DateTo = 29th December 2005
This needs to be converted forwards to look to the nearest Sunday. It needs
to find 01 Jan 2006.
Is there any TSQL that can be used to work this out, or is it a case of
using a lookup table (which I do have available)
Thanks
DylanHi
DECLARE @.Today datetime
SET @.Today = '20060105'
SELECT DATEADD(day, DATEDIFF(day, '1900', @.Today)/7*7+6 , '1900')
"DylanM" <DylanM@.discussions.microsoft.com> wrote in message
news:031DC14C-596B-411C-B15D-88D17743AB7E@.microsoft.com...
> Hi,
> Users of an application can retrieve sales between 2 dates that they pick
> in
> the front end (DateFrom & DateTo)
> I have sales data that these values will be used to query, the data is
> always summarised to the Sunday of each w
> Before my stored procedure attempts to query, it needs to work out the
> nearest Sunday for each of the dates. Eg;
> DateFrom = 14th December 2005
> This date needs to be converted to look 'backwards' for the nearest
> Sunday.
> It needs to find 11th December.
> DateTo = 29th December 2005
> This needs to be converted forwards to look to the nearest Sunday. It
> needs
> to find 01 Jan 2006.
> Is there any TSQL that can be used to work this out, or is it a case of
> using a lookup table (which I do have available)
>
> Thanks
> Dylan
>|||Excellent, thanks Uri.
And to convert backwards, I thinks it's just as follows...' (-1 instead of
+6)
SELECT DATEADD(day, DATEDIFF(day, '1900', @.Today)/7*7-1 , '1900')
Thanks again.
"Uri Dimant" wrote:
> Hi
> DECLARE @.Today datetime
> SET @.Today = '20060105'
> SELECT DATEADD(day, DATEDIFF(day, '1900', @.Today)/7*7+6 , '1900')
>
>|||This rounds it up to the nearest Sunday. It prints DateTo, the day or the
w
rounded up day is.
I suspect you can use the modulus operator to make this perform better, but
I'm not SK.
create table salesData
(pk int not null identity primary key,
DateTo datetime,
DateFrom Datetime)
GO
insert into salesData values (getdate()-101,getdate()-103)
insert into salesData values (getdate()-105,getdate()-108)
GO
select case when DATENAME ( dw , DateTo )='Sunday' then dateto
when DATENAME ( dw , DateTo )='Monday' then dateto-1
when DATENAME ( dw , DateTo )='Tuesday' then dateto-2
when DATENAME ( dw , DateTo )='Wednesday' then dateto-3
when DATENAME ( dw , DateTo )='Thursday' then dateto-4
when DATENAME ( dw , DateTo )='Friday' then dateto-5
when DATENAME ( dw , DateTo )='Saturday' then dateto-6
end,
dateto, datename(w
case when DATENAME ( dw , DateTo )='Sunday' then datename(w
when DATENAME ( dw , DateTo )='Monday' then datename(w
when DATENAME ( dw , DateTo )='Tuesday' then datename(w
when DATENAME ( dw , DateTo )='Wednesday' then datename(w
when DATENAME ( dw , DateTo )='Thursday' then datename(w
when DATENAME ( dw , DateTo )='Friday' then datename(w
when DATENAME ( dw , DateTo )='Saturday' then datename(w
end
from salesdata
go
drop table salesdata
go
Hilary Cotter
Looking for a SQL Server replication book?
http://www.nwsu.com/0974973602.html
Looking for a FAQ on Indexing Services/SQL FTS
http://www.indexserverfaq.com
"DylanM" <DylanM@.discussions.microsoft.com> wrote in message
news:031DC14C-596B-411C-B15D-88D17743AB7E@.microsoft.com...
> Hi,
> Users of an application can retrieve sales between 2 dates that they pick
> in
> the front end (DateFrom & DateTo)
> I have sales data that these values will be used to query, the data is
> always summarised to the Sunday of each w
> Before my stored procedure attempts to query, it needs to work out the
> nearest Sunday for each of the dates. Eg;
> DateFrom = 14th December 2005
> This date needs to be converted to look 'backwards' for the nearest
> Sunday.
> It needs to find 11th December.
> DateTo = 29th December 2005
> This needs to be converted forwards to look to the nearest Sunday. It
> needs
> to find 01 Jan 2006.
> Is there any TSQL that can be used to work this out, or is it a case of
> using a lookup table (which I do have available)
>
> Thanks
> Dylan
>|||To do it in one shot, try this:
SELECT DATEADD(day, DATEDIFF(day, '18991231', @.Today+3)/7*7 , '18991231')
It will find "next" Sunday, if today is Thursday, Friday, or Saturday,
it will find "This"
Sunday if today is Sunday, and it will find "last" Sunday if today is
Monday, Tuesday, or Wednesday.
Steve Kass
Drew Unviersity
DylanM wrote:
>Hi,
>Users of an application can retrieve sales between 2 dates that they pick i
n
>the front end (DateFrom & DateTo)
>I have sales data that these values will be used to query, the data is
>always summarised to the Sunday of each w
>Before my stored procedure attempts to query, it needs to work out the
>nearest Sunday for each of the dates. Eg;
>DateFrom = 14th December 2005
>This date needs to be converted to look 'backwards' for the nearest Sunday.
>It needs to find 11th December.
>DateTo = 29th December 2005
>This needs to be converted forwards to look to the nearest Sunday. It needs
>to find 01 Jan 2006.
>Is there any TSQL that can be used to work this out, or is it a case of
>using a lookup table (which I do have available)
>
>Thanks
>Dylan
>
>sql
Sunday, March 25, 2012
Determine Disk Block Size ?
I have a SQL Server 2000 Enterprise database that processes 300
transactions/sec, approximately 300 users, and 250 GB in size. How can I
determine the the appropriate disk block size that should be on my system.
Thanks,
Unless you have an overriding reason, go with the hardware manufacturer's
recommendations. These are typically the default settings. Changing the
NTFS block size usually has no measurable effect on system performance.
Geoff N. Hiten
Microsoft SQL Server MVP
Senior Database Administrator
Careerbuilder.com
I support the Professional Association for SQL Server
www.sqlpass.org
"Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
> I have a SQL Server 2000 Enterprise database that processes 300
> transactions/sec, approximately 300 users, and 250 GB in size. How can I
> determine the the appropriate disk block size that should be on my system.
> Thanks,
>
|||Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...[vbcol=seagreen]
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
I[vbcol=seagreen]
system.
>
|||Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...[vbcol=seagreen]
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
I[vbcol=seagreen]
system.
>
|||Not that I disagree with the RAID-10 argument, I don't; however, I do
disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
The MS SQL Server Operations Manual makes a recommendation of using 64-KB
cluster sizes. We have done so with a dramatic total disk I/O throughput.
It makes sense. SQL Server reads and writes data in 8KB data pages, but
issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
simultaneously. If your block sizes are on these 8KB boundaries, SQL Server
Disk I/O requests can be more efficient.
Your biggest disk throughput bottleneck is total number of I/O Operations a
single spindle can handle. You're throughput will be based on type of
access, sequential versus random, and the size of each request. Optimizing
the request sizes coupled with a fixed maximum number of I/O Ops, should
make your system as efficient as possible.
Nevertheless, and along the same lines as the RAID arguments already
presented, this is also suggested from the Operations Manual: more smaller
disks are more efficient than fewer larger disks. This would come into play
in the 0 part of the RAID-10 argument. Striping allows more physical
spindles to fulfill requests, each one capable of servicing a theoretical
maximum number of I/O Ops. Furthermore, more files per Filegroup will spawn
additional disk threads per request. This coupled with number of disks can
greatly improve throughput.
Sincerely,
Anthony Thomas
"Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...[vbcol=seagreen]
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
I[vbcol=seagreen]
system.
>
|||An I agree with your comments except for the last one:[vbcol=seagreen]
Furthermore, more files per Filegroup will spawn
additional disk threads per request.
<<
That was true with 7.0 but is not necessarily true with SQL2000. In 2000
Sql Server can spawn multiple threads to read a single file as well. So
just having multiple files does not mean it will be more effecient or spawn
more threads than a single file.
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
> Not that I disagree with the RAID-10 argument, I don't; however, I do
> disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
> cluster sizes. We have done so with a dramatic total disk I/O throughput.
> It makes sense. SQL Server reads and writes data in 8KB data pages, but
> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
> simultaneously. If your block sizes are on these 8KB boundaries, SQL
> Server
> Disk I/O requests can be more efficient.
> Your biggest disk throughput bottleneck is total number of I/O Operations
> a
> single spindle can handle. You're throughput will be based on type of
> access, sequential versus random, and the size of each request.
> Optimizing
> the request sizes coupled with a fixed maximum number of I/O Ops, should
> make your system as efficient as possible.
> Nevertheless, and along the same lines as the RAID arguments already
> presented, this is also suggested from the Operations Manual: more smaller
> disks are more efficient than fewer larger disks. This would come into
> play
> in the 0 part of the RAID-10 argument. Striping allows more physical
> spindles to fulfill requests, each one capable of servicing a theoretical
> maximum number of I/O Ops. Furthermore, more files per Filegroup will
> spawn
> additional disk threads per request. This coupled with number of disks
> can
> greatly improve throughput.
> Sincerely,
>
> Anthony Thomas
>
> --
> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
> Hi
> Rather make sure that your drives are configured correctly.
> Make sure your logs on RAID-10, and preferably your data on a separate
> RAID-10 volume. RAID-5 hurts more than it helps.
> As Geoff said, block size is not important, but getting maximum IO
> throughput is.
> Regards
> --
> Mike Epprecht, Microsoft SQL Server MVP
> Zurich, Switzerland
> IM: mike@.epprecht.net
> MVP Program: http://www.microsoft.com/mvp
> Blog: http://www.msmvps.com/epprecht/
> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> I
> system.
>
|||I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
chunks, and spawns a thread per data file in each Filegroup. It also
mentioned that EE can exceed the number of concurrent extents per request
and managed the thread spawning more efficiently. But, damn if I can't
remember where I came across the information.
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
An I agree with your comments except for the last one:[vbcol=seagreen]
Furthermore, more files per Filegroup will spawn
additional disk threads per request.
<<
That was true with 7.0 but is not necessarily true with SQL2000. In 2000
Sql Server can spawn multiple threads to read a single file as well. So
just having multiple files does not mean it will be more effecient or spawn
more threads than a single file.
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
> Not that I disagree with the RAID-10 argument, I don't; however, I do
> disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
> cluster sizes. We have done so with a dramatic total disk I/O throughput.
> It makes sense. SQL Server reads and writes data in 8KB data pages, but
> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
> simultaneously. If your block sizes are on these 8KB boundaries, SQL
> Server
> Disk I/O requests can be more efficient.
> Your biggest disk throughput bottleneck is total number of I/O Operations
> a
> single spindle can handle. You're throughput will be based on type of
> access, sequential versus random, and the size of each request.
> Optimizing
> the request sizes coupled with a fixed maximum number of I/O Ops, should
> make your system as efficient as possible.
> Nevertheless, and along the same lines as the RAID arguments already
> presented, this is also suggested from the Operations Manual: more smaller
> disks are more efficient than fewer larger disks. This would come into
> play
> in the 0 part of the RAID-10 argument. Striping allows more physical
> spindles to fulfill requests, each one capable of servicing a theoretical
> maximum number of I/O Ops. Furthermore, more files per Filegroup will
> spawn
> additional disk threads per request. This coupled with number of disks
> can
> greatly improve throughput.
> Sincerely,
>
> Anthony Thomas
>
> --
> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
> Hi
> Rather make sure that your drives are configured correctly.
> Make sure your logs on RAID-10, and preferably your data on a separate
> RAID-10 volume. RAID-5 hurts more than it helps.
> As Geoff said, block size is not important, but getting maximum IO
> throughput is.
> Regards
> --
> Mike Epprecht, Microsoft SQL Server MVP
> Zurich, Switzerland
> IM: mike@.epprecht.net
> MVP Program: http://www.microsoft.com/mvp
> Blog: http://www.msmvps.com/epprecht/
> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> I
> system.
>
|||Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
http://www.microsoft.com/technet/pro...lIObasics.mspx
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>
|||As always, thanks Andrew. Yes, I am well aware of having to "filter" read
information and make judgement calls on the sources reliability. The
article I read seemed respectable, though. If I come across it, I'll post a
"What's up" response.
Sincerely,
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:ewn3Iz7BFHA.2260@.TK2MSFTNGP14.phx.gbl...
Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
http://www.microsoft.com/technet/pro...lIObasics.mspx
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>
|||Well, that doc confirmed at least part of what I read previously:
"SQL Server limits a single read-ahead request depth to 128 pages on most
editions. However, Microsoft SQL Server Enterprise Edition raises the limit
to 1,024 pages."
Sincerely,
Anthony Thomas
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:OIoyclBCFHA.3588@.TK2MSFTNGP11.phx.gbl...
As always, thanks Andrew. Yes, I am well aware of having to "filter" read
information and make judgement calls on the sources reliability. The
article I read seemed respectable, though. If I come across it, I'll post a
"What's up" response.
Sincerely,
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:ewn3Iz7BFHA.2260@.TK2MSFTNGP14.phx.gbl...
Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
http://www.microsoft.com/technet/pro...lIObasics.mspx
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>
transactions/sec, approximately 300 users, and 250 GB in size. How can I
determine the the appropriate disk block size that should be on my system.
Thanks,
Unless you have an overriding reason, go with the hardware manufacturer's
recommendations. These are typically the default settings. Changing the
NTFS block size usually has no measurable effect on system performance.
Geoff N. Hiten
Microsoft SQL Server MVP
Senior Database Administrator
Careerbuilder.com
I support the Professional Association for SQL Server
www.sqlpass.org
"Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
> I have a SQL Server 2000 Enterprise database that processes 300
> transactions/sec, approximately 300 users, and 250 GB in size. How can I
> determine the the appropriate disk block size that should be on my system.
> Thanks,
>
|||Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...[vbcol=seagreen]
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
I[vbcol=seagreen]
system.
>
|||Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...[vbcol=seagreen]
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
I[vbcol=seagreen]
system.
>
|||Not that I disagree with the RAID-10 argument, I don't; however, I do
disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
The MS SQL Server Operations Manual makes a recommendation of using 64-KB
cluster sizes. We have done so with a dramatic total disk I/O throughput.
It makes sense. SQL Server reads and writes data in 8KB data pages, but
issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
simultaneously. If your block sizes are on these 8KB boundaries, SQL Server
Disk I/O requests can be more efficient.
Your biggest disk throughput bottleneck is total number of I/O Operations a
single spindle can handle. You're throughput will be based on type of
access, sequential versus random, and the size of each request. Optimizing
the request sizes coupled with a fixed maximum number of I/O Ops, should
make your system as efficient as possible.
Nevertheless, and along the same lines as the RAID arguments already
presented, this is also suggested from the Operations Manual: more smaller
disks are more efficient than fewer larger disks. This would come into play
in the 0 part of the RAID-10 argument. Striping allows more physical
spindles to fulfill requests, each one capable of servicing a theoretical
maximum number of I/O Ops. Furthermore, more files per Filegroup will spawn
additional disk threads per request. This coupled with number of disks can
greatly improve throughput.
Sincerely,
Anthony Thomas
"Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...[vbcol=seagreen]
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
I[vbcol=seagreen]
system.
>
|||An I agree with your comments except for the last one:[vbcol=seagreen]
Furthermore, more files per Filegroup will spawn
additional disk threads per request.
<<
That was true with 7.0 but is not necessarily true with SQL2000. In 2000
Sql Server can spawn multiple threads to read a single file as well. So
just having multiple files does not mean it will be more effecient or spawn
more threads than a single file.
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
> Not that I disagree with the RAID-10 argument, I don't; however, I do
> disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
> cluster sizes. We have done so with a dramatic total disk I/O throughput.
> It makes sense. SQL Server reads and writes data in 8KB data pages, but
> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
> simultaneously. If your block sizes are on these 8KB boundaries, SQL
> Server
> Disk I/O requests can be more efficient.
> Your biggest disk throughput bottleneck is total number of I/O Operations
> a
> single spindle can handle. You're throughput will be based on type of
> access, sequential versus random, and the size of each request.
> Optimizing
> the request sizes coupled with a fixed maximum number of I/O Ops, should
> make your system as efficient as possible.
> Nevertheless, and along the same lines as the RAID arguments already
> presented, this is also suggested from the Operations Manual: more smaller
> disks are more efficient than fewer larger disks. This would come into
> play
> in the 0 part of the RAID-10 argument. Striping allows more physical
> spindles to fulfill requests, each one capable of servicing a theoretical
> maximum number of I/O Ops. Furthermore, more files per Filegroup will
> spawn
> additional disk threads per request. This coupled with number of disks
> can
> greatly improve throughput.
> Sincerely,
>
> Anthony Thomas
>
> --
> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
> Hi
> Rather make sure that your drives are configured correctly.
> Make sure your logs on RAID-10, and preferably your data on a separate
> RAID-10 volume. RAID-5 hurts more than it helps.
> As Geoff said, block size is not important, but getting maximum IO
> throughput is.
> Regards
> --
> Mike Epprecht, Microsoft SQL Server MVP
> Zurich, Switzerland
> IM: mike@.epprecht.net
> MVP Program: http://www.microsoft.com/mvp
> Blog: http://www.msmvps.com/epprecht/
> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> I
> system.
>
|||I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
chunks, and spawns a thread per data file in each Filegroup. It also
mentioned that EE can exceed the number of concurrent extents per request
and managed the thread spawning more efficiently. But, damn if I can't
remember where I came across the information.
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
An I agree with your comments except for the last one:[vbcol=seagreen]
Furthermore, more files per Filegroup will spawn
additional disk threads per request.
<<
That was true with 7.0 but is not necessarily true with SQL2000. In 2000
Sql Server can spawn multiple threads to read a single file as well. So
just having multiple files does not mean it will be more effecient or spawn
more threads than a single file.
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
> Not that I disagree with the RAID-10 argument, I don't; however, I do
> disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
> cluster sizes. We have done so with a dramatic total disk I/O throughput.
> It makes sense. SQL Server reads and writes data in 8KB data pages, but
> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
> simultaneously. If your block sizes are on these 8KB boundaries, SQL
> Server
> Disk I/O requests can be more efficient.
> Your biggest disk throughput bottleneck is total number of I/O Operations
> a
> single spindle can handle. You're throughput will be based on type of
> access, sequential versus random, and the size of each request.
> Optimizing
> the request sizes coupled with a fixed maximum number of I/O Ops, should
> make your system as efficient as possible.
> Nevertheless, and along the same lines as the RAID arguments already
> presented, this is also suggested from the Operations Manual: more smaller
> disks are more efficient than fewer larger disks. This would come into
> play
> in the 0 part of the RAID-10 argument. Striping allows more physical
> spindles to fulfill requests, each one capable of servicing a theoretical
> maximum number of I/O Ops. Furthermore, more files per Filegroup will
> spawn
> additional disk threads per request. This coupled with number of disks
> can
> greatly improve throughput.
> Sincerely,
>
> Anthony Thomas
>
> --
> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
> Hi
> Rather make sure that your drives are configured correctly.
> Make sure your logs on RAID-10, and preferably your data on a separate
> RAID-10 volume. RAID-5 hurts more than it helps.
> As Geoff said, block size is not important, but getting maximum IO
> throughput is.
> Regards
> --
> Mike Epprecht, Microsoft SQL Server MVP
> Zurich, Switzerland
> IM: mike@.epprecht.net
> MVP Program: http://www.microsoft.com/mvp
> Blog: http://www.msmvps.com/epprecht/
> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> I
> system.
>
|||Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
http://www.microsoft.com/technet/pro...lIObasics.mspx
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>
|||As always, thanks Andrew. Yes, I am well aware of having to "filter" read
information and make judgement calls on the sources reliability. The
article I read seemed respectable, though. If I come across it, I'll post a
"What's up" response.
Sincerely,
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:ewn3Iz7BFHA.2260@.TK2MSFTNGP14.phx.gbl...
Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
http://www.microsoft.com/technet/pro...lIObasics.mspx
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>
|||Well, that doc confirmed at least part of what I read previously:
"SQL Server limits a single read-ahead request depth to 128 pages on most
editions. However, Microsoft SQL Server Enterprise Edition raises the limit
to 1,024 pages."
Sincerely,
Anthony Thomas
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:OIoyclBCFHA.3588@.TK2MSFTNGP11.phx.gbl...
As always, thanks Andrew. Yes, I am well aware of having to "filter" read
information and make judgement calls on the sources reliability. The
article I read seemed respectable, though. If I come across it, I'll post a
"What's up" response.
Sincerely,
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:ewn3Iz7BFHA.2260@.TK2MSFTNGP14.phx.gbl...
Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
http://www.microsoft.com/technet/pro...lIObasics.mspx
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>
Labels:
300transactions,
approximately,
block,
database,
determine,
disk,
enterprise,
idetermine,
microsoft,
mysql,
oracle,
processes,
sec,
server,
size,
sql,
users
Determine Disk Block Size ?
I have a SQL Server 2000 Enterprise database that processes 300
transactions/sec, approximately 300 users, and 250 GB in size. How can I
determine the the appropriate disk block size that should be on my system.
Thanks,Unless you have an overriding reason, go with the hardware manufacturer's
recommendations. These are typically the default settings. Changing the
NTFS block size usually has no measurable effect on system performance.
Geoff N. Hiten
Microsoft SQL Server MVP
Senior Database Administrator
Careerbuilder.com
I support the Professional Association for SQL Server
www.sqlpass.org
"Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
> I have a SQL Server 2000 Enterprise database that processes 300
> transactions/sec, approximately 300 users, and 250 GB in size. How can I
> determine the the appropriate disk block size that should be on my system.
> Thanks,
>|||Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
--
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
I[vbcol=seagreen]
system.[vbcol=seagreen]
>|||Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
--
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
I[vbcol=seagreen]
system.[vbcol=seagreen]
>|||Not that I disagree with the RAID-10 argument, I don't; however, I do
disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
The MS SQL Server Operations Manual makes a recommendation of using 64-KB
cluster sizes. We have done so with a dramatic total disk I/O throughput.
It makes sense. SQL Server reads and writes data in 8KB data pages, but
issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
simultaneously. If your block sizes are on these 8KB boundaries, SQL Server
Disk I/O requests can be more efficient.
Your biggest disk throughput bottleneck is total number of I/O Operations a
single spindle can handle. You're throughput will be based on type of
access, sequential versus random, and the size of each request. Optimizing
the request sizes coupled with a fixed maximum number of I/O Ops, should
make your system as efficient as possible.
Nevertheless, and along the same lines as the RAID arguments already
presented, this is also suggested from the Operations Manual: more smaller
disks are more efficient than fewer larger disks. This would come into play
in the 0 part of the RAID-10 argument. Striping allows more physical
spindles to fulfill requests, each one capable of servicing a theoretical
maximum number of I/O Ops. Furthermore, more files per Filegroup will spawn
additional disk threads per request. This coupled with number of disks can
greatly improve throughput.
Sincerely,
Anthony Thomas
"Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
--
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
I[vbcol=seagreen]
system.[vbcol=seagreen]
>|||An I agree with your comments except for the last one:
Furthermore, more files per Filegroup will spawn
additional disk threads per request.
<<
That was true with 7.0 but is not necessarily true with SQL2000. In 2000
Sql Server can spawn multiple threads to read a single file as well. So
just having multiple files does not mean it will be more effecient or spawn
more threads than a single file.
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...[vbcol=seagreen]
> Not that I disagree with the RAID-10 argument, I don't; however, I do
> disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
> cluster sizes. We have done so with a dramatic total disk I/O throughput.
> It makes sense. SQL Server reads and writes data in 8KB data pages, but
> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
> simultaneously. If your block sizes are on these 8KB boundaries, SQL
> Server
> Disk I/O requests can be more efficient.
> Your biggest disk throughput bottleneck is total number of I/O Operations
> a
> single spindle can handle. You're throughput will be based on type of
> access, sequential versus random, and the size of each request.
> Optimizing
> the request sizes coupled with a fixed maximum number of I/O Ops, should
> make your system as efficient as possible.
> Nevertheless, and along the same lines as the RAID arguments already
> presented, this is also suggested from the Operations Manual: more smaller
> disks are more efficient than fewer larger disks. This would come into
> play
> in the 0 part of the RAID-10 argument. Striping allows more physical
> spindles to fulfill requests, each one capable of servicing a theoretical
> maximum number of I/O Ops. Furthermore, more files per Filegroup will
> spawn
> additional disk threads per request. This coupled with number of disks
> can
> greatly improve throughput.
> Sincerely,
>
> Anthony Thomas
>
> --
> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
> Hi
> Rather make sure that your drives are configured correctly.
> Make sure your logs on RAID-10, and preferably your data on a separate
> RAID-10 volume. RAID-5 hurts more than it helps.
> As Geoff said, block size is not important, but getting maximum IO
> throughput is.
> Regards
> --
> Mike Epprecht, Microsoft SQL Server MVP
> Zurich, Switzerland
> IM: mike@.epprecht.net
> MVP Program: http://www.microsoft.com/mvp
> Blog: http://www.msmvps.com/epprecht/
> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> I
> system.
>|||I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
chunks, and spawns a thread per data file in each Filegroup. It also
mentioned that EE can exceed the number of concurrent extents per request
and managed the thread spawning more efficiently. But, damn if I can't
remember where I came across the information.
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
An I agree with your comments except for the last one:
Furthermore, more files per Filegroup will spawn
additional disk threads per request.
<<
That was true with 7.0 but is not necessarily true with SQL2000. In 2000
Sql Server can spawn multiple threads to read a single file as well. So
just having multiple files does not mean it will be more effecient or spawn
more threads than a single file.
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...[vbcol=seagreen]
> Not that I disagree with the RAID-10 argument, I don't; however, I do
> disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
> cluster sizes. We have done so with a dramatic total disk I/O throughput.
> It makes sense. SQL Server reads and writes data in 8KB data pages, but
> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
> simultaneously. If your block sizes are on these 8KB boundaries, SQL
> Server
> Disk I/O requests can be more efficient.
> Your biggest disk throughput bottleneck is total number of I/O Operations
> a
> single spindle can handle. You're throughput will be based on type of
> access, sequential versus random, and the size of each request.
> Optimizing
> the request sizes coupled with a fixed maximum number of I/O Ops, should
> make your system as efficient as possible.
> Nevertheless, and along the same lines as the RAID arguments already
> presented, this is also suggested from the Operations Manual: more smaller
> disks are more efficient than fewer larger disks. This would come into
> play
> in the 0 part of the RAID-10 argument. Striping allows more physical
> spindles to fulfill requests, each one capable of servicing a theoretical
> maximum number of I/O Ops. Furthermore, more files per Filegroup will
> spawn
> additional disk threads per request. This coupled with number of disks
> can
> greatly improve throughput.
> Sincerely,
>
> Anthony Thomas
>
> --
> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
> Hi
> Rather make sure that your drives are configured correctly.
> Make sure your logs on RAID-10, and preferably your data on a separate
> RAID-10 volume. RAID-5 hurts more than it helps.
> As Geoff said, block size is not important, but getting maximum IO
> throughput is.
> Regards
> --
> Mike Epprecht, Microsoft SQL Server MVP
> Zurich, Switzerland
> IM: mike@.epprecht.net
> MVP Program: http://www.microsoft.com/mvp
> Blog: http://www.msmvps.com/epprecht/
> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> I
> system.
>|||Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
[url]http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx[/u
rl]
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>|||As always, thanks Andrew. Yes, I am well aware of having to "filter" read
information and make judgement calls on the sources reliability. The
article I read seemed respectable, though. If I come across it, I'll post a
"What's up" response.
Sincerely,
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:ewn3Iz7BFHA.2260@.TK2MSFTNGP14.phx.gbl...
Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
[url]http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx[/u
rl]
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>|||Well, that doc confirmed at least part of what I read previously:
"SQL Server limits a single read-ahead request depth to 128 pages on most
editions. However, Microsoft SQL Server Enterprise Edition raises the limit
to 1,024 pages."
Sincerely,
Anthony Thomas
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:OIoyclBCFHA.3588@.TK2MSFTNGP11.phx.gbl...
As always, thanks Andrew. Yes, I am well aware of having to "filter" read
information and make judgement calls on the sources reliability. The
article I read seemed respectable, though. If I come across it, I'll post a
"What's up" response.
Sincerely,
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:ewn3Iz7BFHA.2260@.TK2MSFTNGP14.phx.gbl...
Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
[url]http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx[/u
rl]
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>
transactions/sec, approximately 300 users, and 250 GB in size. How can I
determine the the appropriate disk block size that should be on my system.
Thanks,Unless you have an overriding reason, go with the hardware manufacturer's
recommendations. These are typically the default settings. Changing the
NTFS block size usually has no measurable effect on system performance.
Geoff N. Hiten
Microsoft SQL Server MVP
Senior Database Administrator
Careerbuilder.com
I support the Professional Association for SQL Server
www.sqlpass.org
"Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
> I have a SQL Server 2000 Enterprise database that processes 300
> transactions/sec, approximately 300 users, and 250 GB in size. How can I
> determine the the appropriate disk block size that should be on my system.
> Thanks,
>|||Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
--
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
I[vbcol=seagreen]
system.[vbcol=seagreen]
>|||Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
--
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
I[vbcol=seagreen]
system.[vbcol=seagreen]
>|||Not that I disagree with the RAID-10 argument, I don't; however, I do
disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
The MS SQL Server Operations Manual makes a recommendation of using 64-KB
cluster sizes. We have done so with a dramatic total disk I/O throughput.
It makes sense. SQL Server reads and writes data in 8KB data pages, but
issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
simultaneously. If your block sizes are on these 8KB boundaries, SQL Server
Disk I/O requests can be more efficient.
Your biggest disk throughput bottleneck is total number of I/O Operations a
single spindle can handle. You're throughput will be based on type of
access, sequential versus random, and the size of each request. Optimizing
the request sizes coupled with a fixed maximum number of I/O Ops, should
make your system as efficient as possible.
Nevertheless, and along the same lines as the RAID arguments already
presented, this is also suggested from the Operations Manual: more smaller
disks are more efficient than fewer larger disks. This would come into play
in the 0 part of the RAID-10 argument. Striping allows more physical
spindles to fulfill requests, each one capable of servicing a theoretical
maximum number of I/O Ops. Furthermore, more files per Filegroup will spawn
additional disk threads per request. This coupled with number of disks can
greatly improve throughput.
Sincerely,
Anthony Thomas
"Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
--
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
I[vbcol=seagreen]
system.[vbcol=seagreen]
>|||An I agree with your comments except for the last one:
Furthermore, more files per Filegroup will spawn
additional disk threads per request.
<<
That was true with 7.0 but is not necessarily true with SQL2000. In 2000
Sql Server can spawn multiple threads to read a single file as well. So
just having multiple files does not mean it will be more effecient or spawn
more threads than a single file.
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...[vbcol=seagreen]
> Not that I disagree with the RAID-10 argument, I don't; however, I do
> disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
> cluster sizes. We have done so with a dramatic total disk I/O throughput.
> It makes sense. SQL Server reads and writes data in 8KB data pages, but
> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
> simultaneously. If your block sizes are on these 8KB boundaries, SQL
> Server
> Disk I/O requests can be more efficient.
> Your biggest disk throughput bottleneck is total number of I/O Operations
> a
> single spindle can handle. You're throughput will be based on type of
> access, sequential versus random, and the size of each request.
> Optimizing
> the request sizes coupled with a fixed maximum number of I/O Ops, should
> make your system as efficient as possible.
> Nevertheless, and along the same lines as the RAID arguments already
> presented, this is also suggested from the Operations Manual: more smaller
> disks are more efficient than fewer larger disks. This would come into
> play
> in the 0 part of the RAID-10 argument. Striping allows more physical
> spindles to fulfill requests, each one capable of servicing a theoretical
> maximum number of I/O Ops. Furthermore, more files per Filegroup will
> spawn
> additional disk threads per request. This coupled with number of disks
> can
> greatly improve throughput.
> Sincerely,
>
> Anthony Thomas
>
> --
> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
> Hi
> Rather make sure that your drives are configured correctly.
> Make sure your logs on RAID-10, and preferably your data on a separate
> RAID-10 volume. RAID-5 hurts more than it helps.
> As Geoff said, block size is not important, but getting maximum IO
> throughput is.
> Regards
> --
> Mike Epprecht, Microsoft SQL Server MVP
> Zurich, Switzerland
> IM: mike@.epprecht.net
> MVP Program: http://www.microsoft.com/mvp
> Blog: http://www.msmvps.com/epprecht/
> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> I
> system.
>|||I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
chunks, and spawns a thread per data file in each Filegroup. It also
mentioned that EE can exceed the number of concurrent extents per request
and managed the thread spawning more efficiently. But, damn if I can't
remember where I came across the information.
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
An I agree with your comments except for the last one:
Furthermore, more files per Filegroup will spawn
additional disk threads per request.
<<
That was true with 7.0 but is not necessarily true with SQL2000. In 2000
Sql Server can spawn multiple threads to read a single file as well. So
just having multiple files does not mean it will be more effecient or spawn
more threads than a single file.
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...[vbcol=seagreen]
> Not that I disagree with the RAID-10 argument, I don't; however, I do
> disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
> cluster sizes. We have done so with a dramatic total disk I/O throughput.
> It makes sense. SQL Server reads and writes data in 8KB data pages, but
> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
> simultaneously. If your block sizes are on these 8KB boundaries, SQL
> Server
> Disk I/O requests can be more efficient.
> Your biggest disk throughput bottleneck is total number of I/O Operations
> a
> single spindle can handle. You're throughput will be based on type of
> access, sequential versus random, and the size of each request.
> Optimizing
> the request sizes coupled with a fixed maximum number of I/O Ops, should
> make your system as efficient as possible.
> Nevertheless, and along the same lines as the RAID arguments already
> presented, this is also suggested from the Operations Manual: more smaller
> disks are more efficient than fewer larger disks. This would come into
> play
> in the 0 part of the RAID-10 argument. Striping allows more physical
> spindles to fulfill requests, each one capable of servicing a theoretical
> maximum number of I/O Ops. Furthermore, more files per Filegroup will
> spawn
> additional disk threads per request. This coupled with number of disks
> can
> greatly improve throughput.
> Sincerely,
>
> Anthony Thomas
>
> --
> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
> Hi
> Rather make sure that your drives are configured correctly.
> Make sure your logs on RAID-10, and preferably your data on a separate
> RAID-10 volume. RAID-5 hurts more than it helps.
> As Geoff said, block size is not important, but getting maximum IO
> throughput is.
> Regards
> --
> Mike Epprecht, Microsoft SQL Server MVP
> Zurich, Switzerland
> IM: mike@.epprecht.net
> MVP Program: http://www.microsoft.com/mvp
> Blog: http://www.msmvps.com/epprecht/
> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> I
> system.
>|||Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
[url]http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx[/u
rl]
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>|||As always, thanks Andrew. Yes, I am well aware of having to "filter" read
information and make judgement calls on the sources reliability. The
article I read seemed respectable, though. If I come across it, I'll post a
"What's up" response.
Sincerely,
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:ewn3Iz7BFHA.2260@.TK2MSFTNGP14.phx.gbl...
Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
[url]http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx[/u
rl]
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>|||Well, that doc confirmed at least part of what I read previously:
"SQL Server limits a single read-ahead request depth to 128 pages on most
editions. However, Microsoft SQL Server Enterprise Edition raises the limit
to 1,024 pages."
Sincerely,
Anthony Thomas
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:OIoyclBCFHA.3588@.TK2MSFTNGP11.phx.gbl...
As always, thanks Andrew. Yes, I am well aware of having to "filter" read
information and make judgement calls on the sources reliability. The
article I read seemed respectable, though. If I come across it, I'll post a
"What's up" response.
Sincerely,
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:ewn3Iz7BFHA.2260@.TK2MSFTNGP14.phx.gbl...
Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
[url]http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx[/u
rl]
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>
Labels:
300transactions,
approximately,
block,
database,
determine,
disk,
enterprise,
idetermine,
microsoft,
mysql,
oracle,
processes,
sec,
server,
size,
sql,
users
Determine Disk Block Size ?
I have a SQL Server 2000 Enterprise database that processes 300
transactions/sec, approximately 300 users, and 250 GB in size. How can I
determine the the appropriate disk block size that should be on my system.
Thanks,Unless you have an overriding reason, go with the hardware manufacturer's
recommendations. These are typically the default settings. Changing the
NTFS block size usually has no measurable effect on system performance.
--
Geoff N. Hiten
Microsoft SQL Server MVP
Senior Database Administrator
Careerbuilder.com
I support the Professional Association for SQL Server
www.sqlpass.org
"Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
> I have a SQL Server 2000 Enterprise database that processes 300
> transactions/sec, approximately 300 users, and 250 GB in size. How can I
> determine the the appropriate disk block size that should be on my system.
> Thanks,
>|||Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
--
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
> >
> > I have a SQL Server 2000 Enterprise database that processes 300
> > transactions/sec, approximately 300 users, and 250 GB in size. How can
I
> > determine the the appropriate disk block size that should be on my
system.
> >
> > Thanks,
> >
> >
>|||Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
--
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
> >
> > I have a SQL Server 2000 Enterprise database that processes 300
> > transactions/sec, approximately 300 users, and 250 GB in size. How can
I
> > determine the the appropriate disk block size that should be on my
system.
> >
> > Thanks,
> >
> >
>|||Not that I disagree with the RAID-10 argument, I don't; however, I do
disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
The MS SQL Server Operations Manual makes a recommendation of using 64-KB
cluster sizes. We have done so with a dramatic total disk I/O throughput.
It makes sense. SQL Server reads and writes data in 8KB data pages, but
issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
simultaneously. If your block sizes are on these 8KB boundaries, SQL Server
Disk I/O requests can be more efficient.
Your biggest disk throughput bottleneck is total number of I/O Operations a
single spindle can handle. You're throughput will be based on type of
access, sequential versus random, and the size of each request. Optimizing
the request sizes coupled with a fixed maximum number of I/O Ops, should
make your system as efficient as possible.
Nevertheless, and along the same lines as the RAID arguments already
presented, this is also suggested from the Operations Manual: more smaller
disks are more efficient than fewer larger disks. This would come into play
in the 0 part of the RAID-10 argument. Striping allows more physical
spindles to fulfill requests, each one capable of servicing a theoretical
maximum number of I/O Ops. Furthermore, more files per Filegroup will spawn
additional disk threads per request. This coupled with number of disks can
greatly improve throughput.
Sincerely,
Anthony Thomas
"Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
--
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
> >
> > I have a SQL Server 2000 Enterprise database that processes 300
> > transactions/sec, approximately 300 users, and 250 GB in size. How can
I
> > determine the the appropriate disk block size that should be on my
system.
> >
> > Thanks,
> >
> >
>|||An I agree with your comments except for the last one:
Furthermore, more files per Filegroup will spawn
additional disk threads per request.
<<
That was true with 7.0 but is not necessarily true with SQL2000. In 2000
Sql Server can spawn multiple threads to read a single file as well. So
just having multiple files does not mean it will be more effecient or spawn
more threads than a single file.
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
> Not that I disagree with the RAID-10 argument, I don't; however, I do
> disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
> cluster sizes. We have done so with a dramatic total disk I/O throughput.
> It makes sense. SQL Server reads and writes data in 8KB data pages, but
> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
> simultaneously. If your block sizes are on these 8KB boundaries, SQL
> Server
> Disk I/O requests can be more efficient.
> Your biggest disk throughput bottleneck is total number of I/O Operations
> a
> single spindle can handle. You're throughput will be based on type of
> access, sequential versus random, and the size of each request.
> Optimizing
> the request sizes coupled with a fixed maximum number of I/O Ops, should
> make your system as efficient as possible.
> Nevertheless, and along the same lines as the RAID arguments already
> presented, this is also suggested from the Operations Manual: more smaller
> disks are more efficient than fewer larger disks. This would come into
> play
> in the 0 part of the RAID-10 argument. Striping allows more physical
> spindles to fulfill requests, each one capable of servicing a theoretical
> maximum number of I/O Ops. Furthermore, more files per Filegroup will
> spawn
> additional disk threads per request. This coupled with number of disks
> can
> greatly improve throughput.
> Sincerely,
>
> Anthony Thomas
>
> --
> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
> Hi
> Rather make sure that your drives are configured correctly.
> Make sure your logs on RAID-10, and preferably your data on a separate
> RAID-10 volume. RAID-5 hurts more than it helps.
> As Geoff said, block size is not important, but getting maximum IO
> throughput is.
> Regards
> --
> Mike Epprecht, Microsoft SQL Server MVP
> Zurich, Switzerland
> IM: mike@.epprecht.net
> MVP Program: http://www.microsoft.com/mvp
> Blog: http://www.msmvps.com/epprecht/
> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
>> Unless you have an overriding reason, go with the hardware manufacturer's
>> recommendations. These are typically the default settings. Changing the
>> NTFS block size usually has no measurable effect on system performance.
>> --
>> Geoff N. Hiten
>> Microsoft SQL Server MVP
>> Senior Database Administrator
>> Careerbuilder.com
>> I support the Professional Association for SQL Server
>> www.sqlpass.org
>> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
>> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
>> >
>> > I have a SQL Server 2000 Enterprise database that processes 300
>> > transactions/sec, approximately 300 users, and 250 GB in size. How can
> I
>> > determine the the appropriate disk block size that should be on my
> system.
>> >
>> > Thanks,
>> >
>> >
>>
>|||I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
chunks, and spawns a thread per data file in each Filegroup. It also
mentioned that EE can exceed the number of concurrent extents per request
and managed the thread spawning more efficiently. But, damn if I can't
remember where I came across the information.
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
An I agree with your comments except for the last one:
Furthermore, more files per Filegroup will spawn
additional disk threads per request.
<<
That was true with 7.0 but is not necessarily true with SQL2000. In 2000
Sql Server can spawn multiple threads to read a single file as well. So
just having multiple files does not mean it will be more effecient or spawn
more threads than a single file.
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
> Not that I disagree with the RAID-10 argument, I don't; however, I do
> disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
> cluster sizes. We have done so with a dramatic total disk I/O throughput.
> It makes sense. SQL Server reads and writes data in 8KB data pages, but
> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
> simultaneously. If your block sizes are on these 8KB boundaries, SQL
> Server
> Disk I/O requests can be more efficient.
> Your biggest disk throughput bottleneck is total number of I/O Operations
> a
> single spindle can handle. You're throughput will be based on type of
> access, sequential versus random, and the size of each request.
> Optimizing
> the request sizes coupled with a fixed maximum number of I/O Ops, should
> make your system as efficient as possible.
> Nevertheless, and along the same lines as the RAID arguments already
> presented, this is also suggested from the Operations Manual: more smaller
> disks are more efficient than fewer larger disks. This would come into
> play
> in the 0 part of the RAID-10 argument. Striping allows more physical
> spindles to fulfill requests, each one capable of servicing a theoretical
> maximum number of I/O Ops. Furthermore, more files per Filegroup will
> spawn
> additional disk threads per request. This coupled with number of disks
> can
> greatly improve throughput.
> Sincerely,
>
> Anthony Thomas
>
> --
> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
> Hi
> Rather make sure that your drives are configured correctly.
> Make sure your logs on RAID-10, and preferably your data on a separate
> RAID-10 volume. RAID-5 hurts more than it helps.
> As Geoff said, block size is not important, but getting maximum IO
> throughput is.
> Regards
> --
> Mike Epprecht, Microsoft SQL Server MVP
> Zurich, Switzerland
> IM: mike@.epprecht.net
> MVP Program: http://www.microsoft.com/mvp
> Blog: http://www.msmvps.com/epprecht/
> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
>> Unless you have an overriding reason, go with the hardware manufacturer's
>> recommendations. These are typically the default settings. Changing the
>> NTFS block size usually has no measurable effect on system performance.
>> --
>> Geoff N. Hiten
>> Microsoft SQL Server MVP
>> Senior Database Administrator
>> Careerbuilder.com
>> I support the Professional Association for SQL Server
>> www.sqlpass.org
>> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
>> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
>> >
>> > I have a SQL Server 2000 Enterprise database that processes 300
>> > transactions/sec, approximately 300 users, and 250 GB in size. How can
> I
>> > determine the the appropriate disk block size that should be on my
> system.
>> >
>> > Thanks,
>> >
>> >
>>
>|||Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx
--
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>> Not that I disagree with the RAID-10 argument, I don't; however, I do
>> disagree with your comments about NTFS Cluster Sizes (a.k.a., block
>> size).
>> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
>> cluster sizes. We have done so with a dramatic total disk I/O
>> throughput.
>> It makes sense. SQL Server reads and writes data in 8KB data pages, but
>> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
>> simultaneously. If your block sizes are on these 8KB boundaries, SQL
>> Server
>> Disk I/O requests can be more efficient.
>> Your biggest disk throughput bottleneck is total number of I/O Operations
>> a
>> single spindle can handle. You're throughput will be based on type of
>> access, sequential versus random, and the size of each request.
>> Optimizing
>> the request sizes coupled with a fixed maximum number of I/O Ops, should
>> make your system as efficient as possible.
>> Nevertheless, and along the same lines as the RAID arguments already
>> presented, this is also suggested from the Operations Manual: more
>> smaller
>> disks are more efficient than fewer larger disks. This would come into
>> play
>> in the 0 part of the RAID-10 argument. Striping allows more physical
>> spindles to fulfill requests, each one capable of servicing a theoretical
>> maximum number of I/O Ops. Furthermore, more files per Filegroup will
>> spawn
>> additional disk threads per request. This coupled with number of disks
>> can
>> greatly improve throughput.
>> Sincerely,
>>
>> Anthony Thomas
>>
>> --
>> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
>> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
>> Hi
>> Rather make sure that your drives are configured correctly.
>> Make sure your logs on RAID-10, and preferably your data on a separate
>> RAID-10 volume. RAID-5 hurts more than it helps.
>> As Geoff said, block size is not important, but getting maximum IO
>> throughput is.
>> Regards
>> --
>> Mike Epprecht, Microsoft SQL Server MVP
>> Zurich, Switzerland
>> IM: mike@.epprecht.net
>> MVP Program: http://www.microsoft.com/mvp
>> Blog: http://www.msmvps.com/epprecht/
>> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
>> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
>> Unless you have an overriding reason, go with the hardware
>> manufacturer's
>> recommendations. These are typically the default settings. Changing
>> the
>> NTFS block size usually has no measurable effect on system performance.
>> --
>> Geoff N. Hiten
>> Microsoft SQL Server MVP
>> Senior Database Administrator
>> Careerbuilder.com
>> I support the Professional Association for SQL Server
>> www.sqlpass.org
>> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
>> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
>> >
>> > I have a SQL Server 2000 Enterprise database that processes 300
>> > transactions/sec, approximately 300 users, and 250 GB in size. How
>> > can
>> I
>> > determine the the appropriate disk block size that should be on my
>> system.
>> >
>> > Thanks,
>> >
>> >
>>
>>
>|||As always, thanks Andrew. Yes, I am well aware of having to "filter" read
information and make judgement calls on the sources reliability. The
article I read seemed respectable, though. If I come across it, I'll post a
"What's up" response.
Sincerely,
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:ewn3Iz7BFHA.2260@.TK2MSFTNGP14.phx.gbl...
Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx
--
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>> Not that I disagree with the RAID-10 argument, I don't; however, I do
>> disagree with your comments about NTFS Cluster Sizes (a.k.a., block
>> size).
>> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
>> cluster sizes. We have done so with a dramatic total disk I/O
>> throughput.
>> It makes sense. SQL Server reads and writes data in 8KB data pages, but
>> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
>> simultaneously. If your block sizes are on these 8KB boundaries, SQL
>> Server
>> Disk I/O requests can be more efficient.
>> Your biggest disk throughput bottleneck is total number of I/O Operations
>> a
>> single spindle can handle. You're throughput will be based on type of
>> access, sequential versus random, and the size of each request.
>> Optimizing
>> the request sizes coupled with a fixed maximum number of I/O Ops, should
>> make your system as efficient as possible.
>> Nevertheless, and along the same lines as the RAID arguments already
>> presented, this is also suggested from the Operations Manual: more
>> smaller
>> disks are more efficient than fewer larger disks. This would come into
>> play
>> in the 0 part of the RAID-10 argument. Striping allows more physical
>> spindles to fulfill requests, each one capable of servicing a theoretical
>> maximum number of I/O Ops. Furthermore, more files per Filegroup will
>> spawn
>> additional disk threads per request. This coupled with number of disks
>> can
>> greatly improve throughput.
>> Sincerely,
>>
>> Anthony Thomas
>>
>> --
>> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
>> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
>> Hi
>> Rather make sure that your drives are configured correctly.
>> Make sure your logs on RAID-10, and preferably your data on a separate
>> RAID-10 volume. RAID-5 hurts more than it helps.
>> As Geoff said, block size is not important, but getting maximum IO
>> throughput is.
>> Regards
>> --
>> Mike Epprecht, Microsoft SQL Server MVP
>> Zurich, Switzerland
>> IM: mike@.epprecht.net
>> MVP Program: http://www.microsoft.com/mvp
>> Blog: http://www.msmvps.com/epprecht/
>> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
>> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
>> Unless you have an overriding reason, go with the hardware
>> manufacturer's
>> recommendations. These are typically the default settings. Changing
>> the
>> NTFS block size usually has no measurable effect on system performance.
>> --
>> Geoff N. Hiten
>> Microsoft SQL Server MVP
>> Senior Database Administrator
>> Careerbuilder.com
>> I support the Professional Association for SQL Server
>> www.sqlpass.org
>> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
>> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
>> >
>> > I have a SQL Server 2000 Enterprise database that processes 300
>> > transactions/sec, approximately 300 users, and 250 GB in size. How
>> > can
>> I
>> > determine the the appropriate disk block size that should be on my
>> system.
>> >
>> > Thanks,
>> >
>> >
>>
>>
>|||Well, that doc confirmed at least part of what I read previously:
"SQL Server limits a single read-ahead request depth to 128 pages on most
editions. However, Microsoft SQL Server Enterprise Edition raises the limit
to 1,024 pages."
Sincerely,
Anthony Thomas
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:OIoyclBCFHA.3588@.TK2MSFTNGP11.phx.gbl...
As always, thanks Andrew. Yes, I am well aware of having to "filter" read
information and make judgement calls on the sources reliability. The
article I read seemed respectable, though. If I come across it, I'll post a
"What's up" response.
Sincerely,
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:ewn3Iz7BFHA.2260@.TK2MSFTNGP14.phx.gbl...
Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx
--
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>> Not that I disagree with the RAID-10 argument, I don't; however, I do
>> disagree with your comments about NTFS Cluster Sizes (a.k.a., block
>> size).
>> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
>> cluster sizes. We have done so with a dramatic total disk I/O
>> throughput.
>> It makes sense. SQL Server reads and writes data in 8KB data pages, but
>> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
>> simultaneously. If your block sizes are on these 8KB boundaries, SQL
>> Server
>> Disk I/O requests can be more efficient.
>> Your biggest disk throughput bottleneck is total number of I/O Operations
>> a
>> single spindle can handle. You're throughput will be based on type of
>> access, sequential versus random, and the size of each request.
>> Optimizing
>> the request sizes coupled with a fixed maximum number of I/O Ops, should
>> make your system as efficient as possible.
>> Nevertheless, and along the same lines as the RAID arguments already
>> presented, this is also suggested from the Operations Manual: more
>> smaller
>> disks are more efficient than fewer larger disks. This would come into
>> play
>> in the 0 part of the RAID-10 argument. Striping allows more physical
>> spindles to fulfill requests, each one capable of servicing a theoretical
>> maximum number of I/O Ops. Furthermore, more files per Filegroup will
>> spawn
>> additional disk threads per request. This coupled with number of disks
>> can
>> greatly improve throughput.
>> Sincerely,
>>
>> Anthony Thomas
>>
>> --
>> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
>> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
>> Hi
>> Rather make sure that your drives are configured correctly.
>> Make sure your logs on RAID-10, and preferably your data on a separate
>> RAID-10 volume. RAID-5 hurts more than it helps.
>> As Geoff said, block size is not important, but getting maximum IO
>> throughput is.
>> Regards
>> --
>> Mike Epprecht, Microsoft SQL Server MVP
>> Zurich, Switzerland
>> IM: mike@.epprecht.net
>> MVP Program: http://www.microsoft.com/mvp
>> Blog: http://www.msmvps.com/epprecht/
>> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
>> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
>> Unless you have an overriding reason, go with the hardware
>> manufacturer's
>> recommendations. These are typically the default settings. Changing
>> the
>> NTFS block size usually has no measurable effect on system performance.
>> --
>> Geoff N. Hiten
>> Microsoft SQL Server MVP
>> Senior Database Administrator
>> Careerbuilder.com
>> I support the Professional Association for SQL Server
>> www.sqlpass.org
>> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
>> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
>> >
>> > I have a SQL Server 2000 Enterprise database that processes 300
>> > transactions/sec, approximately 300 users, and 250 GB in size. How
>> > can
>> I
>> > determine the the appropriate disk block size that should be on my
>> system.
>> >
>> > Thanks,
>> >
>> >
>>
>>
>|||Yes but my point was don't take that as a fixed size. It limits the max to
that value but the read ahead can be 8K as well if the conditions do not
allow for all 128K or higher.
--
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:uJBYOuBCFHA.2568@.TK2MSFTNGP10.phx.gbl...
> Well, that doc confirmed at least part of what I read previously:
> "SQL Server limits a single read-ahead request depth to 128 pages on most
> editions. However, Microsoft SQL Server Enterprise Edition raises the
> limit
> to 1,024 pages."
> Sincerely,
>
> Anthony Thomas
>
> --
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:OIoyclBCFHA.3588@.TK2MSFTNGP11.phx.gbl...
> As always, thanks Andrew. Yes, I am well aware of having to "filter" read
> information and make judgement calls on the sources reliability. The
> article I read seemed respectable, though. If I come across it, I'll post
> a
> "What's up" response.
> Sincerely,
>
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:ewn3Iz7BFHA.2260@.TK2MSFTNGP14.phx.gbl...
> Not sure which document that came from either. The read ahead is actually
> dynamic in the size of each read ahead request based somewhat on how
> fragmented the data is. It can be 8K or 128K, it just depends on if it is
> possible to do so or not. Most of the documentation for 2000 is wrong in
> that it may state you need multiple files to spawn multiple threads. That
> is definitely not the case and this is supposed to be fixed in the 2005
> docs. Yes it can spawn a thread of each file but it is not limited to a
> single thread per file. Even with a single file it is possible to spawn
> multiple threads to read the same file. Here is what looks like a very
> interesting article on IO in 2000. I haven't had a chance to read it yet
> (hope to in the next few days) but it looks very promising.
> http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
>> chunks, and spawns a thread per data file in each Filegroup. It also
>> mentioned that EE can exceed the number of concurrent extents per request
>> and managed the thread spawning more efficiently. But, damn if I can't
>> remember where I came across the information.
>> Anthony Thomas
>>
>> --
>> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
>> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
>> An I agree with your comments except for the last one:
>> Furthermore, more files per Filegroup will spawn
>> additional disk threads per request.
>> <<
>> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
>> Sql Server can spawn multiple threads to read a single file as well. So
>> just having multiple files does not mean it will be more effecient or
>> spawn
>> more threads than a single file.
>>
>> --
>> Andrew J. Kelly SQL MVP
>>
>> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
>> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>> Not that I disagree with the RAID-10 argument, I don't; however, I do
>> disagree with your comments about NTFS Cluster Sizes (a.k.a., block
>> size).
>> The MS SQL Server Operations Manual makes a recommendation of using
>> 64-KB
>> cluster sizes. We have done so with a dramatic total disk I/O
>> throughput.
>> It makes sense. SQL Server reads and writes data in 8KB data pages, but
>> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
>> simultaneously. If your block sizes are on these 8KB boundaries, SQL
>> Server
>> Disk I/O requests can be more efficient.
>> Your biggest disk throughput bottleneck is total number of I/O
>> Operations
>> a
>> single spindle can handle. You're throughput will be based on type of
>> access, sequential versus random, and the size of each request.
>> Optimizing
>> the request sizes coupled with a fixed maximum number of I/O Ops, should
>> make your system as efficient as possible.
>> Nevertheless, and along the same lines as the RAID arguments already
>> presented, this is also suggested from the Operations Manual: more
>> smaller
>> disks are more efficient than fewer larger disks. This would come into
>> play
>> in the 0 part of the RAID-10 argument. Striping allows more physical
>> spindles to fulfill requests, each one capable of servicing a
>> theoretical
>> maximum number of I/O Ops. Furthermore, more files per Filegroup will
>> spawn
>> additional disk threads per request. This coupled with number of disks
>> can
>> greatly improve throughput.
>> Sincerely,
>>
>> Anthony Thomas
>>
>> --
>> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
>> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
>> Hi
>> Rather make sure that your drives are configured correctly.
>> Make sure your logs on RAID-10, and preferably your data on a separate
>> RAID-10 volume. RAID-5 hurts more than it helps.
>> As Geoff said, block size is not important, but getting maximum IO
>> throughput is.
>> Regards
>> --
>> Mike Epprecht, Microsoft SQL Server MVP
>> Zurich, Switzerland
>> IM: mike@.epprecht.net
>> MVP Program: http://www.microsoft.com/mvp
>> Blog: http://www.msmvps.com/epprecht/
>> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
>> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
>> Unless you have an overriding reason, go with the hardware
>> manufacturer's
>> recommendations. These are typically the default settings. Changing
>> the
>> NTFS block size usually has no measurable effect on system performance.
>> --
>> Geoff N. Hiten
>> Microsoft SQL Server MVP
>> Senior Database Administrator
>> Careerbuilder.com
>> I support the Professional Association for SQL Server
>> www.sqlpass.org
>> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
>> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
>> >
>> > I have a SQL Server 2000 Enterprise database that processes 300
>> > transactions/sec, approximately 300 users, and 250 GB in size. How
>> > can
>> I
>> > determine the the appropriate disk block size that should be on my
>> system.
>> >
>> > Thanks,
>> >
>> >
>>
>>
>>
>
transactions/sec, approximately 300 users, and 250 GB in size. How can I
determine the the appropriate disk block size that should be on my system.
Thanks,Unless you have an overriding reason, go with the hardware manufacturer's
recommendations. These are typically the default settings. Changing the
NTFS block size usually has no measurable effect on system performance.
--
Geoff N. Hiten
Microsoft SQL Server MVP
Senior Database Administrator
Careerbuilder.com
I support the Professional Association for SQL Server
www.sqlpass.org
"Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
> I have a SQL Server 2000 Enterprise database that processes 300
> transactions/sec, approximately 300 users, and 250 GB in size. How can I
> determine the the appropriate disk block size that should be on my system.
> Thanks,
>|||Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
--
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
> >
> > I have a SQL Server 2000 Enterprise database that processes 300
> > transactions/sec, approximately 300 users, and 250 GB in size. How can
I
> > determine the the appropriate disk block size that should be on my
system.
> >
> > Thanks,
> >
> >
>|||Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
--
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
> >
> > I have a SQL Server 2000 Enterprise database that processes 300
> > transactions/sec, approximately 300 users, and 250 GB in size. How can
I
> > determine the the appropriate disk block size that should be on my
system.
> >
> > Thanks,
> >
> >
>|||Not that I disagree with the RAID-10 argument, I don't; however, I do
disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
The MS SQL Server Operations Manual makes a recommendation of using 64-KB
cluster sizes. We have done so with a dramatic total disk I/O throughput.
It makes sense. SQL Server reads and writes data in 8KB data pages, but
issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
simultaneously. If your block sizes are on these 8KB boundaries, SQL Server
Disk I/O requests can be more efficient.
Your biggest disk throughput bottleneck is total number of I/O Operations a
single spindle can handle. You're throughput will be based on type of
access, sequential versus random, and the size of each request. Optimizing
the request sizes coupled with a fixed maximum number of I/O Ops, should
make your system as efficient as possible.
Nevertheless, and along the same lines as the RAID arguments already
presented, this is also suggested from the Operations Manual: more smaller
disks are more efficient than fewer larger disks. This would come into play
in the 0 part of the RAID-10 argument. Striping allows more physical
spindles to fulfill requests, each one capable of servicing a theoretical
maximum number of I/O Ops. Furthermore, more files per Filegroup will spawn
additional disk threads per request. This coupled with number of disks can
greatly improve throughput.
Sincerely,
Anthony Thomas
"Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
Hi
Rather make sure that your drives are configured correctly.
Make sure your logs on RAID-10, and preferably your data on a separate
RAID-10 volume. RAID-5 hurts more than it helps.
As Geoff said, block size is not important, but getting maximum IO
throughput is.
Regards
--
Mike Epprecht, Microsoft SQL Server MVP
Zurich, Switzerland
IM: mike@.epprecht.net
MVP Program: http://www.microsoft.com/mvp
Blog: http://www.msmvps.com/epprecht/
"Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
> Unless you have an overriding reason, go with the hardware manufacturer's
> recommendations. These are typically the default settings. Changing the
> NTFS block size usually has no measurable effect on system performance.
> --
> Geoff N. Hiten
> Microsoft SQL Server MVP
> Senior Database Administrator
> Careerbuilder.com
> I support the Professional Association for SQL Server
> www.sqlpass.org
> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
> >
> > I have a SQL Server 2000 Enterprise database that processes 300
> > transactions/sec, approximately 300 users, and 250 GB in size. How can
I
> > determine the the appropriate disk block size that should be on my
system.
> >
> > Thanks,
> >
> >
>|||An I agree with your comments except for the last one:
Furthermore, more files per Filegroup will spawn
additional disk threads per request.
<<
That was true with 7.0 but is not necessarily true with SQL2000. In 2000
Sql Server can spawn multiple threads to read a single file as well. So
just having multiple files does not mean it will be more effecient or spawn
more threads than a single file.
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
> Not that I disagree with the RAID-10 argument, I don't; however, I do
> disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
> cluster sizes. We have done so with a dramatic total disk I/O throughput.
> It makes sense. SQL Server reads and writes data in 8KB data pages, but
> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
> simultaneously. If your block sizes are on these 8KB boundaries, SQL
> Server
> Disk I/O requests can be more efficient.
> Your biggest disk throughput bottleneck is total number of I/O Operations
> a
> single spindle can handle. You're throughput will be based on type of
> access, sequential versus random, and the size of each request.
> Optimizing
> the request sizes coupled with a fixed maximum number of I/O Ops, should
> make your system as efficient as possible.
> Nevertheless, and along the same lines as the RAID arguments already
> presented, this is also suggested from the Operations Manual: more smaller
> disks are more efficient than fewer larger disks. This would come into
> play
> in the 0 part of the RAID-10 argument. Striping allows more physical
> spindles to fulfill requests, each one capable of servicing a theoretical
> maximum number of I/O Ops. Furthermore, more files per Filegroup will
> spawn
> additional disk threads per request. This coupled with number of disks
> can
> greatly improve throughput.
> Sincerely,
>
> Anthony Thomas
>
> --
> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
> Hi
> Rather make sure that your drives are configured correctly.
> Make sure your logs on RAID-10, and preferably your data on a separate
> RAID-10 volume. RAID-5 hurts more than it helps.
> As Geoff said, block size is not important, but getting maximum IO
> throughput is.
> Regards
> --
> Mike Epprecht, Microsoft SQL Server MVP
> Zurich, Switzerland
> IM: mike@.epprecht.net
> MVP Program: http://www.microsoft.com/mvp
> Blog: http://www.msmvps.com/epprecht/
> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
>> Unless you have an overriding reason, go with the hardware manufacturer's
>> recommendations. These are typically the default settings. Changing the
>> NTFS block size usually has no measurable effect on system performance.
>> --
>> Geoff N. Hiten
>> Microsoft SQL Server MVP
>> Senior Database Administrator
>> Careerbuilder.com
>> I support the Professional Association for SQL Server
>> www.sqlpass.org
>> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
>> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
>> >
>> > I have a SQL Server 2000 Enterprise database that processes 300
>> > transactions/sec, approximately 300 users, and 250 GB in size. How can
> I
>> > determine the the appropriate disk block size that should be on my
> system.
>> >
>> > Thanks,
>> >
>> >
>>
>|||I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
chunks, and spawns a thread per data file in each Filegroup. It also
mentioned that EE can exceed the number of concurrent extents per request
and managed the thread spawning more efficiently. But, damn if I can't
remember where I came across the information.
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
An I agree with your comments except for the last one:
Furthermore, more files per Filegroup will spawn
additional disk threads per request.
<<
That was true with 7.0 but is not necessarily true with SQL2000. In 2000
Sql Server can spawn multiple threads to read a single file as well. So
just having multiple files does not mean it will be more effecient or spawn
more threads than a single file.
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
> Not that I disagree with the RAID-10 argument, I don't; however, I do
> disagree with your comments about NTFS Cluster Sizes (a.k.a., block size).
> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
> cluster sizes. We have done so with a dramatic total disk I/O throughput.
> It makes sense. SQL Server reads and writes data in 8KB data pages, but
> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
> simultaneously. If your block sizes are on these 8KB boundaries, SQL
> Server
> Disk I/O requests can be more efficient.
> Your biggest disk throughput bottleneck is total number of I/O Operations
> a
> single spindle can handle. You're throughput will be based on type of
> access, sequential versus random, and the size of each request.
> Optimizing
> the request sizes coupled with a fixed maximum number of I/O Ops, should
> make your system as efficient as possible.
> Nevertheless, and along the same lines as the RAID arguments already
> presented, this is also suggested from the Operations Manual: more smaller
> disks are more efficient than fewer larger disks. This would come into
> play
> in the 0 part of the RAID-10 argument. Striping allows more physical
> spindles to fulfill requests, each one capable of servicing a theoretical
> maximum number of I/O Ops. Furthermore, more files per Filegroup will
> spawn
> additional disk threads per request. This coupled with number of disks
> can
> greatly improve throughput.
> Sincerely,
>
> Anthony Thomas
>
> --
> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
> Hi
> Rather make sure that your drives are configured correctly.
> Make sure your logs on RAID-10, and preferably your data on a separate
> RAID-10 volume. RAID-5 hurts more than it helps.
> As Geoff said, block size is not important, but getting maximum IO
> throughput is.
> Regards
> --
> Mike Epprecht, Microsoft SQL Server MVP
> Zurich, Switzerland
> IM: mike@.epprecht.net
> MVP Program: http://www.microsoft.com/mvp
> Blog: http://www.msmvps.com/epprecht/
> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
>> Unless you have an overriding reason, go with the hardware manufacturer's
>> recommendations. These are typically the default settings. Changing the
>> NTFS block size usually has no measurable effect on system performance.
>> --
>> Geoff N. Hiten
>> Microsoft SQL Server MVP
>> Senior Database Administrator
>> Careerbuilder.com
>> I support the Professional Association for SQL Server
>> www.sqlpass.org
>> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
>> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
>> >
>> > I have a SQL Server 2000 Enterprise database that processes 300
>> > transactions/sec, approximately 300 users, and 250 GB in size. How can
> I
>> > determine the the appropriate disk block size that should be on my
> system.
>> >
>> > Thanks,
>> >
>> >
>>
>|||Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx
--
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>> Not that I disagree with the RAID-10 argument, I don't; however, I do
>> disagree with your comments about NTFS Cluster Sizes (a.k.a., block
>> size).
>> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
>> cluster sizes. We have done so with a dramatic total disk I/O
>> throughput.
>> It makes sense. SQL Server reads and writes data in 8KB data pages, but
>> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
>> simultaneously. If your block sizes are on these 8KB boundaries, SQL
>> Server
>> Disk I/O requests can be more efficient.
>> Your biggest disk throughput bottleneck is total number of I/O Operations
>> a
>> single spindle can handle. You're throughput will be based on type of
>> access, sequential versus random, and the size of each request.
>> Optimizing
>> the request sizes coupled with a fixed maximum number of I/O Ops, should
>> make your system as efficient as possible.
>> Nevertheless, and along the same lines as the RAID arguments already
>> presented, this is also suggested from the Operations Manual: more
>> smaller
>> disks are more efficient than fewer larger disks. This would come into
>> play
>> in the 0 part of the RAID-10 argument. Striping allows more physical
>> spindles to fulfill requests, each one capable of servicing a theoretical
>> maximum number of I/O Ops. Furthermore, more files per Filegroup will
>> spawn
>> additional disk threads per request. This coupled with number of disks
>> can
>> greatly improve throughput.
>> Sincerely,
>>
>> Anthony Thomas
>>
>> --
>> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
>> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
>> Hi
>> Rather make sure that your drives are configured correctly.
>> Make sure your logs on RAID-10, and preferably your data on a separate
>> RAID-10 volume. RAID-5 hurts more than it helps.
>> As Geoff said, block size is not important, but getting maximum IO
>> throughput is.
>> Regards
>> --
>> Mike Epprecht, Microsoft SQL Server MVP
>> Zurich, Switzerland
>> IM: mike@.epprecht.net
>> MVP Program: http://www.microsoft.com/mvp
>> Blog: http://www.msmvps.com/epprecht/
>> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
>> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
>> Unless you have an overriding reason, go with the hardware
>> manufacturer's
>> recommendations. These are typically the default settings. Changing
>> the
>> NTFS block size usually has no measurable effect on system performance.
>> --
>> Geoff N. Hiten
>> Microsoft SQL Server MVP
>> Senior Database Administrator
>> Careerbuilder.com
>> I support the Professional Association for SQL Server
>> www.sqlpass.org
>> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
>> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
>> >
>> > I have a SQL Server 2000 Enterprise database that processes 300
>> > transactions/sec, approximately 300 users, and 250 GB in size. How
>> > can
>> I
>> > determine the the appropriate disk block size that should be on my
>> system.
>> >
>> > Thanks,
>> >
>> >
>>
>>
>|||As always, thanks Andrew. Yes, I am well aware of having to "filter" read
information and make judgement calls on the sources reliability. The
article I read seemed respectable, though. If I come across it, I'll post a
"What's up" response.
Sincerely,
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:ewn3Iz7BFHA.2260@.TK2MSFTNGP14.phx.gbl...
Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx
--
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>> Not that I disagree with the RAID-10 argument, I don't; however, I do
>> disagree with your comments about NTFS Cluster Sizes (a.k.a., block
>> size).
>> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
>> cluster sizes. We have done so with a dramatic total disk I/O
>> throughput.
>> It makes sense. SQL Server reads and writes data in 8KB data pages, but
>> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
>> simultaneously. If your block sizes are on these 8KB boundaries, SQL
>> Server
>> Disk I/O requests can be more efficient.
>> Your biggest disk throughput bottleneck is total number of I/O Operations
>> a
>> single spindle can handle. You're throughput will be based on type of
>> access, sequential versus random, and the size of each request.
>> Optimizing
>> the request sizes coupled with a fixed maximum number of I/O Ops, should
>> make your system as efficient as possible.
>> Nevertheless, and along the same lines as the RAID arguments already
>> presented, this is also suggested from the Operations Manual: more
>> smaller
>> disks are more efficient than fewer larger disks. This would come into
>> play
>> in the 0 part of the RAID-10 argument. Striping allows more physical
>> spindles to fulfill requests, each one capable of servicing a theoretical
>> maximum number of I/O Ops. Furthermore, more files per Filegroup will
>> spawn
>> additional disk threads per request. This coupled with number of disks
>> can
>> greatly improve throughput.
>> Sincerely,
>>
>> Anthony Thomas
>>
>> --
>> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
>> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
>> Hi
>> Rather make sure that your drives are configured correctly.
>> Make sure your logs on RAID-10, and preferably your data on a separate
>> RAID-10 volume. RAID-5 hurts more than it helps.
>> As Geoff said, block size is not important, but getting maximum IO
>> throughput is.
>> Regards
>> --
>> Mike Epprecht, Microsoft SQL Server MVP
>> Zurich, Switzerland
>> IM: mike@.epprecht.net
>> MVP Program: http://www.microsoft.com/mvp
>> Blog: http://www.msmvps.com/epprecht/
>> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
>> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
>> Unless you have an overriding reason, go with the hardware
>> manufacturer's
>> recommendations. These are typically the default settings. Changing
>> the
>> NTFS block size usually has no measurable effect on system performance.
>> --
>> Geoff N. Hiten
>> Microsoft SQL Server MVP
>> Senior Database Administrator
>> Careerbuilder.com
>> I support the Professional Association for SQL Server
>> www.sqlpass.org
>> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
>> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
>> >
>> > I have a SQL Server 2000 Enterprise database that processes 300
>> > transactions/sec, approximately 300 users, and 250 GB in size. How
>> > can
>> I
>> > determine the the appropriate disk block size that should be on my
>> system.
>> >
>> > Thanks,
>> >
>> >
>>
>>
>|||Well, that doc confirmed at least part of what I read previously:
"SQL Server limits a single read-ahead request depth to 128 pages on most
editions. However, Microsoft SQL Server Enterprise Edition raises the limit
to 1,024 pages."
Sincerely,
Anthony Thomas
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:OIoyclBCFHA.3588@.TK2MSFTNGP11.phx.gbl...
As always, thanks Andrew. Yes, I am well aware of having to "filter" read
information and make judgement calls on the sources reliability. The
article I read seemed respectable, though. If I come across it, I'll post a
"What's up" response.
Sincerely,
Anthony Thomas
"Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
news:ewn3Iz7BFHA.2260@.TK2MSFTNGP14.phx.gbl...
Not sure which document that came from either. The read ahead is actually
dynamic in the size of each read ahead request based somewhat on how
fragmented the data is. It can be 8K or 128K, it just depends on if it is
possible to do so or not. Most of the documentation for 2000 is wrong in
that it may state you need multiple files to spawn multiple threads. That
is definitely not the case and this is supposed to be fixed in the 2005
docs. Yes it can spawn a thread of each file but it is not limited to a
single thread per file. Even with a single file it is possible to spawn
multiple threads to read the same file. Here is what looks like a very
interesting article on IO in 2000. I haven't had a chance to read it yet
(hope to in the next few days) but it looks very promising.
http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx
--
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
> chunks, and spawns a thread per data file in each Filegroup. It also
> mentioned that EE can exceed the number of concurrent extents per request
> and managed the thread spawning more efficiently. But, damn if I can't
> remember where I came across the information.
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
> An I agree with your comments except for the last one:
> Furthermore, more files per Filegroup will spawn
> additional disk threads per request.
> <<
> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
> Sql Server can spawn multiple threads to read a single file as well. So
> just having multiple files does not mean it will be more effecient or
> spawn
> more threads than a single file.
>
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>> Not that I disagree with the RAID-10 argument, I don't; however, I do
>> disagree with your comments about NTFS Cluster Sizes (a.k.a., block
>> size).
>> The MS SQL Server Operations Manual makes a recommendation of using 64-KB
>> cluster sizes. We have done so with a dramatic total disk I/O
>> throughput.
>> It makes sense. SQL Server reads and writes data in 8KB data pages, but
>> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
>> simultaneously. If your block sizes are on these 8KB boundaries, SQL
>> Server
>> Disk I/O requests can be more efficient.
>> Your biggest disk throughput bottleneck is total number of I/O Operations
>> a
>> single spindle can handle. You're throughput will be based on type of
>> access, sequential versus random, and the size of each request.
>> Optimizing
>> the request sizes coupled with a fixed maximum number of I/O Ops, should
>> make your system as efficient as possible.
>> Nevertheless, and along the same lines as the RAID arguments already
>> presented, this is also suggested from the Operations Manual: more
>> smaller
>> disks are more efficient than fewer larger disks. This would come into
>> play
>> in the 0 part of the RAID-10 argument. Striping allows more physical
>> spindles to fulfill requests, each one capable of servicing a theoretical
>> maximum number of I/O Ops. Furthermore, more files per Filegroup will
>> spawn
>> additional disk threads per request. This coupled with number of disks
>> can
>> greatly improve throughput.
>> Sincerely,
>>
>> Anthony Thomas
>>
>> --
>> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
>> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
>> Hi
>> Rather make sure that your drives are configured correctly.
>> Make sure your logs on RAID-10, and preferably your data on a separate
>> RAID-10 volume. RAID-5 hurts more than it helps.
>> As Geoff said, block size is not important, but getting maximum IO
>> throughput is.
>> Regards
>> --
>> Mike Epprecht, Microsoft SQL Server MVP
>> Zurich, Switzerland
>> IM: mike@.epprecht.net
>> MVP Program: http://www.microsoft.com/mvp
>> Blog: http://www.msmvps.com/epprecht/
>> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
>> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
>> Unless you have an overriding reason, go with the hardware
>> manufacturer's
>> recommendations. These are typically the default settings. Changing
>> the
>> NTFS block size usually has no measurable effect on system performance.
>> --
>> Geoff N. Hiten
>> Microsoft SQL Server MVP
>> Senior Database Administrator
>> Careerbuilder.com
>> I support the Professional Association for SQL Server
>> www.sqlpass.org
>> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
>> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
>> >
>> > I have a SQL Server 2000 Enterprise database that processes 300
>> > transactions/sec, approximately 300 users, and 250 GB in size. How
>> > can
>> I
>> > determine the the appropriate disk block size that should be on my
>> system.
>> >
>> > Thanks,
>> >
>> >
>>
>>
>|||Yes but my point was don't take that as a fixed size. It limits the max to
that value but the read ahead can be 8K as well if the conditions do not
allow for all 128K or higher.
--
Andrew J. Kelly SQL MVP
"Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
news:uJBYOuBCFHA.2568@.TK2MSFTNGP10.phx.gbl...
> Well, that doc confirmed at least part of what I read previously:
> "SQL Server limits a single read-ahead request depth to 128 pages on most
> editions. However, Microsoft SQL Server Enterprise Edition raises the
> limit
> to 1,024 pages."
> Sincerely,
>
> Anthony Thomas
>
> --
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:OIoyclBCFHA.3588@.TK2MSFTNGP11.phx.gbl...
> As always, thanks Andrew. Yes, I am well aware of having to "filter" read
> information and make judgement calls on the sources reliability. The
> article I read seemed respectable, though. If I come across it, I'll post
> a
> "What's up" response.
> Sincerely,
>
> Anthony Thomas
>
> --
> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
> news:ewn3Iz7BFHA.2260@.TK2MSFTNGP14.phx.gbl...
> Not sure which document that came from either. The read ahead is actually
> dynamic in the size of each read ahead request based somewhat on how
> fragmented the data is. It can be 8K or 128K, it just depends on if it is
> possible to do so or not. Most of the documentation for 2000 is wrong in
> that it may state you need multiple files to spawn multiple threads. That
> is definitely not the case and this is supposed to be fixed in the 2005
> docs. Yes it can spawn a thread of each file but it is not limited to a
> single thread per file. Even with a single file it is possible to spawn
> multiple threads to read the same file. Here is what looks like a very
> interesting article on IO in 2000. I haven't had a chance to read it yet
> (hope to in the next few days) but it looks very promising.
> http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspx
> --
> Andrew J. Kelly SQL MVP
>
> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
> news:u8xc256BFHA.1564@.TK2MSFTNGP09.phx.gbl...
>>I just read that SS2K SE spawns Read Ahead requests in 4xExtents, 128 KB
>> chunks, and spawns a thread per data file in each Filegroup. It also
>> mentioned that EE can exceed the number of concurrent extents per request
>> and managed the thread spawning more efficiently. But, damn if I can't
>> remember where I came across the information.
>> Anthony Thomas
>>
>> --
>> "Andrew J. Kelly" <sqlmvpnooospam@.shadhawk.com> wrote in message
>> news:uNjLEV5BFHA.2180@.TK2MSFTNGP10.phx.gbl...
>> An I agree with your comments except for the last one:
>> Furthermore, more files per Filegroup will spawn
>> additional disk threads per request.
>> <<
>> That was true with 7.0 but is not necessarily true with SQL2000. In 2000
>> Sql Server can spawn multiple threads to read a single file as well. So
>> just having multiple files does not mean it will be more effecient or
>> spawn
>> more threads than a single file.
>>
>> --
>> Andrew J. Kelly SQL MVP
>>
>> "Anthony Thomas" <ALThomas@.kc.rr.com> wrote in message
>> news:ep16rw1BFHA.3592@.TK2MSFTNGP09.phx.gbl...
>> Not that I disagree with the RAID-10 argument, I don't; however, I do
>> disagree with your comments about NTFS Cluster Sizes (a.k.a., block
>> size).
>> The MS SQL Server Operations Manual makes a recommendation of using
>> 64-KB
>> cluster sizes. We have done so with a dramatic total disk I/O
>> throughput.
>> It makes sense. SQL Server reads and writes data in 8KB data pages, but
>> issues Scatter-Gather I/O requests in 4 or more Extents (8 x 8KB pages)
>> simultaneously. If your block sizes are on these 8KB boundaries, SQL
>> Server
>> Disk I/O requests can be more efficient.
>> Your biggest disk throughput bottleneck is total number of I/O
>> Operations
>> a
>> single spindle can handle. You're throughput will be based on type of
>> access, sequential versus random, and the size of each request.
>> Optimizing
>> the request sizes coupled with a fixed maximum number of I/O Ops, should
>> make your system as efficient as possible.
>> Nevertheless, and along the same lines as the RAID arguments already
>> presented, this is also suggested from the Operations Manual: more
>> smaller
>> disks are more efficient than fewer larger disks. This would come into
>> play
>> in the 0 part of the RAID-10 argument. Striping allows more physical
>> spindles to fulfill requests, each one capable of servicing a
>> theoretical
>> maximum number of I/O Ops. Furthermore, more files per Filegroup will
>> spawn
>> additional disk threads per request. This coupled with number of disks
>> can
>> greatly improve throughput.
>> Sincerely,
>>
>> Anthony Thomas
>>
>> --
>> "Mike Epprecht (SQL MVP)" <mike@.epprecht.net> wrote in message
>> news:uY2FhGsBFHA.3840@.tk2msftngp13.phx.gbl...
>> Hi
>> Rather make sure that your drives are configured correctly.
>> Make sure your logs on RAID-10, and preferably your data on a separate
>> RAID-10 volume. RAID-5 hurts more than it helps.
>> As Geoff said, block size is not important, but getting maximum IO
>> throughput is.
>> Regards
>> --
>> Mike Epprecht, Microsoft SQL Server MVP
>> Zurich, Switzerland
>> IM: mike@.epprecht.net
>> MVP Program: http://www.microsoft.com/mvp
>> Blog: http://www.msmvps.com/epprecht/
>> "Geoff N. Hiten" <SRDBA@.Careerbuilder.com> wrote in message
>> news:uhfJBgXBFHA.2180@.TK2MSFTNGP12.phx.gbl...
>> Unless you have an overriding reason, go with the hardware
>> manufacturer's
>> recommendations. These are typically the default settings. Changing
>> the
>> NTFS block size usually has no measurable effect on system performance.
>> --
>> Geoff N. Hiten
>> Microsoft SQL Server MVP
>> Senior Database Administrator
>> Careerbuilder.com
>> I support the Professional Association for SQL Server
>> www.sqlpass.org
>> "Joe K." <Joe K.@.discussions.microsoft.com> wrote in message
>> news:B77A9710-86AA-4319-B539-6F65D91E5ECA@.microsoft.com...
>> >
>> > I have a SQL Server 2000 Enterprise database that processes 300
>> > transactions/sec, approximately 300 users, and 250 GB in size. How
>> > can
>> I
>> > determine the the appropriate disk block size that should be on my
>> system.
>> >
>> > Thanks,
>> >
>> >
>>
>>
>>
>
Subscribe to:
Posts (Atom)