Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Правильно ли такое утверждение?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3746
Ваше мнение - это правильное утверждение?

I/O subsystem for a database: remember that the read/write performance is often secondary to the number of I/Os the subsystem can perform per second.

The data that is written to a database in general does not exceed 8k per write, so formatting a volume with a 64k block size for use with a database is counterproductive
17 мар 17, 13:13    [20305639]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Ролг Хупин,

страница же
17 мар 17, 13:15    [20305646]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
TaPaK,

The fundamental unit of data storage in SQL Server is the page. The disk space allocated to a data file (.mdf or .ndf) in a database is logically divided into pages numbered contiguously from 0 to n. Disk I/O operations are performed at the page level. That is, SQL Server reads or writes whole data pages.

https://technet.microsoft.com/en-us/library/ms190969(v=sql.105).aspx
17 мар 17, 13:18    [20305656]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3746
TaPaK
Ролг Хупин,

страница же


Да, 8К - страница, но вот это правильно? т.е. не рекомендуют форматировать блоками 64К:

"formatting a volume with a 64k block size for use with a database is counterproductive"?

В другом месте читаю:
http://houseofbrick.com/improve-performance-as-part-of-a-sql-server-install/

автор
As long as we’re discussing disk, the recommended file allocation unit (cluster) size for SQL Server data and log drives is 64 KB (65536 bytes), since this is one full extent (eight 8KB pages) in SQL Server. (Note that this is not true for operating system drives, file share drives, etc., which function well with the default 4 KB [4096 bytes] cluster size.) Using a cluster size other than 64 KB will have a performance impact, though it will be less than that of using an incorrect offset.
17 мар 17, 13:22    [20305674]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Ролг Хупин,

ну вот размышления самого MS

https://msdn.microsoft.com/en-us/library/dd758814.aspx?f=255&MSPPError=-2147217396

Писать будет по 8кб, читать... по разному пишут

а кто скажет экстент страниц физически храниться же скорее всего не подряд на диске.
17 мар 17, 13:38    [20305739]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
Нектотам
Guest
Ролг Хупин,

EMC не согласна, а уж они в этом точно шарят.
17 мар 17, 13:41    [20305760]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Нектотам,

и таки с чем они там не согласны?? всё упирается в it depends
17 мар 17, 13:46    [20305793]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Практическая оптимизация SQL server (англ):

https://www.emc.com/collateral/technical-documentation/h14621-microsoft-sql-server-best-practice.pdf
17 мар 17, 13:49    [20305814]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Говоря коротко, размер зависит от вида рабочей нагрузки.
17 мар 17, 13:50    [20305821]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
TaPaK
Нектотам,
и таки с чем они там не согласны?? всё упирается в it depends

Они не не согласны. У них написано
EMC
When creating a volume in windows, set the Windows allocation unit to 64 K for SQL Server database and log LUNs.

Что явно противоречит
formatting a volume with a 64k block size for use with a database is counterproductive
17 мар 17, 13:51    [20305826]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
iljy
Member

Откуда:
Сообщений: 8711
TaPaK
а кто скажет экстент страниц физически храниться же скорее всего не подряд на диске.


Насколько я понимаю, как раз подряд, ибо единица размещения.
17 мар 17, 13:53    [20305843]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
Нектотам
Guest
TaPaK
Нектотам,

и таки с чем они там не согласны?? всё упирается в it depends

When creating a volume in Windows, set the Windows allocation unit to 64 K for SQL Server database and log LUNs.
17 мар 17, 13:54    [20305845]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Basic best practices for storage

...

When creating a volume in Windows, set the Windows allocation unit to 64 K
for SQL Server database and log LUNs.
 For optimal performance with a predictable level of service, place tempdb,
data, and log files on separate LUNs.
 To leave room for data growth, avoid exceeding 80 percent capacity of the LUNs
for database files.
17 мар 17, 13:58    [20305868]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
o-o
Guest
iljy
TaPaK
а кто скажет экстент страниц физически храниться же скорее всего не подряд на диске.


Насколько я понимаю, как раз подряд, ибо единица размещения.

yes
BOL
An extent is eight physically contiguous pages, or 64 KB
This means SQL Server databases have 16 extents per megabyte.

Understanding Pages and Extents
17 мар 17, 14:01    [20305884]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Тем не менее, надо понимать, что эти рекомендации от EMC.
Я так понимаю, что сервер не всегда читает данные экстентами. Если надо получить одну запись, то он прочтёт только одну страницу данных.
17 мар 17, 14:05    [20305917]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
o-o,

вопрос был вообщем-то про экстенты, а не страницы внутри них
17 мар 17, 14:06    [20305920]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Нектотам,

автор
When creating a volume in Windows, set the Windows allocation unit to 64 K for SQL Server database and log LUNs.

мда. Рекомендация для средней по больнице температуры от двх до олтп
17 мар 17, 14:10    [20305961]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
o-o
Guest
TaPaK
o-o,
вопрос был вообщем-то про экстенты, а не страницы внутри них

чего?
TaPaK
а кто скажет экстент страниц физически храниться же скорее всего не подряд на диске.

я тут вижу "экстент" в ед. числе,
а как одна сущность может храниться подряд или не подряд?
17 мар 17, 14:20    [20306039]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
o-o,

ой всё :)
17 мар 17, 14:21    [20306049]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
архивариус
Member

Откуда:
Сообщений: 150
Ролг Хупин,

SELECT DB_NAME(vfs.DbId) DatabaseName, mf.name,
mf.physical_name, vfs.BytesRead, vfs.BytesWritten,
vfs.IoStallMS, vfs.IoStallReadMS, vfs.IoStallWriteMS,
vfs.NumberReads, vfs.NumberWrites,
 (mf.Size*8)/1024 Size_MB,
vfs.IoStallReadMS/(vfs.NumberReads) waitReadMS,
vfs.IoStallWriteMS/(vfs.NumberWrites) waitWriteMS,
(vfs.BytesRead*100)/(vfs.BytesRead+vfs.BytesWritten) '%BytesRead', 
(vfs.BytesWritten*100)/(vfs.BytesRead+vfs.BytesWritten) '%BytesWritten',
(vfs.NumberReads*100)/(vfs.NumberReads+vfs.NumberWrites) '%NumberReads', 
(vfs.NumberWrites*100)/(vfs.NumberReads+vfs.NumberWrites) '%NumberWrites',
      CASE 
         WHEN (vfs.BytesRead+vfs.BytesWritten)				= 0 THEN '00'
         WHEN (vfs.BytesRead*100)/(vfs.BytesRead+vfs.BytesWritten)	>= 70 THEN 'RR'
         WHEN (vfs.BytesRead*100)/(vfs.BytesRead+vfs.BytesWritten)	<= 30 THEN 'WW'
         ELSE 'RW'
         END 'B',
      CASE 
         WHEN (vfs.NumberReads+vfs.NumberWrites)			= 0 THEN '00'
         WHEN (vfs.NumberReads*100)/(vfs.NumberReads+vfs.NumberWrites)	>= 70 THEN 'RR'
         WHEN (vfs.NumberReads*100)/(vfs.NumberReads+vfs.NumberWrites)	<= 30 THEN 'WW'
         ELSE 'RW'
         END '#',
vfs.BytesRead/vfs.NumberReads AverageBytesReads, 
vfs.BytesWritten/vfs.NumberWrites AverageBytesWrites

FROM ::fn_virtualfilestats(NULL,NULL) vfs
INNER JOIN sys.master_files mf ON mf.database_id = vfs.DbId
AND mf.FILE_ID = vfs.FileId
 GO


пока разберешься , предложу ориентироваться на последние два столбца
17 мар 17, 14:34    [20306105]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
MacaronicTragedy
Member

Откуда:
Сообщений: 99
Вот. статьи, где пишут. что ничего не понятно - нужно тестить - самые объективные))

An appropriate value for most installations should be 65,536 bytes (that is, 64 KB) for partitions on which SQL Server data or log files reside. In many cases, this is the same size for Analysis Services data or log files, but there are times where 32 KB provides better performance. To determine the right size, you will need to do performance testing with your workload comparing the two different block sizes.

https://technet.microsoft.com/en-us/library/dd758814(v=sql.100).aspx?f=255&MSPPError=-2147217396
17 мар 17, 14:36    [20306110]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
Владислав Колосов
Я так понимаю, что сервер не всегда читает данные экстентами. Если надо получить одну запись, то он прочтёт только одну страницу данных.
Теоретически может быть такая нагрузка, когда сервер будет читать и писать данные по странице.
Но на практике, в подавляющем большинстве случаев, доступ у сиквела - случайный или последовательный по 64К, плюс последователь от 512 байт (для лога)
Остальное - исключение.
Т.е. если нет очень веских оснований делать иначе, самый оптимальный размер LUN - 64К
17 мар 17, 14:52    [20306202]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3746
архивариус
Ролг Хупин,

SELECT DB_NAME(vfs.DbId) DatabaseName, mf.name,
mf.physical_name, vfs.BytesRead, vfs.BytesWritten,
vfs.IoStallMS, vfs.IoStallReadMS, vfs.IoStallWriteMS,
vfs.NumberReads, vfs.NumberWrites,
 (mf.Size*8)/1024 Size_MB,
vfs.IoStallReadMS/(vfs.NumberReads) waitReadMS,
vfs.IoStallWriteMS/(vfs.NumberWrites) waitWriteMS,
(vfs.BytesRead*100)/(vfs.BytesRead+vfs.BytesWritten) '%BytesRead', 
(vfs.BytesWritten*100)/(vfs.BytesRead+vfs.BytesWritten) '%BytesWritten',
(vfs.NumberReads*100)/(vfs.NumberReads+vfs.NumberWrites) '%NumberReads', 
(vfs.NumberWrites*100)/(vfs.NumberReads+vfs.NumberWrites) '%NumberWrites',
      CASE 
         WHEN (vfs.BytesRead+vfs.BytesWritten)				= 0 THEN '00'
         WHEN (vfs.BytesRead*100)/(vfs.BytesRead+vfs.BytesWritten)	>= 70 THEN 'RR'
         WHEN (vfs.BytesRead*100)/(vfs.BytesRead+vfs.BytesWritten)	<= 30 THEN 'WW'
         ELSE 'RW'
         END 'B',
      CASE 
         WHEN (vfs.NumberReads+vfs.NumberWrites)			= 0 THEN '00'
         WHEN (vfs.NumberReads*100)/(vfs.NumberReads+vfs.NumberWrites)	>= 70 THEN 'RR'
         WHEN (vfs.NumberReads*100)/(vfs.NumberReads+vfs.NumberWrites)	<= 30 THEN 'WW'
         ELSE 'RW'
         END '#',
vfs.BytesRead/vfs.NumberReads AverageBytesReads, 
vfs.BytesWritten/vfs.NumberWrites AverageBytesWrites

FROM ::fn_virtualfilestats(NULL,NULL) vfs
INNER JOIN sys.master_files mf ON mf.database_id = vfs.DbId
AND mf.FILE_ID = vfs.FileId
 GO


пока разберешься , предложу ориентироваться на последние два столбца


Спасибо, буду пытаться запустить
пока:
Msg 8134, Level 16, State 1, Line 1
Divide by zero error encountered.
17 мар 17, 15:21    [20306400]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Ролг Хупин
Divide by zero error encountered.

Загоните все знаменатели в NULLIF( ..., 0 )
17 мар 17, 15:23    [20306418]     Ответить | Цитировать Сообщить модератору
 Re: Правильно ли такое утверждение?  [new]
архивариус
Member

Откуда:
Сообщений: 150
Ролг Хупин
Спасибо, буду пытаться запустить
пока:
Msg 8134, Level 16, State 1, Line 1
Divide by zero error encountered.


select * FROM ::fn_virtualfilestats(NULL,NULL)
посмотрите где там 0 в вашем случае в NumberReads или NumberWrites и скорректируйте запрос, оставьте последние 2 столбца и первый с названием базы для простоты.
17 мар 17, 15:53    [20306551]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить