powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Скорость записи данных на диск
21 сообщений из 21, страница 1 из 1
Скорость записи данных на диск
    #39590135
AngryError
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте знатоки!
Возник следующий вопрос:
Есть некая БД. Системные базы, файл 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?
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590137
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryError,

ну переменные таблицы не логируются, вот в ldf и не пишем
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590144
AngryError
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,
Ок, но почему тогда скорость в этом случае не выросла?)
Я видимо чего-то не понимаю

Скорость записи на диск 100мб/сек, а база может писать только 20-30мб в сек?
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590146
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryError,

но ведь генерируем запсь не с бесконечно большой скоростью. Хотя может есть и другие параметры
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590149
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryError,
авторСкорость записи на диск 100мб/сек, а база может писать только 20-30мб в сек?
сгенерируйте таблицу на 1кк и бесконечно сливайте её в другую, будет другая нагрузка на диск
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590154
sdgth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AngryError,

А вы в несколько потоков попробуйте
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590160
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryErrorВопрос: что в моем примере гасит скорость записи? Операции переноса данных между логом и mdf?Ожидание завершения транзакции?
Попробуйте обернуть ваш цикл снаружи командами
begin tran
commit tran
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590171
AngryError
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,
Верно. В случае переноса данных из другой таблицы, скорость вырастает до 50-70 мб/сек.
Это связано с тем, что я данные "из воздуха" беру?

alexeyvg,
К сожалению, конкретно в моем примере - не дало прироста к производительности.
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590173
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryErrorTaPaK,
Верно. В случае переноса данных из другой таблицы, скорость вырастает до 50-70 мб/сек.
Это связано с тем, что я данные "из воздуха" беру?

alexeyvg,
К сожалению, конкретно в моем примере - не дало прироста к производительности.\
нууу
открыла сумочку, достала кошелочку, закрыла сумочку, открыла кошелочку, достала кошелек, закрыла кошелочку, открыла сумочку, положила туда кошелочку, закрыла сумочку, открыла кошелек, достала деньги, открыла сумочку, достала кошелочку, закрыла сумочку, открыла кошелочку, положила туда кошелек, закрыла кошелочку, открыла сумочку, положила туда кошелочку.

и так миллион раз :)
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590181
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryErrorат локально на диске C:\
сжатие для драйва с небоюсь по умолчанию включенно ?
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590182
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKну переменные таблицы не логируютсяОчень даже логируются. Ибо иначе никак.
В результатах fn_dblog tempdb эти транзакции поименованы как TVQ.
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590195
AngryError
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,

Еще 1 небольшой пример.
Усложним предыдущую ситуацию, разделив MDF и LDF на разные диски.
В этом случае, как показывает perfmon.exe - нагрузка на запись поделится примерно пополам между этими дисками.
С чем это может быть связано?
мое ИМХО - что данные сначала попадают в лог, и потом чекпоинтом переносятся в MDF.
или есть какие-то данные, которые попадают сразу в MDF ?
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590230
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryErrorили есть какие-то данные, которые попадают сразу в MDF ?
в случае minimally logged operations страницы данных пишутся на диск еще до коммита by eager writer,
т.е. независимо от чекпойнта.
и только когда все они записаны на диск,
log records, в которых в общем-то и нет самих данных, только page allocations,
относящиеся к этой minimally logged operation, будут сброшены на диск.

разумеется, если еще что-то, что не есть минимально логируемое,
коммитится в процессе этого минимально логируемого балка, то лог сбрасывается в связи с теми другими коммитами.
TaPaKну переменные таблицы не логируются, вот в ldf и не пишем
здрасьте приехали.
разумеется, и они тоже логируются
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590237
sdgth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590238
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm, Yasha123

виновать по всем пунктам :)
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590291
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryErrorК сожалению, конкретно в моем примере - не дало прироста к производительности.Реально??? А код покАжите?
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590327
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgAngryErrorК сожалению, конкретно в моем примере - не дало прироста к производительности.Реально??? А код покАжите?
вполне себе реально.
у него же бесконечный цикл.

вы хотели сэкономить на сбросе каждой строки инсерта в лог,
ибо получаем тучу мини-транзакций в режиме автокоммита?
а если все делать в одной транзакции, то типа записи лога не будут на диск сбрасываться?
но ведь все равно будут, буфер лога всего 60Кб, заполнили-сбросили.
да, сбрасывание будет происходить реже, зато теперь лог перестанет перезаписываться
(у ТС простая модель)
бесконечный цикл, да поди еще в тестовой базе с дефолтным размером/приращением лога
-> теперь он будет еще и на занулении лога ждать, ибо лог будет распирать
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590419
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
create table test_perf
(
	id int identity primary key clustered,
	name	char(10)
)

set nocount on
go
truncate table test_perf
go
select getdate()
declare @i int = 0
while @i < 1000000
begin
	insert test_perf(name)
	values('asdfghjkl;')
	set @i = @i + 1
end
select getdate()
go
truncate table test_perf
go
select getdate()
begin transaction
declare @i int = 0
while @i < 1000000
begin
	insert test_perf(name)
	values('asdfghjkl;')
	set @i = @i + 1
end
commit transaction
select getdate()

2018-01-24 20:27:23.720
2018-01-24 20:32:45.737
5:22

2018-01-24 20:34:10.360
2018-01-24 20:34:51.717
0:41

...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590456
nvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
nvv
Гость
AngryError,
Скорость последовательного доступа к диску и IOPS понятия обратно зависимые. Больше операций - меньше скорость. Это характерно для любых дисков.
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39590490
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nvvAngryError,
Скорость последовательного доступа к диску и IOPS понятия обратно зависимые. Больше операций - меньше скорость. Это характерно для любых дисков.Так ТС вставляет в пустую таблицу без индексов, то есть скорее всего записывает последовательно некоторое количество секторов.
...
Рейтинг: 0 / 0
Скорость записи данных на диск
    #39591888
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AngryError,

виртуалка, что ли?
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Скорость записи данных на диск
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]