Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
Здравствуйте знатоки! Возник следующий вопрос: Есть некая БД. Системные базы, файл MDF и LDF лежат локально на диске C:\ При проверке диска утилитой diskspd с параметрами (-c5G -d300 -r -w100 -t8 -o8 -b8K -h -L C:\Temp\testfile.dat) выдает, в среднем, 150-200мб/сек скорость записи на диск (смотрю через perfmon.exe). Модель восстановления - Simple Если я сделаю бесконечный цикл, в котором буду вставлять данные в тестовую таблицу (1 столбец, без индексов и т.д.), скорость обращения к диску будет в районе 30-35мб/сек. Если я создам табличную переменную, и буду заливать данные в нее, скорость обращения к диску не будет превышать 20-21мб/сек. Вопрос: что в моем примере гасит скорость записи? Операции переноса данных между логом и mdf? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 15:10 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
AngryError, ну переменные таблицы не логируются, вот в ldf и не пишем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 15:12 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
TaPaK, Ок, но почему тогда скорость в этом случае не выросла?) Я видимо чего-то не понимаю Скорость записи на диск 100мб/сек, а база может писать только 20-30мб в сек? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 15:19 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
AngryError, но ведь генерируем запсь не с бесконечно большой скоростью. Хотя может есть и другие параметры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 15:20 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
AngryError, авторСкорость записи на диск 100мб/сек, а база может писать только 20-30мб в сек? сгенерируйте таблицу на 1кк и бесконечно сливайте её в другую, будет другая нагрузка на диск ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 15:22 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
AngryError, А вы в несколько потоков попробуйте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 15:28 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
AngryErrorВопрос: что в моем примере гасит скорость записи? Операции переноса данных между логом и mdf?Ожидание завершения транзакции? Попробуйте обернуть ваш цикл снаружи командами begin tran commit tran ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 15:31 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
TaPaK, Верно. В случае переноса данных из другой таблицы, скорость вырастает до 50-70 мб/сек. Это связано с тем, что я данные "из воздуха" беру? alexeyvg, К сожалению, конкретно в моем примере - не дало прироста к производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 15:46 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
AngryErrorTaPaK, Верно. В случае переноса данных из другой таблицы, скорость вырастает до 50-70 мб/сек. Это связано с тем, что я данные "из воздуха" беру? alexeyvg, К сожалению, конкретно в моем примере - не дало прироста к производительности.\ нууу открыла сумочку, достала кошелочку, закрыла сумочку, открыла кошелочку, достала кошелек, закрыла кошелочку, открыла сумочку, положила туда кошелочку, закрыла сумочку, открыла кошелек, достала деньги, открыла сумочку, достала кошелочку, закрыла сумочку, открыла кошелочку, положила туда кошелек, закрыла кошелочку, открыла сумочку, положила туда кошелочку. и так миллион раз :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 15:48 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
AngryErrorат локально на диске C:\ сжатие для драйва с небоюсь по умолчанию включенно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 15:54 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
TaPaKну переменные таблицы не логируютсяОчень даже логируются. Ибо иначе никак. В результатах fn_dblog tempdb эти транзакции поименованы как TVQ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 15:57 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
TaPaK, Еще 1 небольшой пример. Усложним предыдущую ситуацию, разделив MDF и LDF на разные диски. В этом случае, как показывает perfmon.exe - нагрузка на запись поделится примерно пополам между этими дисками. С чем это может быть связано? мое ИМХО - что данные сначала попадают в лог, и потом чекпоинтом переносятся в MDF. или есть какие-то данные, которые попадают сразу в MDF ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 16:10 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
AngryErrorили есть какие-то данные, которые попадают сразу в MDF ? в случае minimally logged operations страницы данных пишутся на диск еще до коммита by eager writer, т.е. независимо от чекпойнта. и только когда все они записаны на диск, log records, в которых в общем-то и нет самих данных, только page allocations, относящиеся к этой minimally logged operation, будут сброшены на диск. разумеется, если еще что-то, что не есть минимально логируемое, коммитится в процессе этого минимально логируемого балка, то лог сбрасывается в связи с теми другими коммитами. TaPaKну переменные таблицы не логируются, вот в ldf и не пишем здрасьте приехали. разумеется, и они тоже логируются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 16:51 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
invm, Yasha123 виновать по всем пунктам :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 16:56 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
AngryErrorК сожалению, конкретно в моем примере - не дало прироста к производительности.Реально??? А код покАжите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 17:35 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
alexeyvgAngryErrorК сожалению, конкретно в моем примере - не дало прироста к производительности.Реально??? А код покАжите? вполне себе реально. у него же бесконечный цикл. вы хотели сэкономить на сбросе каждой строки инсерта в лог, ибо получаем тучу мини-транзакций в режиме автокоммита? а если все делать в одной транзакции, то типа записи лога не будут на диск сбрасываться? но ведь все равно будут, буфер лога всего 60Кб, заполнили-сбросили. да, сбрасывание будет происходить реже, зато теперь лог перестанет перезаписываться (у ТС простая модель) бесконечный цикл, да поди еще в тестовой базе с дефолтным размером/приращением лога -> теперь он будет еще и на занулении лога ждать, ибо лог будет распирать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 18:28 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
Yasha123вы хотели сэкономить на сбросе каждой строки инсерта в лог, ибо получаем тучу мини-транзакций в режиме автокоммита? а если все делать в одной транзакции, то типа записи лога не будут на диск сбрасываться?Вот у меня сейчас цикл на миллион выполнился в транзакции в 9 раз быстрее, и запись на диск была в 10 раз интенсивнее (в mdf, а в ldf в 2 раза) Это же классика - заменить мелкие транзакции (например в цикле) на одну большую. Как минимум будет меньше записи в лог, потому что для транзакции записывается служебная информация. Ну и теоретически есть ожидание завершения (физической) записи в лог перед возвратом управления после комита транзакции. Этому, правда, помогает кеширование, в том числе на контроллерах с батарейкой, но оно же в любом случае менее эффективное, чем внутри сиквела формировать запись в память, и линейно (и параллельно) её сбрасывать в лог-файл. примерный тест Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 20:44 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
AngryError, Скорость последовательного доступа к диску и IOPS понятия обратно зависимые. Больше операций - меньше скорость. Это характерно для любых дисков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 22:21 |
|
||
|
Скорость записи данных на диск
|
|||
|---|---|---|---|
|
#18+
nvvAngryError, Скорость последовательного доступа к диску и IOPS понятия обратно зависимые. Больше операций - меньше скорость. Это характерно для любых дисков.Так ТС вставляет в пустую таблицу без индексов, то есть скорее всего записывает последовательно некоторое количество секторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2018, 23:28 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39590327&tid=1690415]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
52ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 368ms |

| 0 / 0 |
